Varnished WordPress

As this blog comes closer to the 10th year anniversary, my blogging software choices continue to change. So far the path has been: Livejournal -> Movable Type -> WordPress -> Drupal 5 -> Pressflow Drupal 6. Since I had some time on my hands lately, as an exercise, I decided to upgrade to Drupal 7, but after a few hours gave up in complete disgust. Drupal community is very proud for keeping its technical debt very low, but they rarely talk about who pays it.

It turned out to be quicker to export everything to the latest version of WordPress. I still like Drupal, but latest WordPress has some really nice features. I also took the time to install Varnish and trick out my sites with reasonably advanced caching via Memcached and APC. I also switched to Percona MySQL just for kicks.

Webmaster Tools Crawl stats

I’m still working on theming the blog, and tweaking, so things will break from time to time.

How To Speed Up the Web (And Gain A little Privacy)

Let’s face it: Facebook “like buttons” are dragging the pageload speeds down. They are just the pits, and they are slow mostly because the Great Zuck want to know what you are up to. Screw that – install WidgetBlock for Chrome, your pages will load faster, your browser will crash less, and Zuck will know less about you.

This has been a public service announcement. Also, don’t forget to back up – hard drives only live for a few years.

[update] I seem to be singling out Facebook buttons. And I do – they are the worst offenders in terms of performance. On the other hand Widgetblock works for all kinds of widgets.

Love,
Deadprogrammer

How to Help Tiny Tower Zombies Through Time Travel

Do you have a friend or a loved one who exhibits a strange fixation on an iphone game that makes them perform mindless repetitive tasks and mutter gibberish about “building new floors”, “dream jobs”, and “stocking the bowling alley” while producing cash register sounds. Don’t worry, these people did not go nuts – they are simply addicted to “Tiny Tower” – iPhone’s version of Farmville.

Tiny Tower is an insidious game: it’s designed to make its victims perform in-game routines wired to the pleasure center of the brain while keeping them comfortably numb. There’s something meditative in these repetitive tasks, they are akin to playing with prayer beads. The concept of the game also carries the religious theme, as the player is tasked with controlling the fate of “bitizens” – little pixel people, assigning their jobs and apartments. This feeling of control over the fake little world is its own reward.

After getting tired of seeing my co-workers spending their lunches hunched over their Tiny Towers I tried to put a stop to these “lunches of the living dead”. Cracking jokes about “tiny towers” didn’t work, and neither did the appeals to reason.

The most insidious part of the game is the fact that you need to spend a lot of time waiting for the items to be restocked and the floors to be built. I thought that the developers of the game would implement some kind of an independent timer, but they were lazy and used the system time. It turned out that the best way to fight the Tiny Tower zombification is to show how to change the system time (settings -> general -> date and time -> uncheck “set automatically”) so that the money accumulation and the floor building would go fast. Once that happens the whole addictive game dynamic is broken and you can again talk to your friends and colleagues.

I, for one, welcome our new social overlords

Disclamer: I thought that Google Wave was an excellent idea, so you can safely disregard my blathering here.

Here’s what I’m picturing in my head: Google has approached Facebook and Twitter on the playground. Twitter stole a piece of Facebooks lunch, but can’t really hold onto it. After a few threats and a bit of running around and a few ineptly thrown punches Google got itself into position to really clean Facebook’s clock and take its lunch. Foursquare and Groupon which earlier evaded Google’s punches in the most ebarracing for Google way possible are likely to be lunchless later. It is rather strange that Google does not go after scrawny TV Guide and White Pages – it looks like their lunches are not that tasty.

Yes, it’s just another social network. Yes, Google has a track record of failing fast and frequently (which if I remember correctly is a “good thing”). But remember, a bunch of incompetent coders received such an applause, press coverage and a whole evem some money to build a Facebook alternative. And finally mighty Skynet is doing the same thing. I think the company behind the mighty Skynet and the future parent of our robotic overlords has a chance against a bunch of compiled spaghetty PHP.

P.S. Zuckerberg and his approach to privacy creeps me out, so I have deleted my Facebook account and turned it into a blank account used only for work (writing Facebook apps, testing and such). I’m completely fed up with the character limit on Twitter – it’s nothing more than a feed from my blog. But I do want to share photos, and I do want to post shorter, non-blog-worthy thoughts. I’m really rooting for Skynet here.

My Favorite Google Chrome Extension

