Thoughts on life, the universe and the mystery of it all; but actually mostly just code.
Sharing code between test modulesIn 2015, I wrote a post about sharing code between unit tests and instrumentation tests on Android. Iain Cunningham just pointed out that the method I outlined no longer works.
Domain-Specific ModelsFor a long time at Trello Android, we used the same class for parsing API calls (via Gson), making DB transactions (via OrmLite), and displaying data in the UI.
Maintaining Software CorrectnessThis article is a write-up of a talk I gave at MinneBar 2022. You can see the slides for the original deck here. (As of writing, the recording is not online yet.)
Year in Review (2021)I continue to do less and less each year due to the dual woes of raising a toddler and navigating a pandemic. I also took three months off work this summer and I didn't much feel like doing anything tech then!
How Trello Android converted from Gson to MoshiTrello Android recently converted from using Gson to Moshi for handling JSON. It was a bit tricky so I wanted to document the process.
My Programming EarwormsThere are tons of articles online that discuss the articles/talks/books that you must consume to become a true programmer. I dislike this framing; it’s gatekeeping, plus software development is such a varied discipline that one person’s essential reading is entirely unnecessary for another.
Edina School Board Election (2021)Here’s my thinking around this year’s Edina school board elections. The short version is that I’m voting for Erica Allenburg, Dan Arom, Michael Birdman, and Karen Gabler, but read on for more details.
The dangers of JSON + default valuesThe following code converts an object to JSON and then back again:
Do or do not; there is no tryEmit()In RxJava, PublishSubject (or PublishRelay if you’re a cool kid) is a gizmo for manually pumping data into streams like in this contrived example:
Stop Nitpicking in Code ReviewsOne of the best changes I’ve made at work recently is to stop nitpicking in code reviews.
RxJava vs. CoroutinesAt Trello Android, we’ve been considering switching from RxJava to coroutines.
A Warning Regarding Android App Startup with Multiprocess AppsIt’s possible to run different components of your Android application in different processes. I’ve avoided multi-process apps because it’s usually unnecessary and it introduces all sorts of pain, but there are certain use cases that require it.
Year in Review (2020)Well. That was quite the year.
Testing Never-Ending FlowsSuppose we’ve got an RxJava test to verify that a stream never emits anything*:
Trello Android's Git Branching StrategyMany years ago, Trello Android used a fairly simple git branching strategy - or so we thought at the time.
Why You Should Vote EarlyI love voting on election day. Walking into my precinct, waiting in line with fellow voters, marking my ballot, donning an “I Voted” sticker… the whole process fills me with (an unhealthy amount) of civic pride.
Optimizing Play Store Review TimesEarlier this year, Trello noticed that Play Store uploads were being increasingly delayed before being sent to users. Whereas before we could depend on users getting new APKs in a few hours, now it was sometimes taking days.
How to Vote By Mail in Minnesota (And Make Sure It Counts)If you want to vote in Minnesota while avoiding COVID-19, then you should vote by mail.