San Francisco’s pandemic Parklets and Shared Streets programs are massive successes. We should recognize that and make them permanent.

Image for post
Image for post
Parklets and a weekend street closure at Hayes and Gough.

Sometimes good things don’t require decades-long policy process. The covid pandemic upset business-as-usual everywhere, and San Francisco’s city bureaucracies were no exception. Temporary dining parklets and an aggressive “shared streets” program (weekend street closures for pedestrians) quickly and breezily reallocated mere fragments of public space away from cars, hugely improving civic life.

It’s crucial now to recognize that although these programs (and others like them) are nominally temporary, San Francisco should embrace the deep good in what it managed to do…


Designer Jerry Manock clarifies the Apple II’s color and production history.

Image for post
Image for post
A decade of beige. Photos: Bilby/Wikimedia (Apple II and III), All About Apple (Mac). All images CC BY 3.0.

I recently published a fairly well-circulated investigation on the origins and specific color known as “Apple Beige,” based on a surviving jar of original touch-up paint from the 1970s. This was the shade of the first Apple computer to have a case.

My conclusions, based on available written sources, were wrong. Or, in any case, incomplete. Jerry Manock, the original designer of the iconic cases and the person most closely associated with Apple Beige, was kind enough to respond in detail to my inquiries following the article. …


.rgba is the dumbest possible image interchange format, for your programming pleasure.

Image for post
Image for post
So simple it fits on the back of an envelope.

TL;DR

Join me in supporting this dumbest of all possible bitmap image formats to make writing little tools and programs with images easier for everyone. It’s called RGBA and it stores your RGBA data. Here’s some free code if you want some, but the whole spec is up there in the scribble. Have at it.

Why this revolutionary idea?! and why now?

It’s time for a bitmap image interchange format that you can read and write comprehensively with the barest minimum of code and zero edge cases. The RGBA format I am proposing here is the…


The startup’s opportunity is not conference calls, it’s never-ending drive-time radio

The invitation-only audio-chat social networking app clubhouse is pictured on a smartphone
The invitation-only audio-chat social networking app clubhouse is pictured on a smartphone
Photo: Thomas Trutschel/Photothek/Getty Images

Remember when the back of everyone’s toilet had a pile of magazines on it?Those magazine piles vanished with the advent of the mobile internet. Today, Facebook, Twitter, and Instagram are never-ending sources of content you can tune into in those spare moments, to occupy that part of your brain. Clubhouse — the new darling of Silicon Valley and the extremely online set — may have hit upon a rich vein of similar desperation, and if the company navigates it correctly, could become just as essential.

Stratechery’s Ben Thompson wrote about Clubhouse’s opportunity last week. Economics of podcasts and blogging aside…


Help me solve a linguistic mystery. Does that question sound right to you?

Image for post
Image for post
Photo: Cat Branchman/Flickr (CC BY 2.0)

I grew up in New England, and when I go to sleep at 10pm, that’s how I say it: “I went to sleep at 10 last night.” Sleep, as a verb, only describes the action over a time span, as in, “I slept for a full 8 hours.”

But in the years that I’ve lived on the west coast of the US, I’ve heard many people say things like “I slept at 10 last night,” meaning that that was the time they went to sleep. Similarly, they…


Part 4 of a series discussing the joys and pitfalls (mostly pitfalls) of hacking together a minimal JVM in Javascript. The live code base — a very rough work in progress! — is on GitHub. Subscribe for further updates! ;-)

Last time we got only halfway through our very first Java instruction (getstatic) but don’t feel bad! I simply had the bad fortune of writing a program whose very first instruction is one of the more complex ones in the whole JVM. …


I went looking for a defining color of its era. I found it in an old jar of paint.

Apple’s second computer — its first to have a case — launched in 1977, and that boxy beige Apple II was soon everywhere: in classrooms, living rooms and offices. At the vanguard of a generation of personal computers to come, it featured a particular and carefully-chosen beige. But what did that look like? Those first machines — the ones that have escaped landfills anyway — have shifted in color over 40 years. The documented public record is sketchy and confused. …


Part 3 of a series discussing the joys and pitfalls (mostly pitfalls) of hacking together a minimal JVM in Javascript. The live code base — a very rough work in progress! — is on GitHub. Subscribe for further updates! ;-)

OK, in the last installment I set myself up to get the bytecode for my Java Hello World main method. All that I have to do now is execute it! (easy.) In this episode, I will start to parse “by hand” the instructions for the method, so we can see how some basic concepts work in order to make sure…


Part 2 of a series discussing the joys and pitfalls (mostly pitfalls) of hacking together a minimal JVM in Javascript. The live code base — a very rough work in progress! — is on GitHub. Subscribe for further updates! ;-)

I finished last article by walking through the simple Java class file for Hello World. This time I’m going to talk more about Javascript, and what structures are needed for using that class data.

I called my project Kopiluwak. All self-respecting Java-adjacent projects use stupid coffee puns for their names, and this is no exception. I figured a (s)crappy effort…


Part 1 of a series discussing the joys and pitfalls (mostly pitfalls) of hacking together a minimal JVM in Javascript. The live code base — a very rough work in progress! — is on GitHub. Subscribe for further updates! ;-)

Image for post
Image for post

This past summer, I had a conversation with a friend about his need to run small Java programs in a web page. It was a pandemic summer and I had some time, so this made me wonder how hard it would be to put together a small, simple Java Virtual Machine (JVM) in Javascript. I have done some hobby work…

Ben Zotto

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store