I just released a new version of SafariSource which supports Safari 3.0 last night. This morning I received a Czech localization from Jakub Formanek, so I just released SafariSource v1.7.1. with the new localization.

So if you’re using Safari 3.0, or if you’re Czech, go ahead and download SafariSource. If you’re using Safari 2.x, please let me know it still works as I can’t test that with 3.0 installed.

Comments Comments Off on SafariSource update

tcltumblr 0.1 is available for immediate use. It is a Tcl library that provides access to the Tumblr API.

Download

Comments Comments Off on tcltumblr 0.1

Am I alone in thinking that Safari should be able to show web pages for upcoming iCal events in its bookmarks pane, just like it does for Address Book and Bonjour? The way it works right now it’s quite annoying to open up an event web page because I have to launch iCal first.

Comments Comments Off on Safari bookmarks and iCal

There’s a new site that’s been getting really popular lately called Twitter. If you haven’t heard of it, it’s basically a status message, like IM, but actually usable. Twitter provides XML/JSON feeds, as well as a way to post updates over the web, over IM (using Jabber), or over SMS. You can also receive “tweets” (Twitter updates) that your friends posted with any of these mechanisms. There are also various applications (such as Twitterific), if you want yet another way to send/receive tweets.

By far the most powerful aspect of Twitterific is the SMS support. I have free SMS with my Sidekick data plan, but I’ve never had a reason to use it before. But now I can receive tweets on my phone all day long, and send my own no matter where I am. For example, I sent this tweet while in class.

If you want to keep track of what I’m doing, just take a gander at my profile. And if you sign up for your own account, you can add me as a friend to receive my tweets. If you add me and I recognize your name, I’ll probably add you back too.

There’s a BBC News twitter profile. How cool is that?

Comments Comments Off on Tweet Tweet

After months of absence, Typosphere has returned from the dead!

We migrated off of Planet Argon and onto DreamHost, where we should have more control. We also upgraded to Trac 0.10.3 and turned off anonymous editing (users now have to register to file a ticket). This should (hopefully) prevent the issue that lead to Typosphere dying in the first place.

One important thing to note is that as part of this process, we also moved the subversion repository. Unfortunately, the old repository was hosted as an svn:// URI using the typosphere.org domain, which meant there was no way to preserve this URI (since we can’t run long-lived background daemons on DreamHost). The new URI uses http and a new subdomain, so if necessary we can move the repository without moving the website.

The new repository URL is http://svn.typosphere.org/typo/trunk.

Read the rest of this entry »

Comments 3 Comments »

Haml is a new markup format for Ruby on Rails apps that just hit 1.0. At first glance it looks pretty odd, but it turns out to be really easy to write in, and it’s shorter and, actually, easier to read than the equivalent eRB.

I think I’m going to convert Typo to use Haml for all its templates. I already did Azure’s layout file and it was pretty simple.

Comments 2 Comments »

My mother (Sara Ballard) mentioned to me today how the Concord Women’s Chorus website isn’t listed by Google. I thought I’d link it here to try and help out.

The Concord Women’s Chorus is an excellent women’s choral group here in Concord, MA. They have performances in the Spring and in December. If you live anywhere nearby, I encourage you to check them out.

Comments Comments Off on The Concord Women’s Chorus

Update: This code was written pre-Leopard, and as such doesn’t run under ObjC 2. See JRSwizzle for an updated version that runs under Leopard and Snow Leopard.

Method Swizzling is one common technique of people writing hacks, such as Safari Plugins. Unfortunately, it’s always suffered from a flaw, wherein swizzling inherited methods affects all classes which inherit that method (including the base class), rather than the intended subclass. This problem is discussed on the CocoaDev Method Swizzling page.

As part of writing YubNubSearch, I decided to solve this problem.

First I looked into dynamic subclass generation + posing. Unfortunately, this has a big problem. In this technique, calling the original implementation would naturally be done through a [super foo] call. Unfortunately, when the compiler sees super, it hardcodes a reference to the superclass at which to start the search. This means you cannot write this code in, say, a category on NSObject, then pull up the IMP into a dynamically-generated subclass and have it work. So that throws out that idea.

The other idea I had, which I eventually went with, was to copy inherited methods into the subclass that you wish to swizzle, before swizzling. It turned out to be fairly easy, and still has the same semantics as the old, flawed technique for calling the original implementation.

You can download my implementation here.

Comments 6 Comments »

I just polished up my SIMBL plugin for release. It’s called YubNubSearch and it allows you to use YubNub as your default search engine in Safari.

You can get it here.

Comments 5 Comments »

As of this afternoon, I am now an official committer for MacPorts.

For those not in the know, MacPorts (née DarwinPorts) is an open-source package manager for Darwin (although it should work with other *nixes, it’s really intended for Darwin). I’ve been using it for quite some time, and even contributed a few Portfiles a while ago. Well, I started poking at it again recently, and then jmpp on #macports convinced me to apply for a commit bit.

Now I just gotta do something to justify this shiny new bit.

Comments Comments Off on Newest MacPorts committer