What I recently learned about color
I recently read a lot about color perception, color representation, and color management, and I have found little content on the internet that describes these topics in quite the way I needed at the start of that journey. This post is my attempt to create the document I would've liked to find.
Hello (Virtual) World: Your first Daydream app
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
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
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
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
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
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
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
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
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!
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
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
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?