Speeding up HTTP with minimal protocol changes
As SPDY works its way through IETF ratification I began wondering whether it was really necessary to add a complex, binary protocol to th...
How to generate more revenue from your web application today
There are ways that your software as a service web application can make more money today. They aren’t complicated or revolutionary, but instead are practical ideas that you should consider implementing right now. Before we jump in you should take a moment to check out my latest book on designing web applications. It…
Clojure 2011 Year in Review
A new year is upon us. Before the world ends, let’s take a look back at what 2011 meant for everybody’s favorite programming language:
The Lazy Man's URL Parsing
Learn how to pull the pieces of a URL apart the lazy way so you can find out all the important information you wish to know about your URLs.
European Parliament Blocks Copyright Reform With 113% Voter Turnout
In an unexpected turn of events, one of the key committees in the European Parliament voted recently to weaken a reform of the copyright...
How to leave academia (for science PhDs)
So you've decided to leave academia, or are perhaps just thinking about doing so. Welcome to the dark side. I made the transition a few years ago, and since then I've gotten a number of questions about how to do it. Hence, this article. First of all, I'm going to …
Hey Yahoo, You’re Optimizing the Wrong Thing
Hey Yahoo, You’re Optimizing the Wrong Thing Posted: September 18, 2012 | Author: Hilary Mason | Filed under: blog | Tags: data, design, product, yahoo | 26 Comments » I was visiting my grandparent…
How multi-disk failures happen
Having seen this failure mode happen a couple times now, it's time to share. Yes, Virgil, multi-disk failures DO happen during RAID rebuilds. I have pictures, so it MUST be true!First,
Does one have to be a genius to do maths?
Better beware of notions like genius and inspiration; they are a sort of magic wand and should be used sparingly by anybody who wants to see things clearly. (José Ortega y Gasset, “Notes on t…
Why software sucks?
[First published: September, 2005] No one makes bad software on purpose. No programmer has ever sat down, planning out weeks of work, with the intention of frustrating people enough to make them cr…
“She doesn’t deserve to be alive”
What is success? When do you reach it? Is life different? Are you happy? And if it's not the shining golden star that it ought to be, is it still worth it?
Learning from competition
I experimented with custom fonts in Instapaper last year, but my efforts fizzled out. Before iOS 5, rendering custom fonts in a UIWebView on iOS was extremely buggy and slow. And nearly all of my licensing inquiries to font foundries went unanswered, so I couldn’t legally ship any of the fonts I wanted even if I could…
Ruby’s magic underscore
I discovered today that Ruby treats underscores a little bit differently when it comes to variable names.
Using Spotlight from the OS X Commandline
One significant productivity-enhancing feature that arrived with Tiger was Spotlight. On its own, it changed the way some (if not most) Mac...
Solving FizzBuzz with C++ compiler error messages
Jämför casinon utan svensk licens: licenser, bonusvillkor, omsättningskrav, betalmetoder, uttagstider, KYC och vilka kontoverktyg som faktiskt finns.
Follow This Rule — If You Want To Be Popular (1922)
Update: See this post for a free ePub eBook version of this long post. From a 1922 issue of The American Magazine, something that is just as true today as back then. In fact, it probably has even m…
Python iteration
This is a presentation I gave at PyCon 2013. You can read the slides and text on this page, or open the actual presentation in your browser (use right and left arrows to advance the slides), or watch the video:
A 5 Minute Quickstart Guide to Python’s logging Module
To debug your program, you may be tempted to pepper your source code with print() calls to display the values of variables as your program runs. It's quick and easy to do this, but the problem is that once you see the values in the variables, that'll give you ideas for more places to put print() calls, then you run…