Metrics for OkHttp’s Kotlin Upgrade

We’re upgrading OkHttp’s implementation language from Java to Kotlin. It’s a big process, especially as we’re maintaining strict compatibility with OkHttp 3.x. Fortunately we’ve done it before and we’re following the strategy Egor & I presented last year. Today we reached a nice…

Syntactic Sugar

In comparing programming languages I’ve found myself anchoring on what I’m comfortable with and seeing everything else as either “low level and verbose” or “full of syntactic sugar and magical”. I’ve recently gone from using mostly Java to using mostly Kotlin and I’ve learned that syntactic…

Toehold Test

Let’s write a small class that has potential to grow. data class ZipCode(val code: String) { init { require(code.matches(Regex("""\d{5}"""))) { "not a zip code: $code" } } } Should you write a unit test for this? Turbo test-driven developers do because…

Deadlines

My recent work requires coordinating teams to build their own pieces of a larger puzzle. We’re going to replace old system 𝒂 with new systems 𝔁, 𝔂, and 𝒛, and that means each team needs to land their contribution on schedule. But in my heart I know that software hates schedules! We’re…

Live Forever

I don’t have a fountain of youth but instead a surprising approximation. You know the expression, “time flies while you’re having fun?” It’s almost right. Your brain’s perception of time flies when you’re doing something familiar. And most importantly, your perception of time slows when…

Weightloss

If you lose 10 pounds, where do those pounds go? It’s weird trivia that I never learned in school. Do you poop it out? pee? sweat? A parallel question clarifies: where does the gasoline goes when you drive your car? The car’s internal combustion engine turns oxygen and…

SQL Multiple-Column IN Clause

The IN clause is handy. I use it all of the time. SELECT * FROM cars WHERE make IN ('Ford', 'Subaru') AND price < 5000; +--------+---------+------+--------+-------+ | make | model | year | color | price | +--------+---------+------+--------+-------+ | Ford | Focus | 2007 | Black | 1100 | | Ford | Mustang | 2005 | Yellow | 4000 | | Ford…

Developer Identity & Multiplatform

We don’t self-identify as software developers but as web developers, backend developers, Android developers, or iOS developers. Many factors reinforce this specialization. I’m a Droid Building systems builds experience. Android developers learn technologies that have no analog on other platforms: activities, intents, and XML layouts. Once we’ve…