[Update] The latest iteration of JoinTabs extension contains ad malware. Which sucks, because this used to be a useful extension.

I open a page in a new tab. Then another, then another. A bit later I pop a new window. More tabs. Then another window. By the end of the day not only do I have a bunch of tabs, but also multiple browser windows. Hunting for one of the windows is difficult – it can be just about anywhere. The solution? Join Tabs for Chrome. It’s creates a little horseshoe icon, which when pressed moves all of your open tabs into a single browser window.

Now if I could only import all the open windows into Evernote in one key press I’d be set.

The New Blogging Manifesto – Or a 3 Ways (4 Ways) To Make Blogging Easier

I noticed that twitter sapped much of my blogging mojo, and I am not happy about that. Wasting a perfectly good photo from my iphone on a twitpic feels painful: it takes an extra effort to view it, and a triple effort to annotate. Here’s my message to Twitter: images should be seen but link urls should not. It’s the other way around, you wildly successful jerks.

Castrating my thoughts with a character limit is unpleasant as well. How much information do I need to sacrifice for the ease of posting? Twitter is like Procrustes, a Greek mythological dude who would chop off the legs of his guests to fit the length of his bed. Twitter’s procrustean limits mess with my procrastination. See, a painful pun like this is impossible on Twitter.

Facebook has much saner character limit and link/image handling, but I really don’t want to place my junk in the “walled garden” of “a host of a party who goes through the pockets of the coats his guest hang up” (I don’t remember the source of the second metaphor, but I like it a lot). I got tired of twiddling settings every time Zuck’s army decided to opt me into yet another privacy nightmare. I dumped my old account and created a new one that I only use for work-related testing and development.

So, over the weekend I redesigned deadprogrammer.com. Here are my new rules for blogging:

1) The blog post input form goes on the front page. I’m basically aping WordPress’ P2 theme. Having a post form staring you in the face instead of being a few clicks away is amazing. It changed the way WordPress developers blog, and I’m hoping it will do the same for me (it seems to be working).

2) Big images. I’m tired of small images. The screens are big, the bandwidth is cheap, almost everybody has a fast connection, my camera takes amazing pictures that lose much of their life when squeezed into 600 pixel width. Then New standard width is 1000 pixels.

3) The P2-style post form is the first step on removing friction out of posting. But that’s a topic for another post – I need to keep my missives manageable. I’ll break things up: there will be pithy posts, and medium length ones, and then there will be long David Foster Wallacian ones (I just need to figure out the best way to do footnotes).

4) Facebook and Twitter will get posts from my RSS feed. That’s all they are good for.

December 11th – National Backup Awareness Day

Something horrible just happened to Jeff Atwood aka CodingHorror.

“ugh, server failure at CrystalTech. And apparently their normal backup process silently fails at backing up VM images.”

