Friday, January 30, 2009
It’s written in Ruby, but doesn’t use Rails. It runs on my desktop. Each post is a separate file, and the publishing system renders static pages, which get pushed to the server via rsync.
This is amusing because I also liked the BBEdit/Frontier Web publishing system and was inspired by Dave Winer’s work. But I wanted to store the data in the filesystem and use version control. So, around 2000, I wrote my own similar system in Perl called Mesh. I’ve since rewritten it in Python, and I use it to manage all my sites. Like Simmons, I use rsync and git. Unlike Simmons, I use WordPress for the actual blog. Of course, I use Mesh to render the templates for WordPress.
Wednesday, January 28, 2009
I’ve owned a Drobo for a few months now. This supposed wonder-device has been nothing but trouble. It sounds like a great idea, doesn’t it, to have a unit that you can just up-size the drives in on a rolling basis. Unfortunately, in my experience, it’s simply not up to scratch.
My thoughts are along the lines of commenter Andy Booth’s.
Dan Moren (via John Gruber):
We put in a call to Apple to find out the reason why, but unless you’re new to this whole scene you won’t exactly be flabbergasted to hear that the company was about as communicative as your average sullen teenager. The company’s approach appears to be pretending that the system was never announced in the first place—you won’t find any notice of it on Apple’s site, save for the plaintive cries of users wondering what happened to it.
Hopefully this is because Apple realized that notifications aren’t that useful and it would be better to just support multitasking.
Monday, January 26, 2009
I don’t like Flash because it is responsible for the overwhelming majority of my browser crashes. I don’t like it because it consumes memory and (especially) CPU resources on my computer for almost the sole purpose of showing me advertisements, which also translates directly to reduced battery life on my laptop.
Furthermore, I resent the way that Flash rose to new heights of popularity by providing a terrible video playback mechanism that (although it largely solved the problem of video codec ubiquity) can’t reliably perform the most basic of media playback functions, such as accurately seeking within the stream, even after it’s fully downloaded.
I don’t want to boycott Flash, because there are a few sites I like that use it. But, overall, Flash means UI glitches and crashes to me. I turn off Web plug-ins in NetNewsWire and EagleFiler to avoid the crashes.
Browing the iPhone App Store at app-store.appspot.com is much more pleasant than using iTunes (via Macworld). I can use bookmarks, tabs, find within the page, etc. It seems faster, too.
Adobe UI Gripes is a blog with screenshots of Adobe’s weird, non-standard interfaces (via Jonathan Rentzsch). Adobe’s current Mac software is like Microsoft’s during the Word 6 period.
Sunday, January 25, 2009
Eight years out of 25. Think of that…fully 1/3 of the Mac’s lifetime has been spent with Mac OS X as the operating system.
Thursday, January 15, 2009
Nicolas Seriot has written a category on NSArray to add map, filter, and reduce functionality. You pass a selector and a variable number of arguments, and it performs the selector on each object in the array. Blocks are much nicer, of course, but they’re not available yet in Objective-C. Higher order messaging provides type-checking at compile time and supports more types of arguments, however the
va_arg approach is simpler than HOM and works better with selectors that return
Monday, January 12, 2009
This is all fine and dandy except that Apple, in their infinite wisdom, does not always distinguish between main thread only and not thread safe. To make things worse, they even sometimes use the term thread safe to mean what we have defined here as not thread safe.
The post has good examples of the different kinds of thread safety in Mac OS X and how Apple describes (or neglects to describe) them. However, contra Ash, I think the documentation really is trying to convey that Search Kit is thread-safe. The full text from the reference page says:
Search Kit is thread-safe. You can use separate indexing and searching threads. Your application is responsible for ensuring that no more than one process is open at a time for writing to an index.
This implies that you can have multiple threads reading and writing, and in my experience this does work. It also points to a fourth category of thread-safety: how the API handles multiple threads or multiple processes creating separate objects that reference the same shared file or other resource.
This may come as a shocker to those who (wrongly) equate this site as being pro-iPhone (or who missed my phone of the year pick for 2008), but I think that the Pre’s UI metaphor is better than the iPhone’s.
Erik Barzeski says that, although iTunes music is becoming DRM-free, the purchased AAC files are broken such that they won’t play on other systems like the Xbox 360 and Nokia N95 until they’ve been run through a program that fixes the position of the
Thursday, January 8, 2009
Junio Hamano explains three different kinds of undo in Git.
Gus Mueller wrote a short PyObjC script to implement a curved drop shadow filter for Acorn. I’m very happy with Acorn except for the fact that it relies on the OS to generate JPEG files. Photoshop generates JPEGs with smaller file sizes and greater image quality. So I tend to work in Acorn and paste into Photoshop when it’s time to save the final version of the file.
Wednesday, January 7, 2009
With iWork 2009, some of these deficiencies have been remedied. Users still don’t have the unlimited (maybe too extensive?) power of Excel and VBA, but the foundation has been duly laid in both Numbers and Pages ’09, allowing developers and individuals with AppleScript prowess to automate almost any aspect of either application.
Still, the passing of this magazine is rather historic for our young industry. Dr. Dobb’s first started publication in 1976, about the same time that Microsoft and Apple were founded. A significant slice of today’s programmers weren’t even born yet. For many people, the last few years of 64-page issues are all they have ever seen of DDJ. They don’t remember that Dr. Dobb’s Journal was a pretty great magazine back in its day.
I read and enjoyed Dr. Dobb’s from the mid-nineties until a few years ago, when it had become thinner and more Windows-centric.
Tuesday, January 6, 2009
The non-replaceable battery in the new 17-inch MacBook Pro doesn’t bother me a bit. However, as Jason Snell says:
Apple’s been pretty skimpy on licensing the MagSafe power connector to allow people to build external backup batteries. It would be nice if Apple would loosen the restrictions on MagSafe while it’s preventing people from swapping batteries.
I have two concerns about the new MacBook Pro. First, there are reports that the Mini DisplayPort to Dual-Link DVI Adapter doesn’t work very well. Second, it appears that the hard drive is not easily replaceable. This was my favorite new feature with the 15-inch unibody MacBook Pros. Removable hard drives provide more control over my data (especially if a repair is needed) and more storage options. Apple offers a 320 GB hard drive or a 256 GB SSD drive for $900 extra. I’d rather put in a 500 GB drive or a 256 GB SSD drive for $465, plus have the flexibility to upgrade as storage technology improves.
Update (2009-01-07): According to Macworld, the hard drive is user-replaceable, although not as easily as with the 15-inch. You just have to remove eight screws on the bottom panel, and this does not void the warranty.
Erik Barzeski notes that Flickr only includes EXIF/IPTC information on your original images, not on the thumbnails and smaller versions. Amazingly, the Flickr staff seems to see this as a feature. I prefer to keep photos on my own servers, but none of the PHP-based gallery software that I’ve seen supports metadata on resized images, either. I wonder how easy it would be to add this using getimagesize and iptcembed. The ATPM galleries do include this metadata because the images were resized on my Mac using sips.
Exceptions seem to encourage “controlled abort” as an error handling policy. You throw an exception, it travels up the stack, and you catch it someplace else. All of your work is unwound (you hope) and then you are left with the task of logging the error or trying something else.
The comments are interesting, too.
I think exceptions are especially bad in Cocoa as a way of handling expected errors. Catching them is verbose, so the natural tendency is to do so as little as possible. Secondly, methods don’t declare whether they raise exceptions, so there’s no easy way to make sure you’re catching all the ones you should. NSError, ugly though it is, actually seems to be a pretty good system for managing and propagating errors generated by different layers of code and even different languages.
Update (2009-01-16): An interesting post from Mark Wooding about Lisp conditions vs. exceptions.
Monday, January 5, 2009
Picasa for Mac looks and works almost exactly like Picasa on other platforms.
In other words, they ported it using a cross-platform toolkit, and it doesn’t look or work like other Mac applications. Also notable: it doesn’t run on PowerPC-based Macs.
Update: Dan Benjamin:
I’m hoping that a future version of Picasa might be designed for Mac OS X, as opposed to running on Mac OS X. Now that would be a killer app indeed.
Apple’s newer notebooks have a second Option key on the right instead of the more useful Enter key that was present all the way back to the original PowerBooks. KeyRemap4MacBook is a kernel extension for remapping this key (and others) to do what you want (via Ken Case).
Thursday, January 1, 2009
The Art of the Title Sequence is an excellent site featuring still images and QuickTime excerpts of movie and TV titles (via Geoff Tsai).