Flying can seem like a real waste of time for some, a necessary evil needed to get from A to B, used to catch up on sleep, or chill out watching whatever in flight entertainment is on offer. I like to see it as a great opportunity for learning, read on to see how I turn my flight into a personal hackathon.
I've just gotten back from the Google Developer Experts Summit. Every year, Google organises ~300 GDEs with the biggest community contributions to the annual #GDESummit. It was 2 days, 7 parallel tracks, 62 sessions, and lots and lots of conversation and fun. This year it was run at Google in California USA, whereas I work in Liverpool UK. This means a flight from Liverpool to London (1 hour 10mins) and London over to San Francisco (11 hours 20 mins).
A hackathon (also known as a hack day, hackfest or codefest) is an event in which people set out to create, learn, hack together technologies and use their skills to reach an end goal in a very short timeframe and usually skipping on some of life's other necessities like sleep.
I had a total of 12.5 hours to work with for my flights. I set out my aims to be broad and multiple, this allowed me to feel a sense of accomplishment and completion throughtout the flight (and not just at the end, very important). I aimed to learn about at least one new programming API, catch up on at least one conference talk I'd missed, tidy up at least one thing from my long list of "I should improve this" pieces of code and also read at least 1 blog post from my "to read later" bookmarks.
Like with any well laid plan, the skill is in the preparation. You'll likely not have internet connectivity on your flights (or have to pay through the nose for it). Having tabs already opened and loaded with the content you want to explore helps. Downloading YouTube videos to watch (using YouTube Premium of course) offline is great. Ensuring your laptop is fully charged in the terminal beforehand, and generally expecting to not be connected will stand you in good stead.
Learning a new programming API, I decided to use Google's code labs website.
Google Developers Codelabs provide a guided tutorial, hands-on coding experience. Most codelabs will step you through the process of building a small application, or adding a new feature to an existing application.
I had the tabs preloaded, and also clicked through them to see if there were any example code repositories or dependencies needed (there were, and I downloaded these as zip source folders from GitHub). I chose 5:
- Introduction to Sceneform, AR stickers
- ARCore Cloud Androids
- Using the Natural Language API from Google Docs
- Entity, Sentiment and Syntax Analysis with the Natural Language API
- Android Things Assistant
The labs worked pretty well, some of them required registering online to enable cloud APIs, or to be online to test the code written, being on the flight I could not do this, but I could still understand how the APIs worked and have a taste of working in that area. Whilst not a 100% success I would say I achieved my aim and if I ran the codelab again when online sometime I could cement this learning.
#2 YouTube videos
There are so many awesome conferences always happening, and watching videos of these talks if you cannot attend in person is very informative. I have a backlog of talks and could always do with more time to catch up. For this flight, considering where I was going I chose to watch Android Dev summit talks. Those I had preloaded ready were:
- AndroidDev Summit Keynote
- 3 platforms in 5 minutes with Kotlin
- Optimize your app size with this one trick
- Android Suspenders
- Is your app ready for foldable phones?
- Re-stitching plaid with Kotlin
- Single Activity: Why, When, and How
Refactoring is a fun activity that doesn't necessarily need you to be running the application, opening emulators, loading new libraries or potentially even having an IDE open. (These are all tasks of programming that drain a lot of battery or require a network connection.) Refactoring can allow you to hone your code reading skills and apply SOLID or clean code principals to make your code better for yourself and for others who may use it in the future.
Side note: you should still run your test suite to ensure your refactorings haven't broken anything. That's the whole point of a refactoring, right?
Code Refactoring: is the process of restructuring existing computer code—changing the factoring—without changing its external behavior. Refactoring is intended to improve non-functional attributes of the software. Advantages include improved code readability and reduced complexity; these can improve source-code maintainability and create a more expressive internal architecture or object model to improve extensibility.
#4 blog reading
Like with conferences I have a constant backlog of reading I'd love to do. Here were my loaded tabs:
- Getting started with Google ARCore on Android
- Get your app ready for foldable phones
- Setup AWS S3 static web hosting using SSL
- AWS Lambda, Applying the decouples invocation pattern
I closed my tabs after I had finished reading them, I think this was a bit of battery use paranoia and in real terms didn't gain me any real % duration increase in battery length.
Sleeping helps you learn, and I can't do all of the above for 12 hours straight anyway. Grab your face mask, use your neck inflatable or just lean in on your neighbour's shoulder and catch some zzZs. Your brain needs downtime to reflect on and absorb all that awesome learning. Remember to consider when any in-flight meals are going to come, it's bad form to be asleep when food is on offer, but that's a perfect time for some audible learning.
Usually I would also have a physcial paper book on this list, so you can get some reading done .. perhaps when your laptop battery expires (on a plane with no plug). But for this trip I actually messed up and ended up checking in both my books in my main luggage, so didn't get the chance to open them, they were:
- Embedded Android: Porting, Extending, and Customizing
- Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead
Having 4 or 5 different options of learnings is very important, learning depends on your mood, sometimes you have a lot of energy are on the ball and can dive into a codelab or read a blog post, later you might be getting tired and want to learn a bit passively with watching video, or alternatively feeling creative and express yourself with refactoring code. Having the choice is important and then however the day is affecting you; if the person next to you has suddenly grown massive elbows or started to snore, you have a choice and can still reach your aims.
Flying from Liverpool to San Francisco is a long 14 hours, but it doesn't have to be a wasted amount of time. Embrace the lack of connectivity, set yourself small achieveable goals, and enjoy your own in-flight personal hackathon.