Archive for September 10, 2007

Monday, September 10, 2007

Coda Toolbar and the Three Pixel Conundrum

John Gruber:

The takeaway is this: Mac developers shouldn’t merely copy Apple’s UI trends from head to toe. If you can devise something better than what Apple is doing, Apple might copy you, and you’ll be the one setting the trend.

Just make sure you have good reason to believe that your design is sufficiently better, because most of us aren’t Cabel.

Creating iPhone Ringtones With Fission

Paul Kafasis:

Because Fission can losslessly edit AAC and MP3 files, it’s always been great for creating ringtones. Using Fission, you can crop audio down to your desired snippet, fade the ends in and out, and save, all in just a few clicks. Add the files to any phone that accepts MP3 or AAC audio files for ringtones, and you’re all set.

I finally have a reason to edit audio.


RegexKit is a new Cocoa wrapper for the excellent PCRE regular expressions library. I’ve been using my own PCRE wrapper since 2002, so I’m not likely to switch, but if I were starting today I’d probably use RegexKit. It has unusually good documentation, and in addition to the normal class-based API there is a concise interface that uses only categories and reference parameters.

Fix the Leopard Folders

Brandon Walkin:

All of the aforementioned usability issues serve to make it very difficult for users to differentiate between folders at a glance and the poor aesthetics prevent the folders from fitting in with the Mac OS X experience. It’s interesting because when designing there are often trade-offs made between aesthetics and usability. Either aesthetics improve at the expense of usability or there is an improvement in overall usability at the expense of aesthetics. In rare cases, with excellent designers and exceptional attention to detail, both dimensions can be very strong (e.g. iPhone UI). In the case of these folders however, there was a large decrease in both aesthetics and usability. There are not many upsides to this design as far as I can tell.

The Case of the Missing Stack Frames

Blake C.:

The problem is that stack traces don’t always display every stack frame in the call chain, which can make it difficult or impossible to determine the flow of control that led to the crash. Let’s look at a demonstration of the problem, its causes, and its solutions.

Git Stash

Wincent Colaiuta:

Git 1.5.3 just came out a few days ago and one of the greatest things about it is the addition of the git stash command. This addresses one of the most annoying workflow obstacles that I run into many times each day: working on a particular task that may take minutes, hours or even days, and stumbling across something else that could be fixed along the way in a matter of minutes.

A Stunning Post From a Microsoftie

Fake Steve:

I suspect this really is the Microsoft coder writing this, and honestly, if so, it’s a good sign for Microsoft. The old Microsoft was full of guys like this, guys who said what they believed and didn’t give a shit what you thought and if it cost them their jobs, well, what the fuck. That, more than anything else, is what Microsoft was all about in the early days and it was the biggest reason that Microsoft succeeded. Yes, they also got a monopoly handed to them by IBM. Before you go rushing to chalk up all of Microsoft’s success to dumb luck, however, keep in mind that a lot of us in the Valley, if we were being truly honest, would have to admit (maybe not publicly) that we know plenty of companies that, handed the same monopoly by IBM, would have managed to fuck it up. We know those companies because we ran them.

Leopard Dock On The Side

Paul Kafasis:

I’ve yet to see any other comments on the Dock being used on the side of the screen. This may be because those who’ve tried it have been stricken instantly with vertigo and had to go lie down for a bit. I’m powering through the nausea, however, in an effort to make you sick too.

Cocoa Graphics Tutorials

More from Andy Finnell:

Penelope Beta 1

Adam C. Engst:

It was nice to see a few old friends from the Eudora interface, such as a Transfer menu that makes it easy to file messages into deeply nested mailboxes, type-to-select in mailboxes, and most notably, the Option-click feature to select similar messages.

But realistically, Eudora 8.0.0b1 is by no means ready for normal users yet.

Chris Lawson:

I knew Eudora. I used Eudora. Eudora was a friend of mine, and you, sir, are no Eudora.

Infinity Data Systems:

Odysseus is the code name for the Eudora successor that Infinity Data Systems is working. We have always felt that Eudora was a best-of-breed email application for both platforms, Mac OS X and Windows. Easily one of the oldest email applications, it still offers features either not found in competing applications or, if found, not implemented as elegantly.

Serial Number URL Scheme in Cocoa

Bob Warwick:

In this post, we’ll walk through the steps of creating Simple Serial, a Cocoa application whose sole purpose in life is to tell you if it’s registered or not. When a user goes to register Simple Serial, they’re sent an email, including a link. When they click the link, OS X launches the application and passes along the correct registration information to it. The user has never had to type in a serial number.

My applications have been using similar URL schemes since January 2006, and they’ve really helped cut down on errors during serial number entry. In addition to providing the URLs in the order confirmation e-mail, I recommend including them on the order confirmation Web page and when customers look up their serial number. Some people get really confused if their e-mail program doesn’t recognize your custom URL scheme, but I think this is far outweighed by the benefits.

The Strongest Bargaining Point

Jim Roepcke likes Numbers and Pages:

It’s a great feeling to know The Omni Group, Ranchero/NewsGator, Delicious Monster and Nintendo are the most important software companies in or near Seattle for me. (apologies if I’ve missed someone)

Steven Poole switches to WriteRoom:

For the first time, I no longer have a copy of Microsoft Word installed on either of my computers. That’s some change. I wrote my first two books, and many hundreds of articles, in Word. But I’m writing my third book in an inexpensive yet wonderful piece of Mac-only software written by a single person instead of a “business unit” at Redmond. Scoured of Word, my computers feel clean, refreshed, relieved of a hideous and malign burden. How did it come to this?

Quick NSDate Warning

Andy Kim warns not to call -[NSDate laterDate:nil].

MarsEdit 2.0

For a long time I just didn’t get the point of applications like MarsEdit. I think I understood the arguments for such software, but I didn’t feel a need to actually use it. Web-based interfaces weren’t too bad, and I needn’t use them for the actual composition, anyway. Why add another application into the mix? Well, Daniel Jalkut recently released MarsEdit 2.0, and I really respect his work, so I gave it a try. Now I’m hooked. Some things that I thought might be problems ended up being non-issues, and the whole draft-edit-post flow is much smoother than I was expecting. Since I’m not very familiar with previous versions, I’m not sure whether I’ve actually been missing out all these years, but I’m certainly glad to be using it now.

Mr. Rossum, tear down that GIL!

Juergen Brendel:

Effectively, this means that all access to Python objects is serialized, no matter how many threads you have in your program, and no matter how many CPUs or cores you have in your hardware! Python has a really easy to use threading API, which makes multi-threaded programming quite painless. Sadly, the Python interpreter itself makes it impossible for those threads to properly take advantage of the hardware which is common these days.

As the developer of a threaded application that uses lots of Python objects, I’d love to have it take better advantage of multiple cores. However, CPython’s best feature is its integration with C. Even with the ultra-simple GIL threading model, I’ve run into troublesome threading bugs in both Python itself and in a certain excellent extension that’s considered mature. Reliability and language features are much more important to me than threaded performance of the Python interpreter. This is especially true given that most of my performance-sensitive code is written in C and that fine-grained locking would probably be a lose for applications with less innate parallelism. Thus, I think Guido is correct to keep the existing CPython design and focus on improving the language and libraries, leaving different threading architectures to alternative Python implementations. Interestingly, Ruby is switching from green threads to a GIL.

Update: Guido van Rossum responds and references Greg Stein.

Cocoa Scripting: Properties With Multiple Data Types

Mark Alldritt:

Please use multiple data types correctly. The value returned for each data type should represent the same value, but in different ways. Correct use of multiple types avoids the need to have multiple versions of a given property in your dictionary, each returning the same value expressed in a different way.

Acorn 1.0

Acorn is a simple new bitmap editor from Gus Mueller (and Gus Mueller) with built-in screenshot-taking (using a resizable crop box), vector and text layers, gradients, and Core Image filters. Best of all: support for plug-ins written in PyObjC. A single Tools window combines tools, tools options, layers, and status info—an unusual design that, I think, works. Acorn seems to have a bunch of 1.0 bugs and drawing glitches, but it looks promising. I’m primed to switch from GraphicConverter to something with a more modern interface. I’d like to see an export window with quality previews. Foto Trimmer–style crop controls would rock.