Hello (Virtual) World: Your first Daydream app

November 27, 2016

I recently bought Google's new phone, the Pixel – and alongside with it, the Daydream View virtual reality headset. It took me a while to figure out how to create programs for it myself (using the JMini3d library); this write-up is meant to help the next person with the same problem. And my future self.


The making of StackEgg

April 06, 2015

Ever since I joined Stack Exchange in 2010, I've been the developer tasked with implementing the April 1st happenings on Stack Overflow and the other Stack Exchange sites. This is the story of the 2015 April 1st feature, StackEgg.


Catastrophic backtracking: When regular expressions explode

January 21, 2015

I gave a short talk about catastrophic backtracking in regular expressions at our company meetup, and made a recording of it for anyone else interested in regex performance.


Android development: What I wish I had known earlier

July 30, 2013

At the beginning of the year, I jumped from web development to Android development. Both Java in general and programming for Android in particular were totally new for me. Half a year later I've learned a lot, and while I'm obviously still lightyears away from being able to call myself an Android pro, here are a few tips that would have been great back then, when I knew even less.


Plain text considered harmful: A cross-domain exploit

February 20, 2013

I recently found an exploit that can allow malicious sites to get access to certain kinds of cross-origin data that is not wrapped in any container format. This post is a description of that vulnerability, together with some general talk about cross-domain communication.


John Resig: Secrets of the JavaScript Ninja

February 11, 2013

jQuery inventor and JavaScript guru John Resig's book Secrets of the JavaScript Ninja was released at the end of 2012 after several years in the making. I've read it, and in this post I'm jotting down some thoughts about it.


An unexcited look at browser sniffing

July 08, 2012

Do you use browser sniffing? Oh, you evil person! Your poor soul will rot and burn forever, you're summoning the wrath of the heavens!

Do you use feature detection exclusively? Aah, a pure spirit! Enlightenment has come to you; you shall forever be applauded by the angels above!

Do you live in the real world? Then this post may be for you.


JavaScript concurrency and locking the HTML5 localStorage

March 05, 2012

A discourse on why concurrency usually is not an issue in JavaScript, and a little pet project of mine that tries to help in a case where it is an issue after all.


jQuery script insertion and its consequences for debugging

October 09, 2011

A while ago, we moved much of the JavaScript functionality on the Stack Exchange sites over to using lazy loading. Unfortunately, this caused an annoying issue that made debugging the JavaScript harder, due to how jQuery implements script loading.


Look, honey! I injected a dependency!

July 23, 2011

I recently spent some time refactoring the JavaScript version of the Markdown converter and editor used on the Stack Exchange sites. Some of this work included using a very simple technique with a big-sounding name.


Introducing Lyfe: Yield in JavaScript

June 23, 2011

I've been a fan of using yield to create generators in Python for a long time, and when I was dragged into the world of C#, I was thrilled to see that it supports this pattern as well. Unfortunately, JavaScript doesn't offer this, so I came up with a little project that tries to emulate yield in JavaScript.


A shout-out to the people of Meta Stack Overflow

June 13, 2011

Jeff Atwood calls it human unit tests and cheating. Alex Miller calls it User Based Monitoring. Namely, relying on user feedback and bug reports to let us know when we break something.

This works remarkably well – when something is wrong, we'll know about it pretty quickly. You can be sure that Meta Stack Overflow will have a new post, complaining about the bug we just introduced. In no time.

This system has been working great so far. But why? Why do people help us, for free, even though we prove bug after bug after bug that after one thing is fixed, another issue is right around the corner?