Buffer Required


I’m looking to improve GrappleApp’s image sequence rendering by essentially pre-loading the images into memory and then rendering them quickly in sequence.

I’ve been spoilt by the Samsung Galaxy S3’s lighting fast load time from the file system. No other device has come close in terms of load-render-load-render-… performance (I remember being distinctly disappointed by GrappleApp’s showing on my HTC One).

Anyway, I’m undecided on the exact mechanism, and whether or not we begin to render the sequence before loading is actually complete, but I know it’s certainly possible and I’ve got confidence that I’ll come up with a neat solution.

Right now I’m just working on the pre-loading method.

*short break*

I’ve sorted the pre-loading method, and got most of the code sorted for playback now. It’s gone quite well (he says, jinxing himself), and I hope see much better performance from the Galaxy Tab later.

I’m just about to start work on an unobtrusive loading graphic to be shown when pre-loading opponents’ move sequences (which take a lot longer because of the need to invert the red/blue in the image).





Image Server Plugged In


Yesterday I got GrappleApp integrated with GrappleAppImageServer, which has been up and running live for the past few days, so that all image sequences are now available to users of the app (without the initial hefty 200Mb+ download).

Quite pleased with the way it’s going so far. I also implemented proper re-download of any incomplete sequences in the app.

My next few GrappleApp-related tasks are:

  • Stress test and identify any bugs
    • Including display issues as a result of diff dimension screens
  • Write new “barriers to release” list
  • Improve sequence rendering performance on tablet
    • Identify exactly how frame rate delay is applied
  • Move all sound files and sound sequence files into app
  • Remove all replay/red button functionality
    • Just comment out, will reinstate in v2.0
  • Replace Google maps requests with GeeOhTileServer requests
  • When skipping roll/match, need to not even attempt to render/download if sequence is missing

I think that covers it for now. Will keep you updated.



Docker On Hold


So it seems my efforts to Dockerize/Containerize my applications were a little bit hasty, since it turns out I cannot run Docker on my remote VPS (which is apparently run in a Container itself, so…), but I’ve managed to get round the problem – for now – by just managing the Java memory distributed to each application a bit better.

> export _JAVA_OPTIONS=-Xmx256M

> java -jar {application}.jar -Dserver.port={port} &

This is currently allowing me to run 4 concurrent applications, and I’ll be looking to squeeze in one or two more shortly.

I’ll probably end up upgrading my VPS to cope with this soon – or, more likely, upgrade to a Cloud Server so I can run Docker.

Anyway, that’s it for now, I’ve got some stuff to do with GrappleAppImageServer today/tonight, and at least it’s now able to run alongside GeeOhTileServer.



Docker Installation


I’m installing Docker on my home Ubuntu server in preparation for doing the same on my VPS, so I can put more apps into production on the same server and make the most of any available resources – without having to upgrade my hosting package.

Firstly, I need to check the current kernel version, to make sure my machine is compatible with Docker.

> uname -r



That’s fine. Just had to be greater than 3.10.

Now, let’s update package info, get keys etc.

> sudo apt-get update

> sudo apt-get install apt-transport-https ca-certificates

> sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80recvkeys 58118E89F3A912897C070ADBF76221572C52609D

Next, I need to edit the docker.list file, removing any existing entries and adding a correct entry for my version of Ubuntu, 14.04 (LTS).

> nano /etc/apt/sources.list.d/docker.list

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Update the package info again, purge, and verify that APT is pulling from the correct repo.

> sudo apt-get update

> sudo apt-get purge lxc-docker

> apt-cache policy docker-engine

We need to do some further installing before we can actually get Docker.

> sudo apt-get update

> sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

And now we can finally install Docker…

> sudo apt-get update

> sudo apt-get install docker-engine

There. Done. To start the Docker daemon, it’s just:

> service docker start

And to make sure Docker is working correctly, attempt to run the “Hello World”, erm, container?

> docker run hello-world

Hello from Docker.

This message shows that your installation appears to be working correctly.

… etc.

Great success! That will do for now. I’ll do another blog when I attempt to put one of my apps into a container. Should be fun.



Back On The Grappling



Having parked MakingTracksGPS for now, I’m back working on GrappleApp – mainly writing the image server and load balancer for providing the image sequences to the Android app.

I’ll be doing my best to stick to this particular task, and hopefully see GrappleApp finally pushed out the door – only 4 years late eh?

I’ve already basically written the server and load balancer, and uploaded all 36,000+ images to the VPS – but then ran out of memory when trying to run that alongside my other Spring Boot apps.

So now I’m looking at using Docker…



Problem Solved


I’ve finished work on the “smoothness” issue, and demonstrated the results in the video above.

Having done this, and tidied up a few loose ends, I’m taking a little break from MakingTracksGPS development to return to GrappleApp and make some real progress with that.

I am hoping to be in a position to release both of these apps by the end of the year.