Design oddities from another universe.

Man. Whose job is it to come up with this shit? Here is what this dialog box says to me:

Hey, sorry. Because the software we wrote for you is riddled with security holes, we have to turn your computer off at random... in the night. Like ninjas. Or vampires. Or ninja-vampires who come in the night to destroy your data and then tie you down to your bed and tickle your feet until you scream. And then suck all the blood out of you through... your nipples. Yeah. And maybe then we'll throw salt on your bloody nipples just for good measure, even though you're already dead. Because we hate you. A lot.

Well, I'm starting to hate you too, Microsoft. My current project requires that I use a Windows laptop on a daily basis. I've grown quite accustomed to Ubuntu and OS X over the past few years. As much as I'll harp about the fact that Apple's computer platform blows Windows out of the water when it comes to "how much proprietary do ya gots?" -- at least it works. Windows XP is the new OS/2: it's cute, it worked once, but now we need to convince our co-workers it's time to move on.

Rock the shortcuts.

Brilliant. I'm not sure how I got through life without this before: ? (or shift+/) displays all the Gmail and Google Reader keyboard shortcuts immediately on-screen. Hooray!

Devcamp Bangalore, Barcamp Pune!

If you are near the south or west of the subcontinent this college fest season, be sure to sign up for devcamp Bangalore and Barcamp Pune. Each unconference will run out of the respective ThoughtWorks office, and Sexy MF will be in attendance. If you're coming to Barcamp, let me know!


Life in India incurs smaller expenses than life in Canada. (Unfortunately, it also involves a smaller salary; my Indian salary is approximately minimum wage in Canada.) Rent is reasonable ($225/mo) and food is as cheap as you'll find it anywhere -- even to eat out ($2 will stuff you in a cheap restaurant).

But if Geoff can accomplish the $10/day February he has planned, he'll blow me out of the water.

I don't even have the energy to be angry about this anymore.

One of these things is not like the others.

in honour of russian girl

Mike gave up on his blog, but apparently someone else hasn't.

Here's one that recently slipped through Gmail's filters. You have to admit it's pretty money.

Enormous shlong drive girls mad

Your woman lived you alone along of she had done it with your friend.

By reason of the size of his machine drove her crazy with him.

Dont worry chap. At present you have good chance to Enlarge your male machine length.

Lengthen your male device size and you'll forget about troubles surely enough.

-Doctor Samantha Mcgraw

Testing strange web applications using Selenium? Take note.

Update to: Workaround for alert() and confirm() during onload()

A change in Selenium has caused this workaround to stop working for those inclined to simply copy and paste Alistair's original solution. These days, if you want to give Selenium access to alert() and confirm() dialogs your application pops up during the onload event, you'll need to reference parent.selenium.browserbot instead. As per the original solution, execute the following code anywhere (either statically in the page or in the onload event itself) before the JavaScript which pops up a dialog:

var browserbot = parent.selenium.browserbot;
if (browserbot) {
browserbot.modifyWindowToRecordPopUpDialogs(window, browserbot);

Tada! You're home free and your QAs can happily automate testing through the UI once again.

Also of note: If you're popping up alert and confirm dialogs in an IFrame (egads!), you'll need to reference parent.parent.selenium.browserbot.

Happy testing!

How to be succinct.

Regarding Singletons, Steve Yegge writes:

In my Data Structures course in college, when we got to AVL trees, my prof turned and wrote on the board, in huge, clear letters:

 AVL Trees are EVIL

...and that's all we had to learn about them. He had us implement red/black trees and splay trees instead. To this day, I have no idea how threaded AVL trees work. But if that's OK with Dan Weld, it's OK with me.

But now I know how he felt.

Steve, Steve. Follow Mr. Weld's example. Or you could just point people toward "Test-Driven Development By Example", since Mr. Beck has already covered this one pretty well:

"How do you provide global variables in languages without global variables? Don't. Your programs will thank you for taking the time to think about design instead."


At lunch the other day, Anay and I were lamenting the sharp bug-detection skills of our team's Business and Quality Analysts over dry, flavourless rotis. At one point, while defending a feature he hadn't implemented yet against accusations of systemic circumvention, Anay blurted out, "That's because you haven't filed a bug for it yet!" (With the standard XXL Anay Grin plastered on his face, of course.)

However, our humour inadvertently led to revelation. The differences described by experts between "defects" and "features" are purely semantic. And after considering the application of this theory wholesale to our current project, we arrived at a much juicier solution: Bug-Driven Development. Submit a bug, have it implemented by our crack team of developers.

Subversion is here, but we'll probably move to Google Code when we write... some code. (I tried making an issue tracker on Lighthouse... but lo-and-behold! It sucks. Thanks Web 2.0 for providing the world with a bunch of over-simplified applications written by 15-year-olds which are only free when they're totally useless. I'm not bitter.)

Anyway. No software exists yet, but you are welcome to submit bug reports. No development environment exists yet, so bug reports are welcome as comments on this blog post or emails sent to me. A good first bug report would be the lack of a bug reporting system. Maybe the software should be a bug reporting system? Oh, we also don't have any developers yet, so another suggestion for your first bug is recommending the assembly of a team.

Enough hints! Welcome to Singularity: The First and Last Real Software Ever.