All posts

Ordered by date, newest at the top.

An art a day

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.

Read more...

1999 Days

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?

Read more...

Reading List - Managing Engineers

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.

Read more...

Sliding Windows

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.

Read more...

Throne of Blood (1957)

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.

Read more...

The Holy Mountain (1973)

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.

Read more...

Suspiria (1977)

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:

  1. Clock Tower is an insanely weird, horrific, and beautiful game.
  2. Clock Tower cribs scenes directly from Suspiria.
  3. Therefore, Suspiria must be even more weird, horrific, and beautiful than Clock Tower.
Read more...

Bin Packing - Shelf Algorithms

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 which 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 Javascript (you can see the source here).

Read more...

Stalker (1979)

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.”

Read more...

Chromos

On April 17, 2015, Wes, Kalev and I started work on LD32, our third collaboration on a Ludum Dare weekend game jam.

Our resulting entry, Chromos, is a top-down action game reminiscient of Zelda and (blatantly) Titan Souls. It’s the most ambitious game we have tried to make in 48 hours:

Read more...

Under the Skin (2013)

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.

Read more...

Black Swan

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.

Read more...

Ludum Dare

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.

Read more...

Year in review - 2013

Now that 2013 is pulling to a close I feel the pull that anyone who has ever set pen to paper (metaphorically, in this case) feels now - the thick, crushing desire to “bang out” a top 10 Greatest Hits list before retreating sleepily back into the embrace of a thick holiday sweater for a few weeks’ hibernation. I had a great time in 2013 - got SUPER married to the love of my life, participated in Twitter’s IPO and then moved into a fulltime Software Engineer role while finishing a set of Stanford graduate CS courses. Busy year.

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.

Read more...

Learn HTTP, damn it

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.

Read more...

Go templates

Go’s html template package has some really powerful safety features but is unfortunately not designed to be as simple as some of the other template packages I’ve used in the past.

Read more...

Verivorstid

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.

Read more...

Another world

(Originally written on August 13, 2012)

I saw this today.

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.

Read more...

Racing the Beam

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.

Read more...

Post Office

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.

Read more...

Loading Twitter's widgets.js in a Chrome extension

Twitter’s Javascript-based third party offerings include buttons and 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.

Read more...

The Internet is a universal service

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.

Read more...

Reviews

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 interconnected nowadays.

Read more...

What to expect

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.

Read more...

This site is now generated and hosted by Go

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.

Read more...

Dynamically coloring a favicon

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 losing productivity.

Read more...

My First Weeks at Twitter...

… 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:

Read more...

Interviewing for Fun and Profit

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.

Read more...

Freedom Week!

With my decision to leave Google to work for Twitter, I am now officially unemployed for the first time in four years, and will be for slightly over one week. I have named this week Freedom Week.

Read more...

My Last Day at Google...

…was August 25th, 2011. On September 6th, 2011 (four years and two days after I started my first Silicon Valley job at Google) I will be starting a position as Developer Advocate at Twitter.

Read more...

Simple Go Server

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 refactoring. *

Read more...

East Coast GTUG Tour

After an amazing Google I/O session last week, I’m doing a bit of touring around on the East Coast until June. There’s a ton of GTUGs within driving distance of NJ, so I’m hitting up a few.

Read more...

Google I/O 2011

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.

Read more...

Isolated Worlds

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.

Read more...

Add-on-Con 2010

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.

Read more...

Getting an extension's ID

I’ve gone in-depth on the structure of CRX files, but left out a crucial portion for anyone looking to host their own CRX from a server.

Read more...

Packaging Google 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.

Read more...

Before we begin, a little bit about me...

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.

Read more...

Elsewhere

Twitter (@kurrik) Github (kurrik) Google+ (+kurrik) Linkedin (kurrik)

Tags

arne (10) reviews (9) chrome (7) work (7) extensions (6) twitter (6) games (5) cinemaclub (5) html (4) go (3) algorithms (3) presentations (3) books (3) javascript (3) google (3) ludumdare (2) estonia (2) internet (2) appengine (2) space (1) readinglist (1) recipes (1) http (1) art (1) management (1)