These are my actions. These are my words.

Fixing a small iPhone annoyance…

Update 06/16/2009: With the release of iPhone OS 3.0, this tip is no longer necessary. With 3.0, simply tap and hold any link to bring up an option to, among others, “Open in New Page”. I’ll leave this up for posterity, and for those of you that have not upgraded yet.

After experiencing and thoroughly enjoying the iPhone for the weekend, I’ve found that one of my biggest gripes is that there’s no “Open in New Tab” command, which makes all the sense in the world since there is no right click anywhere in the OS.

Still, one of my favorite hobbies is to peruse Daring Fireball for the latest in Apple news, and open each linked article in a new tab behind my active tab so I can finish reading the site. It got to be too tedious to do this with iPhone, since every time I clicked on an outside link, it took me completely out of the site, and completely out of the experience.

So I took it upon myself to jerry-rig up a solution. I’ve created a small bookmarklet that grabs all links in a page, and forces them to… um, open in a new window. Wait! Don’t throw that tomato at me yet! Normally this would be absolute madness to unleash this upon the web, but iPhone in its infinite simplicity treats target=”blank” as a trigger to open a new tab. Tiny annoyance solved!

The easiest way to do this is to open safari, and drag the bookmarklet (linked below) to your bookmarks bar. Then just sync to your iPhone. Now you can trigger new tabs to your heart’s content.

Imagine that, a useful application of target=”blank”. Watch out for flying pigs.

New Tab Bookmarklet:

Open in New Tab

Update: I’ve added a bookmarklet that does the exact opposite, in case you need an undo. (I needed an undo):
Open in Same Tab

For Example’s Sake:

Daring Fireball

Daring Fireball - Tabbified

My iPhone Adventure

The first thing I should let you know is that I am posting this from my brand new iPhone.

The second thing I should let you know is that I would do it all over again.

The level of enthusiasm in that line last night was absolutely off the charts. It completely invalidates the notion that Apple geeks are immature, pathetic or vicious. I could not have met a more amazing cavalry of people last night. Each united for a single purpose. A vast majority had never seen each other before yesterday. Yet minutes after joining the line, you’d have thought long lost brothers were reunited.

My iDay Flickr Pictures

Back on my PowerBook, and my story begins around 1:00pm PST. I was planning on showing up to my local Apple Store around 3:00pm or so. But a quick search around the ‘net quickly changed my mind, as I saw scores of people lined up all over the U.S. As flashes of “iPhone — Sold Out” signs whizzed past my thoughts, I raced over to the Glendale Apple Store, hoping to see ~50 or so fans in line. And that’s what I ended up seeing. As I settled behind the last person in line, he turned around, smiled a bit, and pointed towards the segmented line down the mall. Embarrassed, I apologized and made my way down another ~50 people… and another ~50 people. Eventually I landed at the true end of the line: outside, in the parking lot, 165 people away from an iPhone.

It turns out I didn’t need to spend five hours in line as there were plenty to go around. But had I waltzed in and waltzed out I would have missed five hours talking all things Apple with fellow Apple brethren. The experience would not have come close to the fun I had yesterday as we discussed the latest and greatest, and Apple’s next move. (Incidentally, nearly everyone said they’d be there for the Leopard launch).

I got my iPhone around an hour after they went on sale. Fittingly, the seven of us who bonded the most got to walk into the Apple Store as a group to massive cheers from Apple customers and Apple employees alike.

And like hundreds of thousands of us, I raced home immediately and ripped open the packaging. Aside from the need to update to 10.4.10, there were no iPhone horror stories emanating from my house. Five minutes into the activation and I was ready to go. AT&T confirmed just minutes later and I placed my first call, as nervous as my first Christmas to a groggy sister in Los Angeles.

She was not it the mood to talk.

This experience is why I am an Apple fan. Say what you will, Apple “gets” it. Apple “gets” us, the consumer as well. It’s the experience, Corporate America.

A recent conversation with Verizon

Me: Hello, I’ll be canceling my account towards the end of the month, and I want to make sure my transition will be smooth.

Verizon customer service rep: Ok, may I ask who you are switching to?

Me: AT&T.

CSR: Oh. And can I ask why you’re switching?

Me: The iPhone.

CSR: …oh.

You’ve never heard a more speechless customer service rep. Nice of you to pass up the iPhone, Verizon.

Remote 1.1

I’ve just updated my Remote script to version 1.1

New in this version:

  • Faster, safer implementation of callback functions
  • Now supports uploading files via Ajax(ish)

Check out the sample code for more.

Remote: A cross-browser XHR/JSON function.

I grew tired of re-scripting my remote calls, so I’ve built a global function that can handle whatever I throw at it.

Remote is a global, lightweight XHR/JSON function, designed to handle cross-browser remote scripting.

Read More »

HTML vs. XHTML: Which is better?

If you are a client-side developer, this question has without a doubt been a topic of discussion. Should you use HTML, or XHTML? Does it matter? The answer is quite verbose, and takes a lot of consideration to determine:

Read More »

Review: Bulletproof Ajax

Having previously declared my undying love for all things Jeremy Keith (that sounded straighter in my head, I swear),  now comes word of Jeremy’s call-to-action.

…Bulletproof Ajax is not a book for seasoned server-side developers. It’s for front-end coders who already know markup and CSS with perhaps a smattering of JavaScript. If that sounds like you, give the book a read and once you’re done, post a review…

Wilco, Galactica.

Read More »

Firebug bundle for TextMate

My two most indispensable web development tools are Firebug and TextMate. I’m sure the same goes for many web developers the world round. Firebug brings with it a complete set of debuggers and problem-solvers that is unrivaled by any other application. And TextMate is the little text editor that could (and does). It’s versatility is unmatched. I constantly find myself shuttling between the two in the eternal edit/debug dance we webbies know all too well.

It seems odd to me that there isn’t (as of yet) anything out there that brings these two fan favorites together. If any two applications are deserving of a mashup, it’s these two. So I said to myself, “Self, why not build your own?”

A few hours later, I had myself a bona-fide Firebug bundle for TextMate.

Read More »