Monthly Archives: March 2019

Things I Wish

I wish that Google provided an offline/dev version of Firebase so that I could work on my mobile app when I’m not actually online. Sort of like they offer a dev version of Datastore for App Engine development.

I wish that Google made their Flutter documentation available as a downloadable package so that I could refer to it while I’m not actually online.

I wish that I could test the capability of Flutter+Firebase to deal gracefully with network unavailability.

I wish that software development didn’t suck.

In 1984, I was able to write a FORTRAN IV program to do a bunch of math and then output bitmapped Mandelbrot graphs to a dot matrix printer because the language was stable, the hardware was stable, and the manuals were printed out and stuck in binders on the shelf over the computer desk. Today, I can write programs anywhere but the languages aren’t stable and the hardware isn’t stable and the manuals are online. If I write code in a stable language for stable hardware, nobody I know will be able to run it.

Progress.

Mobile Enterprise

So, I’m writing another mobile app. This one is a chore list for our household. And, since our household is not technologically homogenous, I’m writing it in Flutter so I can deploy it to All The Devices. Flutter’s idiom is lambda-heavy, and most of the tutorials and examples wind up embedding application logic in the UI, which I find hard to follow at times and which, as a practice, makes me itch and feel like I need a shower.

A helpful soul on StackOverflow pointed me at an example project that demonstrates how to build a functioning task list app using a variety of different frameworks. I decided to go with flutter_redux, which is pretty cool once I managed to understand how it works. You just treat your application as a giant state machine, you store all the state in a single state class, and everything that happens is an event/action that gets sent through a set of functions that you write and attach to the framework. All of which is ridiculously complicated, yet elegant at the same time. I wind up writing reams of code just to get the first screen to display. The marginal cost for additional screens, though, is tiny, and logic is nicely decoupled from presentation. It seems very FizzBuzzEnterprise, though, honestly.