Category Archives: Geeking Out

xkcd Does SQL Injection


The kid’s middle name is <IFRAME src=”javascript:alert(‘Joe’);”></IFRAME>

Disruptive Technology, Literally

I think audience powered, in-talk captioning should be a new standard feature at conferences. Check out what Sean and company did for Marco’s closing keynote at php|works.

Here’s the how-to.

Can WebRunner Help Tame FireFox Memory Leaks?

I have Gmail open in a tab ALL DAY LONG. Ditto for Google Reader. I can’t help but think that along with all of their AJAX-y goodness comes some memory leakage in Firefox.  I haven’t tested this emperically, but after a long day of browsing, the fox is happily using gigs of RAM and I’m swapping like hell. I realize most of the problem is memory leaks in extensions, but you gotta wonder about all that XHR going on in the Google apps.

Enter WebRunner, a so-called site specific browser (SSB)–yes another buzzword for your arsenal–that allows you to run a seperate browser instance apart from your main clicky-clicky. WebRunner features minimal UI and extensions: menus, toolbars, and extensions only necessary to the site you’re using. There’s a desktop shortcut to take you straight to the specific site. Finally, links to external sites open in your ‘main’ browser. Simon says your cookies are isolated as well, making WebRunner useful for development and safer browsing in XSS and CSRF-prone areas of the linkynet.

So I’m going to use WebRunner to see how Gmail and Reader handle being open for days at a time. Restarting just those ‘apps’ would be easier than saving and restoring those monstrous tab sessions every several hours.

Asus Eee PC looks promising for ebook reading.

For a while I’ve been looking for a portable device to read ebooks. I chew through a lot of techie books to pick up new languages and geek knowledge, but the dead tree versions take up a lot of room and are a pain to travel with. Most of the popular publishers like Apress and O’Reilly make electronic versions of their books available now–and most of the time at a discount, so it’s a win for me. I’ve looked at several devices, but most of them come up short when it comes to a key feature: searching. Sony, I’m lookin’ at you. The Sony ebook reader looks good for novels, but I just don’t see myself using it when I’m skimming through 500 pages of a Python reference. My next hunch was to check out a Palm or something like the Nokia Internet Tablet, but the loss of screen real-estate doesn’t seem to make those a good match. So I’ve narrowed my options down to a tablet PC, or a micro notebook, the main disadvantage there being price.

Enter the Asus Eee PC available later this year. The lowdown:

  • Runs Linux, so it’ll be hackable
  • 800×480 and maybe 1280×768 screen resolution
  • Solid state hdd, so you get 15 sec. boot times
  • wireless
  • $250, cheap!
  • plenty of cpu to run a pdf reader

The downside being it’s 3hr battery life.

I’ll be keeping my eye on this one. Any other ideas for a gadget primarily to read pdfs and maybe surf?

Asus Eee PC First Thoughts

Teaching Mashups 101 at Mashup University

John Herren teaches RailsDave Berlind announced a couple days ago that I’ll once again be doing the introductory talk for Mashup University, the structured sessions that preceed the Mashup Camp unconference. This talk is the same subject matter I covered in January at Mashup Camp 3 at MIT. The goal of this session is more of a pep-rally to get folks excited and curious about all of the great tools and tech available to the mashup community, and to get newbies acquainted to the ideas around the mashup environment. Basically, it’s a mashup State of the Union address, with a little how-to thrown in for good measure. The intro session is really fun talk to give, and I’m honored to have Dave and Doug extend the invitation.

RIP Mr. Wizard

Don Herbert, AKA, Mr. Wizard passed away today.

No one inspired me as a kid like Mr. Wizard did. I can attribute more “ah-ha” moments to that Nickelodeon show than from anything else I can remember. Mr. Wizard’s World and my cousin David peaked my curiosity to hack at an early age.

Mr. Wizard > McGyver > 3-2-1 Contact > World Book Encyclopedia > Cub Scouts.

