Minor Bitching

Sun Dec 11, 2016

Originally, this was part of a larger article, but didn't really fit. I'll leave it here for completeness, but it won't have much tech content. It's just steam; pay it no more mind than you really want to.

For a massive change, I've been doing some light mobile development. And what I've learned is that it's absolute garbage.

Why Mobile Development Is Absolute Garbage

For starters, the toolchain is a pile of ass. In order to install and get running a full environment, you need to get the SDK, the "IDE", the appropriate emulator image, and a giant pile of external dependencies, some of which are pinned at odd intermediate versions. As a side note, not all of the emulator images are available for every architecture/CPU, and there's no word of warning about this until after you've downloaded the relevant multi-gigabyte files. Thank god for good wi-fi, I guess. The hands down most useful installation guide I've come across so far is this massive wall of text on SO, which explains how the installation runs step-by-step, without relying on the poorly-thought-out automated downloaders.

Once you have all of that stuff down, starting and understanding a project is another Herculean task. It's possible that today's Java developers are just so resigned to boilerplate and slog that this doesn't bother them too much, but I've yet to meet one of these people in real life, so I'm not inclined to believe they really exist. The short, or at least somewhat understandable non-video, version is in that same massive wall of text on SO. That explains how to get a project more-or-less working, but doesn't explain what massive mis-firing of brain-power caused this process to be so byzantine and horrific that it requires this much exposition.

What we ended up doing for the project I'm on is using React Native. Because, while all of the above is still a requirement, once you have it done, you can at least skip the steps that involve manually mucking with several XML-formatted build manifest files and instead write some fucking JavaScript. The build process is still stress-inducing, but can best be described as a dull background ache once you get past your environment installation.

Honestly, if it weren't for the fact that people other than me need to work on this in the very short term, I very probably would have built the fucker in Clojure and called it a day. Not only is the tool chain more easily installed on a debian machine, it mostly works the way you'd expect from other Clojure development, and compiling down to a device is a matter of lein droid doall. It's something I plan to explore for myself even outside the context of this particular contract, but I still find it vaguely unsatisfying that this is even necessary. I'm sure this is how Lispers felt around the 80s and 90s with the rise of personal computers. "Your build-chain involves how many external tools? You have to allocate memory yourself? And you can't even introspect on your running image? How do you get anything done?" Those are all more or less the objections I'm making here at the next step. I'm not convinced they're wrong.

By the way, on the topic of development environments,

I Fucking Hate This Computer

The track pad is the single most annoying thing I've had to deal with in recent memory. It seems to delight in teleporting my cursor to insane places while I'm typing away. I haven't gotten around to replacing those stripped screws either, which means that the chassis doesn't hold together quite as well as it should, which in turn means that it's more difficult to use in transit1. This in addition to its uncomfortably large size, extremely scuff-attracting metal finish and the surprisingly shoddy rubber feet on its underside23.

In summary, I can not recommend this thing with a straight face, and am seriously considering picking up one of these or these fairly soon, along with an Atheros wifi card so I don't have to go grubbing around in the Debian non-free repos. The only thing I'll really miss the horse-power for is my Clojure development. Which is admittedly a large chunk of it these days, but I think I'll be able to deal somehow.

  1. Because it keeps shifting around internally, and occasionally unseating the already annoying trackpad so as to prevent its tactile feedback.
  2. Three of which have actually fallen off at this point, and I'm considering just cutting the last one off and calling it a day.
  3. And actually never mind, over the course of writing and editing this post, the last one fell off. I've gorilla-glued the two that I still to give the unit some semblance of traction while I work at a desk, but it's still supremely annoying that I had to.

Creative Commons License

all articles at langnostic are licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License

Reprint, rehost and distribute freely (even for profit), but attribute the work and allow your readers the same freedoms. Here's a license widget you can use.

The menu background image is Jewel Wash, taken from Dan Zen's flickr stream and released under a CC-BY license