So, as previously hinted at, I have been working on implementing “always on” interpolation (toggleable in the options menu) – which I have already managed for “this” device – and I have nearly got it sorted for all external devices too.
I’ve just been trying to make the Interface as efficient as possible, not overdoing the number of methods etc. required, but I think I’m just going to bite the bullet and make getters/setters for all the essential variables.
This will be the last “big job” I do before Gee-Oh! Mobile is ready for release. I think I will have a few business decisions to make before then (ie. dividing the business up into smaller companies – one per product – to remove confusion for potential investors etc.), but as far as technical decisions and implementations go, I’m just about done.
I also did some improvements to the map tile pre-loading application (and also to the memory management, how it’s deployed etc.) and I’m now estimating just a further 10 days before the main map tile server pre-load is complete.
Edging ever closer to getting this shit done!
This was actually complete over a week ago, I’ve just not got round to writing about it until now. Soz.
I switched my hosting from a VPS to a Cloud Server, still with 1&1, to get the benefit of (practically) unlimited inodes – as described in my last blog entry – which required setting up everything from scratch (including installing Java!) on the new platform and then copying across anything relevant from the VPS.
The biggest difficulty I came across was in sending notification emails. The main issue from my end was that another incorrectly setup service was already running on port 25 (so I found that and killed it), but the real show-stopper was with 1&1 – who were blocking all outgoing traffic to port 25. I had to get support to remedy that for me.
Aside from that, all seems good. I will have to get onto 1&1 soon and ask them to kill off the VPS (and its associated bill, of course).
I was able to resume pre-loading of GeeOhTileServer grid squares pretty quickly, and that now continues apace. Still on course for mid-June – ’tis a slow process.
Had a bit of a nightmare over the last week or so. I’d been running the map tile pre-loading program for a while when all of a sudden it just stopped working. I had to rewrite parts of one of my Java libraries in order to catch the error in more detail, and it was coming back as “disk full”.
When I checked on my server’s control panel, it was showing that I had reached my 500,000 inode limit. Yeah, I didn’t know what an inode was either. Turns out it just means file, and that my VPS was limited to half a million files – that’s no good when I need at least 597871 map images (or “empty” files to indicate “all water” or “all land”), plus two meta files for each.
It took me a while to get some sense out of my hosting provider, but eventually I was informed that I need to migrate to a Cloud Server (which, I was assured, have absolutely shitloads of inodes).
I double-checked that I could upgrade to a better Cloud Server package when I needed to scale, without having to re-install everything, and was given some reassurance that they just have to provision more resources. Sound.
So, this week I will be provisioning a shiny new Cloud Server and attempting to just scp everything across from my existing VPS.
Should. Go. Smoothly.
It turns out that my initial estimates regarding the required storage for Gee-Oh! map tiles were a little out…
I somehow came up with the figure 66Gb for 597871 squares (representing a full 4->10 run) but, having just completed a 4->9 run, things are actually looking a lot sweeter.
For the 66430 tiles already produced, it only required 2.2Gb of storage, and this scales up to only ~20Gb for the lot. Won’t hardly touch the sides of my available storage!
This means I can back up the entire UK quite handily when this is done (as well as quickly copy across to new server(s) etc. for scalability), and also be confident of expanding to other geographical areas (Europe and the US).
Anyway, that’ll do for now. I’ve just started the final run (to be completed in roughly 45 days…) Buh-byyyeee!
I have finished GeeOhTileProcessor and have got it running in live right now, pre-populating the UK map tiles.
What you can see above is the “heat map” which is part of the GeeOhTileServer monitoring suite, displaying the current progress of level 8 tiles. Strange that the water tiles are not being represented in blue, but that is an issue for another day…
The run currently in progress is from level 4 down to 8, and I will be increasing this to 9 and 10 in the next week or so. Full UK coverage coming soon!
That is all!
EDIT: Problem solved – GeeOhTileServer was just not recording (for processtile API) on heatmap if blank file already exists, and if it didn’t already exist it was just recording it as a land tile. Looks a bit better now…
I’ve just replaced GOTSLoadBalancer (a SpringBoot application) with LoadBalancerApplication, which I wrote in Node/Express and I’m very confident that I made the right decision.
Deployed live some moments ago.
I fully expect Node’s natural qualities to shine through as a load balancing application, especially since I’ve recently tried hammering Node with JMeter and it’s held up perfectly.
It will certainly handle more load than the services it is load balancing for, so that’s fair enough.
Anyway, it’s 1.32am, I’m knackered and I’ve got to go. Happy Easter.
I’ve been thinking about the quantity of storage required to support GeeOhTileServer – I suspect it will be creaking under pressure from day one in its current state – and I’m now exploring the idea of limiting MakingTracksGPS/GeeOh requests to a max. level 10, as opposed to 11.
This will reduce the number of required GridSquares by a factor of nine – in real terms, a reduction in total from 5380840 to 597871 for the fully recursive processing of a single square at zoom level 4.
In order to maintain some level of image clarity, ie. avoid excessive blockiness, I will investigate increasing image resolution from 800 x 800 to 1000 x 1000, keeping a careful eye on optimising storage so I don’t completely wipe out any gains I’ve made by cutting out level 11 completely.
It’s likely that I will have to reduce the maximum scale factor allowed by MakingTracksGPS, so the user can’t just zoom in to absolute block-world, but I should be able to get that balance right quite quickly.
Whilst I’m working on the server, I might as well revisit the colour scheme too. I shall take a look at toning down the default green background colour to something more grey, possibly, and look at changing the colour of the railways back to the original orange/yellow. I might even look at what the accepted standards suggest!
And I’m done.