Javascript CSS Selector Engine Timeline

I'm interested in understanding all the selector engine code. In order to watch the development from the most basic to the quickest, I wanted to gather all the data points. Take a look, as you can see, Jack Slocum was definitely right when he said "selector processing power has gone from Pinto power to a Mustang GT 500."

Update: Added Base2, CssQuery1.0. Corrected jQuery launch date.
Update: Added Dojo 0.9, NWMatcher.

(Drag to navigate timeline)

Leave a comment if I left anything out.

Unobfuscating packed javascript

I started to get curious around Virb's code and wanted to take a peek at how they're doing some things.. Their global js didn't prove to be too helpful.. It was just packed and obfuscated: http://www.virb.com/_js/global.js
packedcode.PNG
In fact, a lot of javascript gets packed up these days with Dean Edwards amazing Packer functionality. This is great for delivery and optimization, but hard for people to poke in and learn some new techniques. I couldn't be so easily defeated by Virb's code.
Ryan at YAIB created a little bookmarklet widget to enable the decode functionality at dean's packer site.
Drag the reEnable link to your bookmark bar, then head over to the packer site and click the button. The "copy" textarea should now be writeable and the decode button activated.
Now copy in your packed and obfuscated code and hit decode.
If successful, you should now see some var's and null's and everything be looking a little more like readable javascript.
Head over to Pretty Printer, paste your decoded code in, select these settings...
prettysettings.PNG
and hit Submit Query.

You'll now have some nice looking javascript to inspect. Chees.

Best greasemonkey scripts ever!

Included in this package:

  • Greased Lightbox
  • Amazon Wishlist ajax delete
  • autopagerize
  • cleaning up google reader (my style fixes)
  • delicious reorganized (a nicer skin for del.icio.us)
  • flickr auto-page
  • gmail spam count hide
  • google reader preview (load destination link into google reader)
  • paul's myspace fixes (bunch of stuff that makes myspace suck less)
  • textarea resize (ctrl-enter to make a multi-line text input taller)

Paulsfavoritegreasemonkeyscripts.zip

Open the zip and open the files in firefox. say yes when it prompts you to install.

how can i learn regular expressions best?

paullll irish: how can i learn regular expressions?
paullll irish: best
designgods: Hmmm..
designgods: you're looking to learn ruby regex, I assume?
designgods: I learned from a Perl book, then moved to the Perldoc regex references. Since Ruby shares an almost identical syntax, that should be a good start. If you have perl installed on your machine follow examples in a terminal or run a .pl file to get the hang of it.
designgods: move up to larger bodies of text... find some READMEs and see what you can parse out.
designgods: finally, once you've gotten a good feeling, move to the ruby regex docs as well as other illustrative resources (Why's (poignant) Guide was a great overview, and I think he goes into regex a bit)
paullll irish: :D
paullll irish: DONE! thank you!

How to make an RSS feed where one never was

Update: Feed43, mentioned in my post, has now lost data and I'd consider an unreliable pick. You can now use Yahoo Pipes and Dapper to do the same. I recommend both.

deliciouslogo.gifDel.icio.us is has social networking, but doesn't really make those features very prominent, so you may not have noticed.
The network page is the most helpful piece of aggregation. After you friend people, their bookmarks will be aggregated there: paul.irish's network page on del.icio.us.
One feature that hasn't been implemented is notification of new people adding you to their network. I wanted to be kept aware, but I couldn't use a service like ChangeDetection (mentioned in my post here), because the entire page was changing all the time. I needed to isolate a small part of the page.

I used a service called Feed43. It takes a while to get the filtering right. Basically you have to tell the parser how to identify news items. Here's some photos that should help show how to do it:

feed43-1.jpg
feed43-2.jpg
feed43-3.jpg

In the end, I came out with a good looking RSS feed of my del.icio.us network fans: http://feed43.com/paulirish-network-newfriends.xml
Now whenever anyone adds me to their network, a new RSS item will be created and I'll see!
Score.

Automator fights Automator!

Every 60 days I get an email that tells me my free custom DNS entry (yes-ip.no-ip.org) is expiring. (Yes, I chose a very clever prefix..)
Here's the email:
expiringdns.PNG

Getting an email every 60 days and clicking a link doesn't kill me, but it'd be super nice to not have to.

