I want to get better at creating art in 2017. At the start of a new year I try to make resolutions which are attainable by incremental effort over a longer period of time, so when my friend Buster suggested creating a painting or drawing every day in January, I eagerly agreed.
Friday, February 24th, 2017 was my 1999th day of employment at Twitter, and my last.
I’ve been a bit nostalgic about this, so I reread my initial thoughts on joining Twitter in 2011 to laugh at how young and naïve I was five and a half years ago. I know that when I first started I didn’t really have a great idea of what people did in fast growing companies. Did they jump around and try to work on the most critical problem at the time? Did they focus on small areas and grow them into large ones?
In May 2016, I was offered the chance to manage the Twitter Dashboard team.
This was my first opportunity to manage engineers and I was very conflicted
about switching over from a SWE to an EM. As a software engineer, you are
generally only responsible for the trajectory of your own career. As an
engineering manager, you have a large potential impact on the careers and even
lives of all the people you manage. Ultimately I decided to take the opportunity
but that I was obligated to do the work to improve my skills to be the best
manager I could be.
I’ve been working on a small interactive iPad experience for my daughter Ada. I wanted to create a world where objects would respond to touch, break apart, and evolve into different forms. She’s limited to a slappy/flailing motion and I wanted the game playable with only these rough moves. Gestures such as pinch-to-zoom or even panning the camera purposefully would not be appropriate. My v1 build therefore added a camera which zoomed to focus the most recently touched item. This worked well with my (more purposeful) testing, but zoomed around crazily once Ada got her hands on it.
Akira Kurosawa’s THRONE OF BLOOD (as I like to think of it, Michael Fassbender’s favorite Macbeth) is a meticulous, engrossing, and beautiful work. It was created at a time in 1957 where cinema still had a great deal of constraints, but also at a time where Kurosawa had honed his square-frame black-and-white film technique to perfection. There are shots in Throne of Blood which I haven’t seen done with as much skill and artistry in any other film.
This IMDB review of Alejandro Jodorowsky’s THE HOLY MOUNTAIN says “If you liked ‘The Wall’ (you know, the Pink Floyd movie), but thought it was a bit of a downer and suffered from the lack of a fat woman humping an excitable, legless, animatronic horse, this movie could be for you” which may be a little flip but not entirely wrong description of what to expect from this film.
Oh boy, SUSPIRIA. A prime example of the “cheesy horror movies so
well crafted that they can be considered art films” genre. I can’t even
remember what first added it to my queue, but I do remember seeing references
to it in a crazy 2010
playthough of the SNES game Clock Tower
which led me to the following reasoning:
Clock Tower is an insanely weird, horrific, and beautiful game.
I’ve recently been working on an update to the
twodee library we use for Ludum Dare
games. One (of many) areas I’ll be focusing on is speeding up text rendering.
Text is currently very slow because we have to create and bind a new texture,
render glyphs to it, then draw geometry for each piece of text in a scene.
One simple optimization is to pack frequently-used text into a single texture
which will remove many (expensive) texture binds.
Packing a bunch of rectangles into a texture isn’t the easiest
thing to do well. There’s a whole class of algorithms dealing with this
“bin packing” problem, each with various tradeoffs. Luckily, I found
a very useful paper
covers many of these algorithms (thanks Jukka Jylänki!).
To get a feel for how well each of them perform, I decided to implement a few in
There’s a point early on in Andrei Tarkovsky’s STALKER where the Stalker, the Professor, and the Writer have snuck past a military blockade, dodged bullets and ridden a railway work car for a few silent minutes of screen time. The film switches from sepia to color - they have entered The Zone, a mysterious alien-touched segment of the world. “We are home” Stalker says. “It is so quiet out here, it is the quietest place in the world.”
A little while ago I read this great article on the cinematic influences of the game Kentucky Route Zero, which got me thinking that I should be expanding my exposure to and ability to talk about film, particularly with regard to influencing work on Moonshot or other creative projects. So I’m starting an informal Cinema Club (think Book Club) and hope to write a bit about the films I watch and what I took away from them.
At some point I overheard Buster (my PM on analytics.twitter.com) raving about Nassim Nicholas Taleb’s books. I was intrigued without knowing too much and dove into Black Swan (even though Buster recommended Antifragile as his favorite) because I wanted to see what the deal was.
Ludum Dare is a game jam. Every 4 months
a weekend is selected and a theme is announced. Thousands of game developers
have the weekend to design, create, and release games for a competition
where there are no official judges and no grand prize.
It’s been the most rewarding creative outlet I’ve ever had.
Twitter, naturally, was a common theme. It’s where I participated in and documented many of the significant parts of my year. Of course, many of my friends don’t use or even understand the service, so to them I’ve dropped off the face of the planet. Inspired by the great 2013.twitter.com retrospective, I thought I’d put together some of my notable moments into a smörgåsbord for those friends to feast upon.
I recently had to debug an issue which required a lot of familiarity with
HTTP to debug. There were a lot of random workarounds to the problem (“if I
disable feature X it works”) but only when a developer clearly articulated
the exact problem with the HTTP response was it possible to trace the error
to a consistent reproduction case. The underlying lesson is one I’ve learned
at least a few times now. When working with web APIs there will be times
where things break at a level where you will be completely helpless unless
you know how things work underneath all of the frameworks, toolkits, and
client libraries in your application. So learn HTTP, damn it.
A traditional Estonian Christmas dinner includes roast potatoes, creamed
sauerkraut, cold beet and potato salad, roast pork, and thick cut bacon.
But the centerpiece, while intimidating to newcomers, is undoubtedly the star
of the meal. It’s a dark, savory barley and blood sausage known as
verivorst—my favorite thing to eat in the month of December.
At some point, I’ll walk into some sort of Exploratorium with my child, and
amongst the exhibits will be an opportunity to control a Mars rover over the
internet for a few minutes, and the child will not appreciate how
exhilaratingly wild and astounding that will be.
Racing the Beam is kind of like a biography for the Atari systems and
their unique underlying circuit design. Actually, it’s kind of like one of
those band documentaries where the band is already established so you just
follow them around and see their interactions with common folk. Eventually
there’s some scene where a band member blows up or throws a tantrum and
probably didn’t mean anything at the time but foreshadows the
band’s eventual downfall/breakup and so forth.
I picked up Post Office by Charles Bukowski at Booksmith because
one of the shelves claimed it was hilarious and because I hadn’t read
anything relaxed and just funny in a while. I had heard of Bukowski
before but wouldn’t have been able to tell you anything beyond that
he had a hand in writing Barfly, a movie starring Mickey Rourke
which I haven’t gotten around to seeing yet.
embedded content, which are handy for putting Twitter content into your
website. Unfortunately, they break when included in a Chrome extension, due
to the use of protocol-relative URLs. Luckily there’s a way to fix the
problem, although it requires a bit of extra code.
Way back in late 2010 I was lucky enough to visit
the remote Google office containing the office of Vint Cerf. He wasn’t
there, and apparently spends much of his time traveling, but I still felt
honored to be able to see his workspace, knowing that I had the privilege
of working in the same company at one time, the same cheaply printed
nametag on his office wall as the one which used to mark my own cube
in Mountain View.
Is there a formal name for the idea that someone is mostly the sum of their
external influences? So much of my day-to-day depends on what movies I’ve
watched, which books I’ve read, and what music I’ve listened to.
And that’s not entirely because the Twitter Developer Relations team
is a hodgepodge of cosmopolitan folks and the references fly fast and
furious in our work area, but because everything is so culturally
When I redesigned this site
I made the decision to remove a post. I felt it did not reflect the
level of quality I wanted here. It was a
ranty and vague assertion of an unimportant idea, relied upon stock
images to make a point, and ended in an inflammatory attack on a
unrelated company just to make a joke. You can see the
original source if you want, but I’ve decided to remove it
from general availability.
This update has been a long time coming. Sometime around October 2011 I
decided that I would convert this blog to a Bootstrap-based layout, wound
up breaking everything with my build process, and decided that the best way
to fix things was to rewrite Jekyll from scratch, using Go.
It is now December 2012 and this plan has come to fruition.
Since starting my job at Twitter, I’ve spent a lot of time on
dev.twitter.com, either reading documentation or posting on the discussion
group. I’ve also been Tweeting a lot more, and I tend to switch back and forth
a lot throughout the work day. My browsing habits tend to lead to a
bunch of open tabs in Chrome, and I realized that I was
… have met and in many cases exceeded the expectations I had when thinking
about joining the company. Obviously I’m still in the honeymoon period and
things are still moving fast, but the energy and culture of the place have
been inspiring. I’ve found a few things particularly worth gushing over:
During my 4 years at Google, I conducted over 70 interviews. While there
were definite hiring droughts, there were several months where I would have
2-4 interviews a week. Since most interviews are just 45 minutes, an
interviewer has to get a good idea of a person’s abilities in a short
time span. Usually this means that one major mistake can make the
difference between a candidate getting a passing score or a failing score.
I’ve certainly had interviews start off really promising, but go quickly
downhill when the candidate made a few key errors.
Like I’ve said before, I think the news that
Go will be supported on App Engine was my favorite of announcement
of I/O this year. I think this is a huge step in getting broader developer
support for Go as well as giving a comfortable middle ground between
Python and Java for developers who want their App Engine apps to be compact
and flexible while retaining some ability to do static analysis and
I’m at Moscone Center in San Francisco this week, as a speaker in this year’s
Google I/O conference. My session is tomorrow (May 11th) and as a
first, I’ll be livestreamed over the internet. If you’re interested in
viewing the session, you should be able to
see it here, starting at 10:45am PDT. We’re bringing a lot of
great content, and will try to bring the funny as well.
Chrome Extensions have been praised as being really easy to write, especially
when compared with writing a Firefox xpi or a plugin for IE. But there’s still
a few concepts that trip up developers regularly. One of these is the
isolated worlds concept, and it leads to
a lot of support questions in the group.
Last year between the time that the Chrome web store
crazied everything up and the holidays shut everything down, I was invited
to give an educational session at Add-on-Con 2010 on the
topic of Chrome extensions.
I’ve been working at Google for about three years now, and was fortunate enough
to transfer onto the Chrome extensions team about a year ago. Mostly, I
support developers working on Chrome extensions, but from time to time I work
on projects for the team to keep my sanity. A good example of this is the
Chrome extensions samples browser. The extension docs
are built and hosted automatically from the Chromium source tree
so I modified the docs build script to generate the gallery and zip each
sample into an easily-downloadable archive.
So upon getting here you may be wondering general questions like “what is
this”, and “why are they making me read this page” and “why is there suffering in
this modern world, what with computers and all”? All excellent questions to be
sure, and I figured I’d devote some space to answering them before getting to
the process of writing down whatever comes to mind while completing my
day-to-day tasks at my nerd job.