Eating Your Own Dogfood

A big concept in the software development world is eating your own dogfood — that is, using your own code as a customer would. (Places like 37signals will — justly — argue that this is of paramount importance.) A while ago we made an effort to use our own site for internal communication, and ended up fixing a couple long-standing bugs that never seemed important until we had to deal with them.

I wonder how often this happens in the real world. Do any executives at Kraft/Ritz ever eat Handi-Snacks bought from a store? If so, they would have noticed that, about 95% of the time, at least one cracker will break in half as you lift it out. Worse, the cracks are often incomplete, so you take it out and it’s in one piece, but you start applying cheese and then it snaps, invariably landing cheese-side-down on your lap. I bet a simple change in packaging or distribution could make smashed crackers a rarity. But I also bet that executives are oblivious to the problem, even though I’ve had this problem for about a decade.

And how about manufacturers of small electronics? Has the CEO of Sandisk ever gone into BestBuy, bought an SD card, and tried to open the freaking package to get his SD card out when he got home? You need industrial scissors or a machete to get through the plastic. And then when you’ve cut the top off, it isn’t enough, so you try to rip the package, and the SD card goes flying out and lands behind the couch or something. I’m envisioning this happening to the company president one day, and him going into work the next morning in a fury of rage. “Do you have any idea how horrible our packaging is?!” Yes, everyone else has known for years.

Has Bill Gates ever had his mother call his cell phone and ask how to change the border style of a table in Word? I have, and my answer was something like, “I have no idea without seeing it… Right-click on the table — not the whole table, but just the very outline of the table — and select something near the bottom, maybe Properties? And then some menu with like five tabs will come up, and it looks like the controls to a 747. And one of them will let you change it. I seem to recall that there’s something counter-intuitive about it, though, so you might have to play with it for a while.” The response was surely something along the lines of, “That doesn’t help me at all.”

Does the CEO of Verizon have FiOS at his house? Has he ever tried calling customer service and realized that some of the people do not speak English? I couldn’t understand them, and they couldn’t understand me. It went on like that for 30 minutes. If it were my company, I would have shot myself in the head upon realizing that this is what I had built. Do the executives on the AT&T/iPhone deal all carry iPhones with AT&T service? Do they get important text messages hours after the fact, with no apparent reason for the delay? Even though they’re sitting next to someone else who got the same message the second it was sent? How many times are they out driving when they realize that they have no service?

Has the president of AAA ever broken down on the side of the highway? Did he call the 800 number, give a barrage of information, and then wait 45 minutes for a tow truck? Does the editor of the Boston Globe ever visit without a popup blocker? Does the head of the MBTA take the commuter rail to work? Has he ever almost been knocked over when the train randomly lurched forward while it was stopped? Has he ever had to deal with a rude conductor? Did he ever get splashed with water from the air conditioner that was leaking onto hte seat through a light fixture? Did he sit in one of those two-person seats and then have a second person actually try to use the two-person seat, and realize that it only seats two if both people are anorexic, but that people do it anyway?

I’m convinced that the answer to every question in this post is “Certainly not.” Because otherwise, there is no way that these things would continue to be problems.

Load Balancers and Crappiness

I was reading something about Array Networks and the load balancers with SSL offload that they offer. I followed a link to their main page, and the images slowly drew on the page. I’m on a cable modem, and thumbnail images generally load near-instantly. This is one of the images embedded on their main page. It’s 5440 x 2448 pixels, and they use the height and width parameters of the img tag to display it in browser. This is a major pet peeve of mine, and it screams of amateurism at best, or cluelessness at worst. It’s only moderately annoying on a cable modem, perhaps adding about a second to the page load. Can you imagine if you were on dialup?

What really gets me, though, is that these people should know better! Although proper HTML design isn’t their industry per se, making sites responsive is arguably their company’s main purpose. It would be like a marketing firm having misspellings on their homepage — grammar isn’t their industry, but they’re all about presenting a pristine image, so it’s inexcusable to make mistakes like that.

But while you’re at it, here’s an interesting article about using a dedicated nginx proxy as an “SSL accelerator.” Most people doing SSL offload move it to a machine with hardware crypto cards (a la the Cavium Nitrox line), or, more commonly, dedicated appliances. This article argues that a decent level of commodity hardware can match the performance, and, in the case of some top-shelf equipment, do it for a tenth of the cost. (Granted, it replaces an appliance with a whizz-bang GUI and 24/7 support with a homebrew system…)

It’s also interesting to note that you can easily turn this into something that does all (or at least, most) of the magic that something like a BigIP box does. Rather than using it for simple SSL acceleration, you could also use it as a load balancer by throwing something like haproxy on it. (I admit: I have a little bit of a crush on its request buffering capability. Look at the Apache thread scoreboard sometime and note how much time is ultimately just waiting for clients.) And throw in varnish (with SSDs!) and your SSL-offloading, load-balancing appliance is suddenly a caching reverse proxy, too. Granted, there’s a big downside here: you’ve just moved an awful lot of components onto one single box, introducing a horrible single point of failure. At some level you’ll get this with an enterprise load balancer too, but it’s the same issue described above: it’s some sort of custom homebrew thing running on commodity hardware, so the single point of failure is pretty scary. You could mitigate it somewhat with redundancy, though.

I also found a reference to Strangeloop. Their site is light on details, but reading between the lines, it seems like, among other tasks, it might consolidate and minify CSS and JS files, etc., which can reduce multiple calls. This task should really happen when building a site, not on the fly when serving the page, but at the same time I can understand how you get there — perhaps you’re responsible for the upkeep of a site where all of the developers have left the company, or perhaps the systems and network people are sufficiently divorced from the web people…

Now if only they could make their product automatically resize images on the fly to fit the sizes described by the image tags, they could sell to Array Networks!


A recent article — yes, I’m citing it as a serious source — introduced me to the concept of Congo’s SAPE, from Société des ambianceurs et des personnes élégantes, which translates to the “Society for the Advancement of People of Elegance.” Adherents, known as sapeurs, dress in dapper, sometimes garish attire, despite living of modest means in an impoverished nation.

The origins of the practice trace back to French colonization of the area, but have an intensely regional twist. President Mobutu attempted to ban three-piece suits as part of his effort to eradicate colonial influence, but not everyone could be convinced. Musician Papa Wemba is also credited with popularizing the look in the seventies, performing in fine European suits.

A decent introduction can be found on Oddity Central, and an article presenting some critical views can be found on AfricaFeed. And there are plenty of galleries such as here, here, and here.

Oh, and there’s a book: Gentlemen of Bacongo.


The concept of microloans has intrigued me for a while. Loaning $500 might be all it takes for someone in the third world — or any non-superpower nation, really — to start a successful small business, or to get a college degree.

The latter is the concept behind Vittana, which aims to allow microfinanciers — you and me — to invest in the college educations of people in impoverished nations. “Student 1” (based on IDs in the URL) is María, who was given a $291 loan. She’s already repaid $146 of it. That money enabled her to move out of $63/month job into a $208/month career, a 333% jump. And she hopes to go back for accounting at a later date.

Granted, it’s somewhat voyeuristic. But that directness makes it harder to resist — how can you not help Octavio go to school to major in computers, or help Tirza achieve her dream of becoming a pharmacist?

Best of all? It’s a loan, and they have a 97% repayment rate. You’re not donating $100, you’re loaning $100. That makes it easier to give (more), but it also means that, when you’re repaid, you could invest it right back in another student.