ant's blog
posts music texts

Development Environment #1

Hello. Lately I’ve been trying to shape myself into a craftsman who works in a few different mediums at least a few times per week. I find that writing about my desires for technical growth keeps my honest about progression. Purposeful declaration of intent is the first step to reaching beyond yourself, right? I’ll explain how I work, how I wish I worked, and share the single nugget of wisdom I mined this week.

Android Development:

  • Macbook Pro 2012 15” i7 16GB RAM + SSD
  • Dual monitors (1 1440p wide & 1 1080 vertical) on free swinging arm mounts
  • Android Studio (Stable Channel)
  • Google Pixel 3XL & Samsung Galaxy S8+
  • ikea auto-standing desk

Since full-fleged application development demands frequent context-switching and multiple concurrent views for code, configuration, layout, build, debug, etc, I’m constrained to a “real computer”. I use MacOS, despite the fact that many of its features are vestiges of a dying metaphor for computational productivity - I’ve had this machine for 7 years and it is sort of like an old truck in terms of reliability and power; it’ll be there to help you move even if it lacks the torque of newer models. I try to only use this thing in “clamshell” mode, docked to my very adhoc workstation monitors. I’ve been thinking of converting to the linux-on-a-mac religion and installing debian.

Systems Engineering / DevOps Exploration:

  • Raspberry Pi 3B+ NAS w/ old laptop HDDs & 3D printed rack
  • Raspberry Pi Zero
  • iPad Pro w/ smart keyboard & Termius

Like any lazy learner, I owned a raspberry pi for far too long before I did anything even remotely productive with it. Eventually I decided that since I aspire to be a better caretaker of code, I could start by learning how to take care of the machines through which we interface. While I’ve installed PiHole on one to black-hole advertisements in my apartment, I use the other as a playground for lite web design + development, python for little API widgets (YouTube, Twitter), and a NextCloud server connected to my old laptop harddrives so I can replace cloud backup services. Overall, I’ve learned so much more than the ~$40 I spent on these things - so cool because I’m not afraid to break them.

Forgive me Stallman, for I have sinned in the form of an iPad - I had been yearning for a lighter machine that could be powerful enough to do code and writing tasks but simple enough to let me lead the experience and not be drawn in by the dreaded “tweaks” syndrome which affects me on big machines. I hate windows. It is bad, it is a bad operating system by performance and ergonomics standpoints, looks like robots designed it, and now habitually pesters you about Bing in the same place where you receive critical email and chat notifications. At this point I’d expect they’re at least trying to find some way to put ads in the firmware. I couldn’t find a Linux tablet or cheap laptop that seemed both reliable and carefully thought out from a user experience perspective, and the recent spinoff of iOS into iPadOS piqued my interest.

So, I bought it. I took it home, had a lot of fun with it right away as the screen is saucy and GarageBand is pre-installed. Then I started to get to work, jailbreaking it and testing the viability of Cydia apps on the iPad in 2019. Spoiler: It’s not. It’s not even called Cydia anymore. I miss you, Saurik. You are the Obi Wan Kenobi to Geohot’s Anakin Skywalker. I remembered that someone on reddit touted a mere App Store app as possibly the best terminal experience on iOS, and went to Google it - no, DuckDuckGo it - duck it? Well, it turns out, Termius is amazing and does exactly what I need it to do. Save SSH profiles and give me a terminal with a useful touch interface. Now I can find a song on shuffle at work, remote in to my persistent backup, and youtube-dl it into my personal library. Streaming is great for discovery, but I don’t think I should make it my primary listening experience. Anyway, yeah, it’s great. Now if only we could get Android Studio on this thing…

Linux (Low Level Learning):

  • $5 Digital Ocean Droplet (Debian) hosting a webserver
  • Friend’s secondhand server equipment (Debian)
  • Purism Librem 5 (an upcoming mobile phone based on Debian and endorsed by the Free Software Foundation)

I use the digitalocean box to host websites, mostly. Angular is cool, I built a small website and then replaced it with a Ghost blog - but will soon reattach the Angular homepage. I got the chance to poke at some retired server equipment with a friend which quickly led to us hosting a Minecraft server - it always leads to this - on which I spent too much time on and then not enough time on - this also always happens.

I am a very late student of the Free Software movement - I only stumbled in because I believe in sharing. I now understand how the free software ideology was co-opted by corporations into the term “open source” and purged of all radical socialism. I find his thoughts on power (political not electrical) quite compelling. I summarize my readings of Stallman technopolitics as thus: As someone with some power, I should help others get their fair share of power, because I stand on the shoulders of giants. His views on software development are commendable. Ironically, he seems to believe in freedom in quite a strict sense and is often combative in the interview clips I could find. By tapping into the free software webiverse, I came across the social purpose company Purism which has been working to produce a pure Linux phone with hardware killswitches and voted with my dollars against the surveillance capitalism duopoly. I really hope this thing ships.

That’s it. That’s what I do. I wish I was a 10x developer and was pro at every task and tool listed above - I wish I could stop having to hit the arrow keys vim - like forever.

Here’s my nugget of the week:

If communication structure determines system design, there is a third phase in which those systems influence the users upon whom its design is impressed. So, naturally, obviously, if we build a system by authoritatively controlling the flow of information among involved parties rather than freely allowing each member to read, understand, and extend the system as a whole, we will encourage our users to think it is okay to trust authoritarian figures.