Hello, yes, I’m not dead. I know I’ve not updated here for a while but I’ve been very busy and a lot of dev work has taken place in the meantime.
I have built and deployed a very functional eco-system of integrated services, held together via SSOA (Single Sign-On Application), including GOLS (Gee-Oh! Location Service – or Server, I can’t remember) and PBA (Published Broadcast Application), and all of this has been integrated with a front-end web application – whose URL I cannot reveal until after it goes live “proper” – which can be seen below.
As you can see, I have integrated with MapBox (https://www.mapbox.com/), and I’m pretty impressed with their product so far. Will need to get stuck into costs/billing etc. as Gee-Oh! scales up, but as of now I’ve had zero problems. I suppose I should keep one eye on the ease of swapping base map integrations, if anything were to go wrong.
My next focus is some SSOA refactoring; implementing additional features to cope with the evolution of the other services. Following on from that I will be adding more UI elements to the admin pages to get better control of GOLS and PBA, and I will also be adding a “self serve” admin dialog to the web application.
Further work includes some refactoring of GOLS to include timestamps in location data, implementing some extra info items and a pretty crucial refactor of the core broadcasting architecture (removing ‘sendKey’).
And then it’s back onto the web application UI to get the whole thing looking and behaving as smooth as possible. I hope to be in a position to demonstrate something impressive to potential clients/investors soon.
Expect more regular updates for the foreseeable future.
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.