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.
People lean on
Activitiestoo much. Here's why you should (at least) decouple your long-lived logic from
Thoughts on the process of writing good code.
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:
A fun little puzzler for Kotlin.
Parcelablesyou 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
valmeans 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.
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.
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.
Android Oreo added notification channels, because notifications on Android weren't complicated enough.
While I avoided traveling to give talks, I did give a couple locally.
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.
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: