Week 11, 2024 - Mobile development and AI in the terminal

Week 11, 2024 - Mobile development and AI in the terminal
Panelists at the 2024 March Craft Conf mobile development meetup

This newsletter is going out a bit early, today we celebrate the 1848 Revolution in Hungary, and I’m planning to spend the day with family. I managed to attend the Craft Conf mobile development meetup this week. It appears that the industry is moving in two opposing directions simultaneously: cross-platform development is getting more and more robust (see what you can do now with KMP for example), and at the same time, entering native development is easier than ever with the latest versions of XCode and Android Studio.

The way I see it, for most use cases, startups should consider the following setup, especially if they are just entering mobile but already have a mature product on another platform: Create a separated platform-specific native UI layer taking advantage of the latest OS features, higher performance, and the default look and feel of the platform. Under that, maintain a layer containing your business logic that is code-shared across all platforms — including web and desktop. Use feature flags to ensure coordinated releases on both layers across all platforms.

In typical use cases, I don't think you should go full native, unless you need rapid prototyping or have performance issues. Similarly, going fully into cross-platform can make life hard when specific UI / UX problems show up around performance or consistency with the host OS. I took the existing team's skills out of the equation on purpose: I believe healthy, high-performing teams should have no problems learning new technologies, and the time impact pays back quickly if the platform decision is worth it.

Two interesting notes I took:

  • Apparently, you can circumvent app store approvals and implement true CI/CD on mobile with Zipline. In short, this enables you to download and execute code straight from your app. I’m excited about what this could mean for developer teams receiving near-instant feedback on their works - on the other hand, I’m skeptical if this will forever be OK with Google. Remember, they banned remote code execution in Manifest V3, which is a very similar technology. Can you imagine Android apps being allowed something that Chrome extensions are forbidden to do?
  • Progressive Web Apps were only mentioned after an audience question. A quick show of hands made it clear that almost nobody was using this technology. As someone with a web development background, it pains me to see how little traction PWAs managed to get in the last decade or so. They seem to be safe now from Apple’s revenge against the EU, but maybe the thing that’s going to kill them is ignorance. Too bad — I can’t imagine a better platform to prototype and quickly iterate on new ideas.

📋 What I learned this week

I finished my slightly clickbaity titled 16 Reasons Not To Go Into Engineering Management article. I went a bit outside of my comfort zone with the list, usually, I’m more balanced in my opinion. Some of the items there might have valid counter-arguments, and I could imagine some people would challenge their inclusion. Still, I think this list can be a useful starting point for some great discussions between an ambitious developer and their manager — or even better, serve as a guide for self-reflection around one's true motivations.

I couldn’t do all I wanted on LinkedIn — I got my bio and experiences in a much better shape but didn’t progress on setting up a regular process and boundaries for the interactions I have there. As a result, the distraction remained during the week, especially after I posted my article there.

🎯 What I want to try next week

The HDD in my 2011 Mac Mini died. I only used it as a home media center, so no big loss, but looking at SSD replacements, I found myself in a rabbit hole of homelabbing. I emerged safe and sound but determined that the replacement SSD will not run MacOS but some form of Linux, with various containers for different services. The challenge will be to limit the time I allow myself to play with these, but I'm excited about the new stuff I'll learn.

I also want to continue with the Individual Contributor to Engineering Manager theme, focusing more on the positive traits and preferences, and also making some progress on the LinkedIn front. Finally, I want to understand better where my subscribers are coming from, so I’ll look into UTM handling in Umami, or maybe try an alternate analytics solution.

💻 Something cool: A new way to use computers

I played a bit with Open Interpreter, namely the terminal-integration features, and it seriously blew my mind. The concept is simple: you get an interactive prompt much like with ChatGPT, but right in your terminal, and the AI answers can be executed immediately. (There are safety defaults in place, so you're not just handing over control entirely.) It’s like having an extremely helpful engineer sitting next to me. This is already great when I know what I want to do, but forgot the exact syntax for it, but the potential is much bigger. Check the results of a slightly more complex prompt:

create a bootable usb pendrive with a proxmox installer on it

0:00
/2:18

(I cut out the boring parts of the download, AI can’t speed up networks yet.)

A few things to note in the video (watch it first if you don’t want to spoil some surprises):

  • I guess gpt-4 was trained on data between July and November 2021, when Proxmox 7.0-1 was the latest version.
  • It recognized that there was something wrong with the initial download (indeed, it was a 404 page), just by looking at its size, and course-corrected right away. This and the solution of just googling the latest link was the most human part of the whole process, something that’s trivial for a person to do, but this flexibility and creativity, however low the bar is at, was unimaginable from any software before.
  • The discussion felt very natural and conversational (see “what happened here”), and I got great explanations of what was going on, never feeling too worried about permitting the execution of the commands. This is as much learning as doing!
  • There are further safety measures for dangerous commands like dd, it would be interesting to see where exactly they drew the line (in other examples, it didn’t have any concerns deleting files for example).
  • A small thing, but the --insecure parameter was not necessary at the second download (if you want to be pedant, it was indeed insecure this way and might be a theoretical attack vector). This reminds me of a less experienced developer, copy-pasting from previous examples for parts that worked and only focusing on fixing the ones that didn’t.

All that you see in the video cost me around $1 in OpenAI API usage. I would argue it’s better value than any other learning or mentorship alternative for the same price or time invested.

I used Terminalizer to record my terminal (fun: I managed to discover and propose an improvement for an edge case issue), the free version of veed.io was sufficient to convert from GIF to MP4 and cut out the boring download part. Hat tip for Jeremy showing me Open Interpreter.

Have a mind-blowing weekend,

Péter

Subscribe to my newsletter

I write about engineering leadership topics.
Sign up to receive new articles.
jamie@example.com
Subscribe