Project time without focus time

tl;dr: I’ve been making terrible Android apps in Kotlin, and it’s been a joy. 

Hello from isolation. Let me start by saying that I’m extraordinarily lucky: my family’s healthy, I can work from home, and we’re (somewhat? kind of?) getting a handle on home schooling. I mean, it still completely, absolutely, unequivocally sucks. My heart goes out to people who are trying to make life work in much more difficult circumstances. This thing is horrifying. I hope it gets easier. 

This LinearLayout fragment contains an alpaca. There’s also a ConstraintLayout cat and a FrameLayout emu which becomes a Framelayout alligator if you turn to landscape mode because emus are pretty tall.

This LinearLayout fragment contains an alpaca. There’s also a ConstraintLayout cat and a FrameLayout emu which becomes a Framelayout alligator if you turn to landscape mode because emus are pretty tall.

In ordinary times I do a lot of personal projects (writing, toy code, conference talks) in the evenings and weekends. I find that I just can't do that now. It's hard to focus when the world is scary and new news keeps coming in. Words and code both need some kind of flow state, spare brain capacity, and a room that is guaranteed to stay quiet, none of which I have right now. I've found myself avoiding existing projects and drifting into other activities, things where I'm a complete beginner and everything is new and low stakes. I've been noodling with Kotlin for a while, for example and, since it's Google’s preferred language for Android development, I installed Android Studio to try it out. And that's been a great experience so far. 

I can’t believe how smart Android Studio is. It’s so smart. The layout editor is intuitive and clever and the IDE generally knows what I want to type before I do. The error messages have pointed directly to most of the (many) things I’ve done wrong, using words I understand -- or at least words that are well covered by Stack Overflow. Despite a gazillion options, I've found the UI fairly straightforward to navigate. (Caveat: I’ve used Intellij a bit -- Android Studio is based on Intellij -- so I have a head start on keyboard shortcuts, etc.). The default app templates are beautiful reference implementations of how to start on applications of various shapes. You want a navigation drawer? Start with a navigation drawer activity, and it’ll set you up for success. Amazing.

I mean, obviously I’ve just done very basic stuff with it so far. I’m sure it has plenty of frustrations and gotchas once you're trying to do real world things. For now though, I’ve really enjoyed it. I spend so much of my life being mad at software. It's a delight to use something that seems to have been built for humans.

“Show me another puppy!” This important app has seven hardcoded puppies. I bet a cute puppy API exists somewhere on the internet.

“Show me another puppy!” This important app has seven hardcoded puppies. I bet a cute puppy API exists somewhere on the internet.

I've been working through the Android Kotlin Fundamentals Course, which is a fantastic introduction to creating apps. It teaches skills one at a time with immediately usable exercises. Some apps build up as you go along, which is neat, and each section starts with a link to the code for the previous section, so an early bug or misunderstanding doesn't haunt you for long. The various sections are general enough that I'm still using them as reference documentation as I work on my own stupid apps. The exercises are exactly the right size to fit into a tiny amount of focus time before the next interruption. It's beautiful technical writing.

There's one more thing that's making Android development a perfect pandemic hobby: it's kid-compatible. Ms 7 and I have been setting up regular blocks of project time where we work on our own stuff for an hour and then share what we've done. (It's so wholesome. It's the best thing ever.) She loves when I work on Android apps.

It turns out if you want to truly impress a seven year old, you should give them an app where they push a button and get a random picture of a puppy. (Actual quote: "this. is. incredible".) 

Game by Ms 7. One of these floating action buttons links to another fragment. All of the rest of them do nothing. You have to find the one that does something. AMAZING.

Game by Ms 7. One of these floating action buttons links to another fragment. All of the rest of them do nothing. You have to find the one that does something. AMAZING.

Ms 7 invariably suggests changes, so I've taken to handing her the laptop and letting her edit the layouts and attributes, then walking her through modifying existing code. She's not quite up to writing her own Kotlin yet, but seven year olds are terrifying information sponges so who knows when that will happen. She's started her own app now, dropping phrases like "can you help me add a click listener to this floating action button so that if you click on it it will make a bubble float across the screen?" and I've been insisting on user stories and figma wireframes. Ok, no, but I send her off to draw pictures of what she means. (I do not yet know how to make a bubble float across the screen. I'll work on it.) 

I'm debating pros and cons of putting Android Studio on her school Chromebook. Probably a horrible idea? Also I’m hyper-aware that my kid is becoming one of the people I resented in college because they had a ten year head start on coding while I was still like "if statements, interesting, got it". Sorry, past me.

Anyway, being a complete beginner at a new thing is always amazing. Everything is fascinating. You learn constantly. You get frequent rewards, even if it's just that you made "hello world" print to the screen.  Following tutorials means you can make progress in lots of little steps without blocks of sustained focus time or even a well-slept brain. And, since you don't know anything, there's no internal pressure to make something good: it's a wild success if you make anything at all.

At some point, I hope I'll get back to my regular-life projects, write things I don't hate (don't judge this blog post please; it took seventy million hours with an interruption every eight point seven seconds), and have regular blocks of sustained focus time. For now, Beginner's Android is a perfect pandemic hobby and I wholeheartedly recommend it to other beginners who want a distraction from all of this. 

Stay safe, friends. <3

PS: While I'm here, I also want to recommend the Kotlin Koans, which are a delightful introduction to this concise and intuitive language. I've said "OH WOW :-D" out loud many times as the Koans have led me to discovering new elegant syntax.