“I had backups, mind you, but they were on the virtual machine itself :(“

It’s a times like these we start wishing for a time machine, a cosmic undo button or reversible computing.

Jeff’s blog was read by tenth of thousands of programmers and system administrators for many years. It contains information that is very valuable for these people, and represents an unthinkable amount of hours spent by Jeff. An agency rate for somebody like Jeff is between $250 and $500 an hour, but this is like appraising a priceless family heirloom.

I am not going to go through the motions of telling everybody how to backup things, about how important offisite backups are, how disk drives are fragile, how I don’t trust virtual servers, how raid is not a backup strategy, and how version control is not backup strategy, etc, etc. JWZ wrote a good article about backups.

Here are things I want to say. First, we are all not backed up sufficiently and likely have already lost data that we would want back.

I can’t find my grandmother’s recipe book (I still hope it’s only lost), my wife’s first email to me, my first web page through which she found me, my first job search web page that had a picture of the Twin Towers and said how I wanted to work there, my early school grading papers, a rare book about fishing in the Black Sea, a stamp from the Orange Republic that used to be in my father’s stamp album, the password to my very short-numbered ICQ account. A lot of stuff.

All of our digital information is susceptible to an electromagnetic pulse, fire, flood. Spinning platter hard drives are particularly bad – they have very short lifespans measured in low single digit years. CDs are even worse – aluminum inside them rots (I have a cd with a lot of outlook emails that reads as a blank filled with 1s).

So the first thing that I would like to mention is that if you never simulate a failure, you’ll never know if your stuff can be replaced. It’s not an easy thing to practice, though – restores and failovers are tricky to do.

A few jobs ago we were getting a fancy new load balancer set up. It was up and running, and supposedly we had failover: if one of the servers died, we would not even need to do anything, the backup servers would pick up the slack. I suggested that we should test it by pulling the network plug on one of the machines off hours. My boss would not allow that, saying that we could possibly break things. My argument that it’d be better if something like that happened when we were ready it would not be as bad if it happened when the actual failure would occur. When the actual failure did occur the load balancer did not switch, and we had an outage that was a good deal longer (it happened at night).

Load balancers are not backup solutions, but this story highlights an irrational streak in system administration: nobody wants to practice failure: it’s just too nerve-wracking, and a lot of hard work. It’s much easier to assume that somebody up the line did everything correctly: set up and tested backups, startup scripts, firewalls and load balancers. Setting up and validating backups and testing security are thankless jobs.

This brings me to a another point. The act of taking a backup is not risk free in itself. The biggest data losses that I suffered happened to me in the process of setting up backups. As an example I’ll bring up the legendary story about Steve Wozniak (whom I met yesterday):

The Woz was creating a floppy driver under an extreme time pressure, not sleeping much and feeling sick. The end result was a piece of software of unimaginable beauty: it bypassed a good deal of clunky hardware, and thanks to a special timing algorithm, was fast and quiet. When other disk drives sounded like a machine gun (I dealt with a few of those when I was young), Woz’s purred like a kitten. Finally he wrote the final copy onto a floppy, and decided to make a backup of it. Being dead tired, he confused the source and destination drives, and copied an empty floppy onto the one with the precious driver. Afterward he proceeded to burnish his place at the top of engineering Olympus by rewriting the thing from memory in an evening.

It’s really the easiest thing in the world to confuse the source and destination of a backup, destroying the original in the act of backup! The moral of the story?

Do as much backing up as possible, while being careful not to destroy your precious data in the process. Have an offsite backup. Print out your blog on paper if it’s any good. In fact, print out as much stuff as you can. Your backup strategy should be like a squirrel’s: bury stuff in as many places as possible (well, except sensitive information, which is a whole other story in itself).

Back to Livejournal

I did a bit of posting in Livejournal’s community related to my hometown and received more comments that I accumulated at deadprogrammer.com in a couple of years. The posts are in Russian, but I believe they will be interesting to a significant portion of my readers, especially the comment part where I debate merits (or lack thereof) of speedos, man purses, and other things.

Одесские наблюдения

Возвращение

Монета

Два вопроса

Привоз

The rest of you please enjoy these two pictures from one of the posts:

Paid ReviewMe Post: Phone Spam Filter

These days a controversial company RevieMe.com became downright unethical – they make it abundantly clear that they became a link purchasing company. On the other hand Phone Spam Filter is a site I don’t mind sharing Google juice with, so it’s a quick and fun way to add a 50 bucks to my Kindle fund. Here’s my review:

The goal of this site is pretty simple: Phone Spam Filter is asking you to snitch on telemarketers. You search for a phone number that you received a marketing call from and then complain about it. Besides getting a little relief from venting at the phone spammers, you get a bit of satisfaction from knowing that you added them to a blacklist. Nothing good can come out of this for the dinner-interrupting bastards. Meanwhile it’s a good place to find out if mysterious phone numbers that show up on your phone are from run of the mill telemarketers or not.

The even cooler thing is that they have an API that can help you block calls from this blacklist if you have an Asterisk PBX or are willing to install some Windows software and have a modem connected to a phone line. While Asterisk is pretty awesome, running Windows and having a modem connected to a phone line is a horrible idea these days – there are dozens of viruses that want nothing more than make a few 1-900 phonecalls. In the future Phone Spam Filter guys are hoping to add integration with VOIP providers.

The Phonespamfilter technology is not as cool as JWZ-endorsed audio-cock technology (“their computer’s speakers should create some sort of cock-shaped soundwave and plunge it repeatedly through their skulls”), but I guess it’s a start.

They also have sites in Australia, New Zealand, France, and UK

Link Love 1

Stack Overflow: What do programmers listen to when they write code?

The best note taking tool in the world, Evernote, finally released an API. I really, really love Evernote.

Jesse Reklaw has a new Slow Wave book, The Night of Your Life, out. You can get signed copies from Slow Wave website or buy them at Amazon. Slow Wave is in the top 5 of my favorite comics, and Jesse drew the cat and programmer graphic used in the masthead of my site.

For some reason, my former co-worker Sean posts more New York City photos than I do these days.