Cruise Monkey Want Mobile
It's almost time for the 4th annual JoCo Cruise Crazy cruise, and once again, I've foolishly decided to spend WAY too much of my free time on putting out an app to be used on the ship.
What's Different This Year?
Almost everything. I started out refactoring last year's CruiseMonkey codebase, but it was a bit creaky. It's definitely interesting to see how far HTML5 "native" app development and PhoneGap/Cordova development have come in just a year.
After playing a little bit with AngularJS for a work project I was really impressed and wanted to refactor to Angular for this year's CruiseMonkey. In the process of doing so, I ran into Ionic, an HTML5 framework built specifically for making mobile UIs, and reworked the frontend using that.
While there was a direct line from there to here, in the end the codebase looks nothing like CruiseMonkey 3.
Reimagining the Backend
One of the biggest problems with last year's CruiseMonkey was the spotty wireless on the ship. Since CruiseMonkey 3 was built as a client/server app, it basically became a read-only app at the drop of a hat, whenever the network went wonky. It could cache some data when the network died, but it really didn't handle changing data in any way. After doing some research into options, I came across CouchDB, a javascript-friendly NoSQL database, and its cousin, PouchDB. PouchDB is an implementation of CouchDB that runs in the browser, and is replication-compatible with it.
That means that I can just treat PouchDB as a local database as if my app was a standalone mobile app, and all I need to synchronize events with other CruiseMonkey users is to replicate back to the database whenever the network is working. The proof will be in whether it works once we're on the ship (natch) but hopefully it will be stable.
Twit-Arr Integration
Of course, I had a grand vision of writing a complete twit-arr client this year as a part of CruiseMonkey, but time got the best of me. Kvort the Duck already undertook writing an entirely new twit-arr server and web client and it's turned out awesome in just a short time. Hopefully this means next year we have a good base to build on and integrate more closely. This year I was able to at least integrate giving you a notice if you have new Seamail (private messages on the Twit-Arr server), as well as a fun browser for viewing all of the pictures people post to twit-arr. Next year I want to be able to read and post messages, pictures, and Seamail right from the app.
One Last Look
Anyways, I've submitted version 4.0.0 of CruiseMonkey to the iTunes App Store. Hopefully things go smoothly. Currently looks like the average review time is about 6 days at the moment, which hopefully gives a chance for one more update before the cruise for any bugs people might find. I'll keep doing beta testing all the way up to the cruise, most likely, but I'm looking forward to a couple weeks of not coding for 4 hours every evening after coming home from my day job coding. 😀