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

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.

Gmail and tracking numbers

Hunting around for UPS, Fedex,USPS, and Japan Post tracking numbers in Gmail is no fun. I really wish there was a way to aggregate all the shipping numbers in a single Gmail plugin which would at a glance tell me where all the crap that I ordered is at any given moment. Google already knows how to tell a tracking number from all other strings, and there are apps for iOS that aggregate tracking (unfortunately you have to manually type in all the tracking numbers). A Gmail plugin that would keep track of tracking numbers would be great – maybe anyone with a bunch of mythical %20 percent time at Google will implement this…

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.

Hunting Heads and Developing Back Ends

I’d like to share with you a few thoughts about tech recruiting. This is not a post about how to write resumes, read resumes, ask or answer tech interview questions. Enough is written on the subject by people who are better at all of this than me. No, it’s about that email that arrives in almost every developer’s inbox about “a full-time, permanent position with a very competitive salary” for “a very prestigious company located in mid/down/up-town” which is looking for “an alphabet soup of technologies”. Half the time it’s a phone call. These happen during the times of boom and bust in the tech sector, although with varying frequency.

Now, people who are not programmers would probably think that this is spammers or scammers who will ask for a fee. Well, there is a fee involved, but this is not scammers: every time there’s a reasonably well paying job involved. A huge number of programming positions gets filled this way.

There’s always a shortage of decent software developers, project managers, system administrators and allied tradespeople. This was true back when I was starting my career, in 1997, but it only got worse. First of all the cost of running a startup came down from hundreds of thousands of dollars to thousands, and many talented programmers with ideas, tolerance of Ramen-heavy diet, slumming, and a little risk exited the corporate workforce to build url shorteners and travel sites for hipsters. Top notch people with kids and/or love of brightly colored furniture and fridges stocked with fancy sodas were vacuumed up by Google, Microsoft, Facebook, Yahoo and other modern Xerox Parc-wannabees. The hedge funds sucked in all those who are good at implementing complicated formulas and algorithms in code that can make a Kessel run in 12 parsecs or less.

The biggies look for a healthy mix of specialists, but they can easily afford to hire jack-of-all trades hackers. Everybody else usually looks for a person who has proven experience with a certain “stack” – an alphabet soup of languages, operating systems, and servers. Sometimes stacks are ageless like COBOL, CICS, DB2 – even today typing it into dice.com brings up 155 results. Some come out of favor: LISP – only 16 results though. Somer are old standbys: Php MySQL Apache – 370 results: C# SQL Server IIS – 439 results. Some, like RoR are up and coming – 93 results.

If you are relatively young(cheaper that way) and have done some work with a fashionable stack your phone will be ringing weekly with recruiter calls in the dreariest days of a tech bubble burst. If you are a specialist who deals with a particularly gnarly piece of hot tech – it will ring a few times a week.

Now here we come to a somewhat interesting phenomenon. Most of the time the person calling is a “headhunter”. Here’s what’s happening:

Web department in company Webco Enterprises has an opening. It could be caused by a number of things, but most commonly

1) after gettig tired of incessant complaining of the VP of Web Things, the Bean Counter finally agreed to budget in Y dollars for another headcount.

2) an experienced headcount who was making Y dollars accepted an offer of Y + $30,000 + an office with a door from company iWeb 2.0 and left.

So here is VP of Web Things with a budget of Y dollars. She’s swamped with work. In the next team meeting she tells her nerds to ask all of their friends if they know somebody and offers a referral bonus. Next she puts together a typical job ad complete with technological alphabet soup and takes it to the Master of HR. The Master of HR posts it on the company intranet, on the corporate site and on monster.com, dice.com, etc. Next VPoWT goes to the same sites and looks for candidates who posted their resumes there. It’s mostly drek, and the one person who might be ok wastes a lot of her time because he has another offer for Y + $10,000 from another company.

Now more desperate, she starts using “headhunters”. They send a couple of somewhat crappy candidates, followed by one barely ok one, followed by one who’s good enough. After a little song and dance the good one accepts Y dollars per year minus – 15% that silently go to the recruiter. The next few years he’ll be getting modest raises and maybe even a bonus or two that will not break the budget: the Bean Counter approved Y dollars, and it stays in the budget like that, and the headhunter only gets paid once.

Now, here’s what was happening on the other end: headhunters start pounding searches into their computers. LinkedIn, all recruiting sites, internal databases, etc. They might not understand what those letters in the alphabet soup mean, but they sure can try to match them up with what comes back from searches. Then they start shooting in the dark – it’s easier to get people who are currently looking for jobs, but it’s the shallow end of the pool that VP of Web Things already explored somewhat. They start pinging people who are working at the moment – this is where the good heads are.

Finally someone hunts up the the right head for VPoWT’s headcount and pockets the 15% of a yearly salary of that head.

Now, here comes the interesting part: most of these headhunters who are calling are trying to line up publicly available job listings with people on LinkedIn. For instance, I recently received two emails about a rather awkwardly named position “Director of Back End Development” (second recruiter spelled it “Backend”).

