Archive for January 2, 2008

Wednesday, January 2, 2008

GrabFS: The Screenshot File System

Amit Singh:

In a pinch, GrabFS is a file system that shows you a live view of the window contents of currently running applications. In a GrabFS volume, folders represent running applications and image files represent instant screenshots (”grabs”) of the applications’ windows. You simply copy a file or just open it in place, and you have a screenshot. Open it again, and you have a new screenshot!

iCab 4.0

iCab 4 is now available:

iCab 4.0 is completely rewritten and is now based on Cocoa instead of Carbon. It is much faster than iCab 3 has a polished user interface and also some new features.

It seems much improved over previous versions, although it doesn’t take long to notice that Safari is significantly faster and offers better rendering. Still, iCab is full of neat little features like this:

It’s now possible to add userdefined JavaScript code to each Web page that is loaded. Adding a userdefined StyleSheet was already possible in iCab 3. While you can only modify the layout of the Web page with user defined StyleSheets, you can modify the structure and code of the document with userdefined JavaScript. This is a very powerful feature, but it requires that you know HTML and JavaScript code very well. As an example of this feature, you’ll find the “YouTube video download” filter for the filter manager in the archive of this iCab beta. This filter will add a link to each YouTube page which allows to download the video of the page. The filter contains a userdefined JavaScript code which adds this link into the YouTube Web page.

There’s also a new version of iCab 3 that still works with Mac OS 8.5.

Update (2008-01-13): Requiem for a rendering engine.

Logging Messages to Nil

Bill Bumgarner shows how to use the private _objc_setNilReceiver() function and -resolveInstanceMethod: to log the first time each selector is sent to nil. I imagine that by uncommenting the print statement in -forwardInvocation: this could be made to work with Objective-C 1.x, but you’d get a log entry for every message sent to nil.

Update: Bumgarner shows how to do the logging using Leopard’s DTrace.

Update 2: How to do it with Instruments.

Why I Chose Git

Aristotle Pagaltzis (via Mark Pilgrim):

And between the two, git has the better repository format—it’s much more robust (designed to make changes inherently atomic) and despite all this, is simpler than the repo format of any other VCS. It’s also efficient—an entire repository with all of the project history will often take less space than a Subversion checkout. (But git needs periodic, manually-initiated vacuuming, say every couple of weeks or so, else it will grow as you work; Mercurial’s repo format is slightly more efficient and it doesn’t have that issue. But it’s not inherently robust, and observing a repository while changes are under way will reveal inconsistent data.)

ATPM 14.01

The January issue of ATPM is out:

Dave Winer’s Hard Drive

Matt Deatherage:

But this, too, is stupid. If your drive has sensitive data on it, you don't let them take it in the back room without your presence. Sure, we don't expect Apple or anyone else to go copying your hard drive when it's in for a service call, but a Consumerist investigation six months ago caught Geek Squad technicians doing exactly that, at least for porn. Both Geek Squad and Apple have policies against this, but Apple has no magic psychic employee screening that would prevent bad apples (no pun intended) from slipping through.

Coincidentally, a friend called me just a few days ago asking how to do a secure erase of his MacBook Pro’s drive. He’d just had an Apple Store look at it, they’d taken it to the back room for a while, and he’d decided that was a mistake. Next time: make a couple backups and erase the drive first.

Workplace Ergonomics

Andy Kim:

As any working position, standing up has its own problems if you overdo it. It's also not easy at first to stand up for even an hour. I now find it pretty relaxing to work standing up though. I feel more active even though programming is the least physically demanding thing you could do. And you know how you can easiily spend half an hour following Wikipedia links or reading reddit or digg? That just never happens when I'm in front of the desk standing up. I seem to get into a more committed mode of working in this position.

Like me, he’s using a MacBook Pro, the original iCurve, a Dell display (cheaper, more USB ports, card reader), and the aluminum Apple keyboard (which these days I'm liking more than the iceKey).

Google Artificially Promotes Recent Web Pages

Google System:

The problem is that you can’t rank a page that has just been created because it has no backlinks so Google artificially inflates the rankings of the recently-created pages based on historical data and the few backlinks that are detected.…If you go to Google’s homepage and click on the special logo that celebrates 25 years of TCP/IP and the New Year, you’ll be sent to the search results for [January 1 TCP/IP] and you should normally see a Wikipedia page as the top result. But the first page of Google’s results has changed dramatically in the past hours and all the results are new: most of them are from spam sites, pages that discuss Google’s logo and quote from Wikipedia.

It’s certainly a useful feature, but I wish there were a way to turn it off when you want a more time-invariant search.

Update: Jeff Harrell adds his thoughts:

If you heard about the Benazir Bhutto assassination and wanted some basic background information on her, you’d be pretty annoyed if a Google search for her name returned nothing but page after page of news accounts and blog posts about her death. In that case, sure, I could see where you’d want Google to ignore timely stuff and just show you the best unweighted search results.