Off the top of my head:

  • That mousetrap ping pong ball thing to teach chain reactions
  • The balloon full of H
  • Slip and Stick: friction
  • Oscilloscope
  • Measuring a speed of sound with walkie talkies, a starter pistol, and a stopwatch

I would have given up all my Lego to be a kid on his show.

Fix Safari on Windows

Yesterday I wrote that the Safari 3 beta from Apple was causing me problems. Specifically, I could not see any text. All of the text was missing! Apparently, I’m not the only one. The Apple support forum has been quite busy logging the frustrations of others. Fortunately, someone discovered a fix, and now Safari has text like it’s supposed to.

  1. Copy the Lucida Grande font files to the \Windows\Fonts directory.
  2. Rename the Safari.resources folder to something else.
  3. Try to start Safari, get an error message, and dismiss the message.
  4. Name Safari.resources back to its original name.
  5. Start Safari.

from the Apple Support forum


Safari comes to Windows; Apple makes lofty claims

You can now download a public beta of Safari 3 for Windows. My initial reaction was to cringe. The reason: iTunes. It’s a dog on every Windows machine I’ve used it on. Maybe it’s an unfair bias, but first impressions…

However, Apple makes some very optimistic claims about Safari’s “blazing performance.” Among them:

  • ~160% faster HTML rendering over Firefox
  • ~160% faster javascript performance over Firefox

And the claims get bolder when comparing against IE.

Feature wise, Safari has all the goodies I love about Firefox out of the box. The problem is that extensions are what makes Firefox really shine–well, shine and leak memory.

Essentials, every single damn day extensions:

  • Greasemonkey
  • Firebug
  • Web developer toolbar
  • Tamper Data/Live HTTP Headers
  • XPath Checker
  • Selenium IDE


  • DownloadThemAll
  • EC2/S3 plugins
  • FireFTP
  • Chatzilla

So, if I can think of my browser as just a browser and not part of my development environment, Safari could be an option. I’ll give it a fair go.


I guess beta really means beta. I get no text. Anywhere:

Build Me It – Volume I: TiddlyWiki + Google Gears

Build Me It

A version of TiddlyWiki that uses Google Gears for data storage.


TiddlyWiki IMO has been for the recent past the killer offline app. It’s a brower-based wiki that uses amazing Javascript skills to power itself completely client-side. The entire application is a single HTML file that you can save to your machine and access through a browser. The only drawback is that data is stored in the same file as the application, so as your wiki grows, so does your file. Google Gears could be used as the data persistence layer as a solution.


TiddlyWiki has a new and improved persistence and synchronization interface, so this should be easy. Right? Right??

We need a new buzzword–er, design pattern

AJAX. So many people hate the name, but we all know what it means. It’s a design pattern more than a buzzword; an easy way to symbolize a design or engineering concept. Design patterns help developers communicate concepts and often implementation with just a couple of words.

The old way:

“Guys, we need to add logging capabilities to this application. We need to be able to log to files, RSS feeds, the database, and blast email. We need to code up some classes where each of these logging mechanism can attach and listen for specific events, and then we need an interface so that all of our other code can implement notifying events to any of the listeners.”

The pattern way:

“Guys, we need to add logging capabilities to this application. We need to be able to log to files, RSS feeds, the database, and blast email. Use an observer pattern.”

Nice, huh? So, what should we call offline-capable web applications? Do we need to first split up the problem space for different operations involved:

  • archiving, downloading, caching, “off-loading”, “side-loading”
  • syncing, refreshing, uploading
  • mode switching
  • online/offline status for social apps, awareness
  • what else?

This makes sense because different applications will have different offline needs. An RSS reader will function differently than a blog composing app.

Google has done us a favor by releasing Gears. Let’s leverage everything good about open source and figure out some best practices before everyone goes off in all different directions.


Get every new post delivered to your Inbox.