The saddest part of the iPad story: No root

Like every other self respecting geek, I spent the afternoon eagerly watching live updates from Apple’s iPad keynote. At the end of the presentation one thing stuck with me: No root access. Its not a Mac.

The iPad seems to be under the same sort of draconian control as the iPhone is.  That might be forgivable on 2.4 inch wide phone, but for a device which is essentially a $500+ keyboardless netbook with a very slick interface, I need to control it. I can edit spreadsheets on it, give presentations with it, hook it up to a keyboard, but I can’t open up a terminal and type ‘ls‘?

I don’t know of any other general computing device with so much potential that doesn’t give users full access.  Its the same walled-garden as the iPhone, same app store review process, and same anti-competitive practices.   Its a very mobile computer, without a keyboard, and without root.

Yes it will be jailbroken, but why should we have too?  When I buy a netbook, I don’t open up google and start figuring out if my software version has an available exploit in it, all while crossing my fingers hoping it doesn’t void my warranty.

This device could almost meet Paul Graham’s description of handheld device developers could program on. I’m sure it wouldn’t be ideal, but geeks could develop software for an iPad on an iPad.  Paul describes this as a great way to get developers to fall in love with your platform.

Except Apple won’t let that happen.

(Note: Information is still tenuous at this point, if anyone has corrections let me know at

Stop it: “email AT domain DOT com” is making a spammer’s job easier

Its pretty well established that “email AT domain DOT com” offers only marginal protection from spammers getting your email address, but sometimes, it makes it even easier.  Look at this google query for “at gmail dot com” restricted to

From a search like this I can harvest thousands of reliable emails off, or the general internet, using only the search engine context.  In fact, I did, here’s 500 gmail addresses from LinkedIn with the last few letters removed.

Search engines don’t index special characters, so an email of the form “” is protected from this sort of discovery.  The basic trouble is “email AT domain DOT com” is completely indexed by search engines, and its unique enough that whenever you see “at domain dot com”, you know its part of an email address.

If you really want to evade an email harvester, put up an image of your address, use some css/js obfuscation techniques, or encode your email in a simple statement like ‘my last name at’

Personally, I already get enough spam, and gmail provides excellent enough spam filters, that I don’t mind spreading my real email address around anyway.  Go ahead, send me a note at if you wish!


Some iDoor source code…

I’ve  gotten enough requests for the code I figured I should just release it into the wild.  Use this only as an example of how to do some fancy things with phidgets, don’t use it as an example of how to actually write good code!  You can checkout the nasty threads and the door protocol that requires every message starts with ‘awesomesauce’!   Enjoy.


iDoor – iPhone Controlled Hydraulic Door

Opening up the door to your dorm room?

There’s an app for that.

Here’s the story of iDoor, the iPhone controlled hydraulic dorm room door.  Enjoy. Credits to Greg Schroll for most of the hardware.

Life at MIT can be tough. With all the problem sets, and projects taking up time, when I come back to my dorm room to crash, I don’t want to waste time opening doors myself! That’s why my room is outfitted with an iPhone controlled hydraulic door opener and unlocker.  Just tap the “iDoor” app on my phone’s home screen, and the door opens for me.  Its 2009 after all, about time we stopped carrying around shaped bits of metal to open up locked doors.

All the apps I need

Chris Varenhort’s iPhone has one special app…

When security isn’t my chief concern, I can even ditch the phone altogether and just give iDoor a ‘secret’ knock (not so secret any more) and let the vibration sensor trigger the door opening.  See the video above for the full run through.

Read more »

Top 5 reasons why graduating from MIT, is like dying of a terminal illness.

Update: How did this become my #2 google hit?? For you googlers I see, why don’t you go somewhere else.

5. As your final hour approaches, you bequeath your belongings to charity and those around you.
4. You spend your last days surrounded by friends and family.
3. You’ve been in pain for so long already, that in the end, you’re happy to go.
2. There’s an elaborate ceremony with inspirational messages to mark your passage.
1. You know you’re going to a better place.

Adobe, why ZIP a DMG?

Adobe Fail
Is the %0.3 smaller size really worth it?


Is a new year! The end of the Zuneapocalypse, and the year Quebec will now be one second ahead of the rest of Canada.

For 2009, I’m going to fill this up with more interesting content then this.

Automatic door opener switch!

Found this laying around somewhere…sorry for the isight camera picture…

apparently its wireless, and pretty darn simple at that. Such a small board, and a 9v battery. I think I’ll turn the button into a button to operate my own door, and then use the board to make myself my own wireless automatic door opener.

Facebook phone numbers onto my phone!

So, I got a new phone recently.  Not wanting to awkwardly type numbers in, or worse yet, ask people, I wrote a little script to convert what I copied from the facebook mobile phonebook to a nice CSV file.  I then used BitPim and bluetooth magic to transfer the numbers directly to my phone!  Viola, hundreds of phone numbers on my phone in a few minutes.  The perl script to make the conversion is below…


#for file slurping
undef $/;
$line = <INPUT>;

#get ride of empty lines
$line =~ s/\n\n/\n/g;

#make the numbers pretty
$line =~ s/([0-9]){0,1}[\-\.\)\( ]([0-9])/$1$2/g;
$line =~ s/([0-9]){0,1}[\-\.\)\( ]([0-9])/$1$2/g;

#we only want mobile numbers (ending in M)
$line =~ s/([0-9])M\n/$1\n/g;
$line =~ s/\n([0-9])+[A-Za-z]\n/\n/g;

#get ride of the letter headings
$line =~ s/\n[A-Z]\n/\n/g;
$line =~ s/\n[A-Z]\n/\n/g;
$line =~ s/\n[A-Z]\n/\n/g;

#Comma delimitation!

$line =~ s/\n(.+[a-zA-Z])\n([0-9]{1,})/\n$1,$2/g;
$line =~ s/\n(.+[a-zA-Z].+)\n([0-9]{1,})/\n$1,$2/g;

print “$line”;