I looked it up on one of the recruiting sites (I think dice.com), and it was an old and infamous pre-dot-com-boom company that chose such a unique job title for what I do for a living. It was literally the only one with that creative title. I could have applied directly, bypassing the 15% headhunter’s fee. This is the reason why headhunters rarely name the company name.

In the past, through my random and numerous connections I’ve heard stories about what the setup is like at that place, and it’s a doozy. I’m pretty sure that the person who will take that job will take a lot of development up his or her back end.

The moral of the story is this: it’s easy enough to bypass recruiters – they are just engaged in arbitrage: the hiring manager is busy, the potential headcount is not even looking. That 15% is OPM (other people’s money) to the hiring managers, but not so much to the headcounts.

wi.nr

A couple of my friends created a new url shortener. Wait, stop booing. There’s a twist – it has the coolest url ever – http://wi.nr. And you can win something or other by just using it. And you get statistics. Well, I guess it’s about it. Did I mention these are my friends that are doing that?

Why should you care how short your url is? Well, it’s basically because the retards at Twitter don’t allow for inline urls (if they will one day, url shorteners would die like they deserve to), and if you want your stuff retweeted, you need to leave a couple of characters for RT and the username. Of course url shorteners are evil in general, and people at Twitter are incompetent technologically, but very lucky. And being lucky is more important than being competent.

The funny thing is, I absolutely legitemately won their first $5 Amazon gift certificate.

8 Pieces of Architectural Advice for CMS

I have some advice for those in the business of building large websites with content management systems.

1) Do not implement search yourself.

Your CMS sucks at search, and so do you. I see this again and again and again. Everyone is implementing search on large websites instead of using Google. Developers are afraid of looking unprofessional. Managers are answer yes to the question “do you want advanced/faceted search” (the correct answer is no – user’s don’t like it and don’t use it). As a result a lot of resources (both server and developer) go into implementing something that Google is awesome at. Even some very smart people, like Jeff Atwood roll their own search, and their users end up going to google.com and typing “foo site:stackoverflow.com”.

Users are very happy with Google CSE, and don’t mind the text ads. Those text ads – well, that’s revenue that you would otherwise would not have, however small this is. If you absolutely can’t do Google CSE – buy their search appliance. If you can’t do that either – well, you better be using Solr.

2) Do not implement comments yourself (unless comments are what you do for a living).

It is extremely difficult to get comments right. Users absolutely abhor comments. Spammers – well, they love it. Luckily, you can just go and get DISQUS to do all the heavy lifting for you. The time saved on using DISQUS can be used on building something else, meanwhile users absolutely love leaving comments through it, while spammers hate it.

3) Physically separate your admin interface from the stuff that is going to be used by your users.

Maciej Ceglowski has some words of advice about not having your blog hacked: cache your output in flat files and hide the admin interface. The benefits of this are tremendous: cached files are fast and secure. You will need to do some fancy footwork to serve up parts that change a lot, but you can do it the same way DISQUS and Google CSE do it – through the magic of AJAX.

4) Sanity check: calculate the amount of RAM in the home computers of all of your interns. Compare that to the amount of RAM in your server farm. Who wins?

5) Use a CDN and/or caching proxy, don’t be cheap. These things will save your butt when Yahoo and Digg will come a-knocking at the same time. I’m not even going to mention Memcached – you can’t get big without it at all.

6) Fight WYSIWYG editors. These things are the worst. They are the Devil. They are a security hole. You never get what you see. People paste from Word. Do I need to go on?

The best middle of the road solution is something like Markdown.

Do not underestimate the user’s ability to learn a few simple rules. When I worked at TV Guide there was this movie database application. Very non-technical editors were using a very scary-looking Unix-based interface at an amazing speed. When I rewrote it as a web interface, it became more “user-friendly”, but they could not enter stuff as fast as before.

7) Make sure you have good backups

8) I know you won’t be able to follow my advice, I know I can’t either. Life is a constant compromise.

Cognitive Filtering and Bayesian RSS

I hope one thing from the future will become popular in 2009: cognitive filtering. If the Internet was Dr. Dorian from the hit tv show “Scrubs”, I would be Dr. Cox with his list of things he cares very little about.

I got this idea from a science fiction book. In John C. Wright’s Golden Age Trilogy the singularity happened and people can upgrade and back up their wetware in any way they can afford. They still had the same problem that Henry Kuttner described in his short story “Year Day” – an overbearing amount of very innovative ads that masquerade as information and other spam. The trick in Golden Age was cognitive filtering: configurable software that removed any manifestations of anything an owner considered unpleasant: ads, sounds, pictures, symbols, and even people.

I like Twitter, and I like Robert Scoble. But I am tired of Robert’s relentless posts about friendfeed (sometimes I’m not even sure if he works with me at Fast Company or at friendfeed). Filtering this out would not be too hard – I could just ignore any post that has “friendfeed” in it. In fact, a Bayesian filter for Google reader, Facebook, and Twitter after a bit of training could do this automatically: I’d just flag posts that annoy me and the filter would analyze the words in the post, figure out which ones occur together more frequently in the posts that annoy me and hide future annoying posts based on that.

To take this a bit further, I would also like a Bayesian filter that would find me good posts from the firehydrant rss flow based on the ones I already like. There seem to be a few of these out there, but I find it hard leaving Google Reader.

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: