Year in Review (2017)
ICYMI (or more likely, in case I want a reference), here's all the public stuff I've done in the past year.
This year, I purposefully avoided traveling to speak at conferences. Writing talks, traveling, and attending conferences takes up a huge chunk of time and I was curious what would happen if I freed up that time. In addition, I feel like most talks have a small reach compared to the long tail lifespan of articles.
The end result? I wrote a lot more articles instead. I also missed all my conference buddies, so we'll see how I balance things in future years.
That said, I've got a baby due in March so there is a high likelihood that my public work will take a backseat to raising a child.
Articles
-
The Activity lifecycle vs. the world
People lean on
Activities
too much. Here's why you should (at least) decouple your long-lived logic fromActivities
. -
Thoughts on the process of writing good code.
-
Correctly handling bundled Android notifications
Notifications on Android are complicated at best. I was tasked with rewriting our notification system and this was the best implementation I could come up with. However, all of this writing predates Oreo, which changed everything again, so this article is only half-useful now.
-
Trello Offline Series
One of the longest projects I've ever worked on was making Trello Android work offline. So far, our system still works well; I've not regretted the time we put in. I wrote a series of articles touching on the more interesting aspects of this project:
-
Kotlin Puzzler: Whose Line Is It Anyways?
A fun little puzzler for Kotlin.
-
How
Parcelables
you think are working can fail, and why your tests didn't work. -
Kotlin is now an officially supported language for Android development. I weigh in here why I think that's a good move.
-
A common misconception is that Kotlin's
val
means immutable; here I aim to clear up the misunderstanding and what you can do about it. -
In this article I dig into some esoteric aspects of Kotlin ranges.
-
Convincing the Kotlin compiler that code is safe
Kotlin supports nullability in the type system, which is great; but that can have its own cost when you know a type is non-null but the compiler does not. Here, I go over how to solve this problem.
-
An Introduction to Functional Reactive Programming
I did a full write-up of a talk I gave earlier in the year. It's a basic introduction to FRP. It took way too long to write. I will probably never write up a talk again.
-
A few years ago we released RxLifecycle as our answer to some of RxJava's issues on Android. I've since decided it was the wrong answer. Here's why.
-
Working With Android Notification Channels
Android Oreo added notification channels, because notifications on Android weren't complicated enough.
Talks
While I avoided traveling to give talks, I did give a couple locally.
-
An Introduction to Functional Reactive Programming
(slides, video, write-up)A true introduction for FRP. It doesn't rely on any particular library and aims to explain the motivations for FRP.
-
Android Notification Channels: The Complicated Parts (slides)
I struggled with Oreo notification channels, then I gave a talk at a local meet-up about it. Sorry, no video.
-
Hostile Design Patterns (link)
My first ignite talk. Also my first comedy talk. It went well but for good reasons I will not be providing slides nor video.
Open Source
-
android-architecture-counter-sample
I wrote up a sample app using both Kotlin and Android architecture components, mostly as a way to explore the API.
-
I continued to maintain the following projects:
Podcasts
-
Wherein I join a large group of great Android developers to talk about Google IO 2017.
I did a couple RxJava podcasts on Fragmented a couple years ago. I've come back now with my maturing thoughts on proper reactive code practices.