Leap years are for people who can’t plan ahead

Egyptian calendar, dating system established several thousand years before the common era … [It] consisted of 365 days organized into 12 months of 30 days each [..] There was apparently no attempt to introduce a leap-year day to compensate for the slippage of one day every four years; as a result, the civil calendar slowly […]

Android Room and Data Binding compile-time errors

I’m building things with a combination of the new Room ORM and Data Binding, and I find that when Room has compile errors they express as hundreds of lines of Error:(6, 31) error: cannot find symbol class BR and related things, and no actual real error. Turns out, javac will print a maximum of 100 […]

Code Points

A commonly touted disadvantage of UTF-8 is that string indexing is O(n). Because code points take up a variable number of bytes, you won’t know where the 5th codepoint is until you scan the string and look for it. UTF-32 doesn’t have this problem; it’s always 4 * index bytes away. The problem here is […]

Electric Objects EO2

I just bought an Electric objects EO2. First impressions: It’s exactly as pretty as I was hoping for. Which is to say, very pretty. It’s heavier than I was expecting. I’m renting, and I’m not quite ready right now to put the holes in the wall that mounting it would require (though the instructions and mounting kit are […]

Some rough edges of a standout feature

“That’s four different ways to talk to Google on this phone, not counting apps like Maps and Gmail. And each one has a slightly different interface and provides slightly different results” [..] I quoted the above passage, though, because it suggests some rough edges regarding what is supposed to be the Pixel’s standout feature — John […]


So while it’s nice that I’m able to host my own email, that’s also the reason why my email isn’t end to end encrypted, and probably never will be. By contrast, WhatsApp was able to introduce end to end encryption to over a billion users with a single software update. The ecosystem is moving

Working around Android M Intent Resolving

In Intent Resolving in Android M, Said Tahsin Dane points out a change in Android Marshmallow to the intent querying mechanism. Specifically, when using queryIntentActivities, If there is a domain verified application, [queryIntentActivities] does not return anything else. MATCH_ALL flag removes some system filters but only if there is no verified application. This makes a […]

[]WATCH predictions

I read some reviews of the watch. I haven’t used one, but I can tell you most of the same things the reviews do: For the first week or so you’ll be playing with it constantly and there will be lots of people saying “the battery life isn’t good enough”, because it’s not designed to […]

New things are different from old things

“This is my grandfather’s Apple Watch. He wore it every day of his life for 15.5 months.” Owen Good It is as if you are trying to build a cargo aircraft, and you insist that it should also lay eggs because it can fly. It is a flying machine, and it has wings and it […]

Chromium vs Android

There are a couple reasons why we open activities launched from Chrome with NEW_TASK flag. The biggest reason is that it provides a much clearer user experience: the user sees the new app as a separate entry in recents — also, if we were to place a different application on top of Chrome activity, the […]