So I'm using another free service to preemptively renew this host. ChangeDetection will email you any time a page changes. (So you can assume it's visiting a site regularly to check its content.)
changedetection.PNG

But what to use for the email? I don't really want it emailing me about changes to the site's footer or whatever, so I'm going to use a throwaway account. But at the same time, I know there's an email confirmation step on this site.

2Prong to the rescue!
Visit 2prong and it copies a temporary email address to your clipboard automatically.
Then the site will check (via ajax) for new email to that address and automatically display it when it comes in.

2prong.PNG

Then I just click that confirmation link and I'm all set! WOO!

How I inherited the best screenname ever.

————— 12:47 pm —————
paullll irish: hiii there.
KindOfABigDeal: hi
paullll irish: you've been sitting on my buddy list for a long while.
paullll irish: i just wanted to say hi to whoever had this screenname.
paullll irish: because its pretty effing sweet.
KindOfABigDeal: haha
paullll irish: :)
KindOfABigDeal: why thank you
paullll irish: well of course!
paullll irish: i imagine this is a secondary name for you?
KindOfABigDeal: yep!
KindOfABigDeal: i guess you are a big archorman fan?
KindOfABigDeal: anchorman*
paullll irish: honestly i heard "kind of a big deal" without actually seeing anchorman
paullll irish: then i finally watched it and was like OOOOOHHhhthatswhere its from.
KindOfABigDeal: haha
KindOfABigDeal: thats how I was with borat
paullll irish: and then i was like.. GENIUS idea for a screenname! i'm gonna register it!
paullll irish: but then! foiled!
paullll irish: some theif had already acquired such a perfect name.
KindOfABigDeal: haha sorrrrrry
paullll irish: haha you jerk.
paullll irish: :)
KindOfABigDeal: that I am
KindOfABigDeal: and I never even use it!
KindOfABigDeal: i feel bad
paullll irish: i knowwwwwwwwww1
paullll irish: its been on my buddy list for like a year1
KindOfABigDeal: do you want it?
paullll irish: omg
paullll irish: if you were that nice
paullll irish: i dont know
KindOfABigDeal: you can just change the password if you want
paullll irish: thats just the sweetest thing in the world.
paullll irish: haha
KindOfABigDeal: haha
paullll irish: you'd make my fucking month.
KindOfABigDeal: awww!  yay!
KindOfABigDeal: you can return the favor one day I'm sure
KindOfABigDeal: haha
paullll irish: you're too kind.
paullll irish: i definitely will.
paullll irish: i'll make you a custom music mix.
paullll irish: oh yes.
KindOfABigDeal: ooooo very nice
KindOfABigDeal: well the password is 2yelow4u
paullll irish: so sweet. :) awesome.
KindOfABigDeal: so i guess this will be the last time we talk haha
paullll irish: it doesnt have to be that way!
paullll irish: we can be BFF
KindOfABigDeal: haha yessss
paullll irish: Sweet.
paullll irish: okay i imagine you have a myspace.
KindOfABigDeal: yeah i love it
paullll irish: if you give me that i'll leave you comments extolling how wonderful a person you are
KindOfABigDeal: i'm obsessed
paullll irish: i'll write sonnets in your name
KindOfABigDeal: www.myspace.com/meggz122
paullll irish: hahaaha
KindOfABigDeal: thats my REAL screenname too haha
paullll irish: aaaah
paullll irish: i see. cool. :)
paullll irish: An email has been sent to the user for your request to add this user.

————— 12:57 pm —————
KindOfABigDeal: niiiiice I'll get right on it
KindOfABigDeal: and I'll sign off so that you can OFFICALLY have your new screenname
KindOfABigDeal: bye kid!

*wins!*

Myspace Record: 1 for 14238

Myspace just added a feature where their musician's flash player stays paused if you're not currently looking at it.
Now you wont hear seven simultaneous songs if you throw open a bunch of profiles in tabs.
Thanks!

Fuck you, Java


every time i see your ugly little face pop up in my system tray,
i know who to blame for my browser hanging for the past 20 seconds.
how come you are so huge and yet do so little?
can you suck less?

ps. let's see if Apollo can help rid the web of you.

i hate text-only email

i do.