I am telling you today to shut up for a few seconds and stay for the ride. It is pretty much impossible to make the kind of conclusions I make about the iPhone’s UI and its role in making this sort of thing available for the first time to ordinary people without also making the comparison to the original Macintosh. It was far from perfect when it came out, which led a lot of people to discredit it. Within three years almost all of the “but it doesn’t have/do X” concerns were gone, and within ten years it had swayed every other competitor. I believe something similar is going to happen.
Sunday, September 30, 2007
In my opinion, Aperture vs. Lightroom is the same discussion as Canon vs. Nikon. Each has strengths and weaknesses, but it’s not a no-brainer decision either way. You’ll produce good results with both applications, and the real decisions come down to personal preference, and specific features that you may need for a very specific reason.
That sounds right. I happen to like Aperture and Canon, and of course I wish Aperture were faster.
Update: Ted Leung’s take.
RadioTime has been working to catalog the world of internet and AM/FM radio since 2002 and their guide now tracks over 50,000 different listings. Bill Moore, the visionary founder of RadioTime, had actually made us aware of the guide way back in 2003. However, it wasn’t a good fit for us at the time (technologically or economically), so it simply lingered in the backs of our brains.
I’ll bet it’s really common for developers to have application ideas linger and simmer for years until the time is right.
Saturday, September 29, 2007
The new Apple keyboards now have “media keys” for Previous, Next and Play/Pause. As of yet there doesn’t appear to be any public API for developers to use these keys in your own application. But this post to the CocoaDev mailing list from Peter Maurer reveals a way.
Consider, now, the software update process. It assumes that the iPhone’s various processors and firmware(s) are in one of the known states—indeed, this is required for the complex cooperation required for uploading new software. If this cooperation is disrupted, the update may not begin—leading to an error message—or, worse, it may begin but not conclude properly. At this point, one or more of the iPhones processors may try to enter a recovery routine, either wiping the flash memories or to reinitialize them to a known state. No doubt this will be successful in most cases, and the new update will then be installable on a second attempt. However, the recovery may fail—since the exact circumstances couldn’t be foreseen—or it may be assuming false preconditions (like, a valid AT&T SIM card being present). The system will probably try to recover at successively lower states until falling back to the “can’t think of anything more, take me back to the factory” mode; or it may even lock up and “brick.”
Thursday, September 27, 2007
Often I get feedback from people who have finally figured out how FastScripts can help them. The recurring theme to this feedback is “I had no idea it could do that!” So let me try to summarize some of FastScripts’s selling points more effectively than the current product page does…
Pixelmator 1.0 looks like a good start. It feels a lot like older, less Windowsy, versions of Photoshop. The Core Data–based file format is a good idea. As with Acorn, there is currently no way to preview the quality when exporting to JPEG or PNG. Jesper has some good criticisms, but the sticking point for me is the transparent HUD-style palettes and windows, all overloaded with black. The interface is distracting, except when it was in full-screen mode. Acorn’s interface is not distracting, and it’s refreshingly clean. Also, I’m still wondering in what sense Pixelmator is “The World's First GPU-Powered Image Editor.” It’s certainly not the first to use Core Image.
Meanwhile, Photoshop Elements 4 isn’t a universal binary, and there’s no Mac version of 5. The Mac version of Photoshop Elements 6 is planned for 2008 and looks more like Lightroom than Photoshop. I don’t think I have any use for such a product.
Amazon’s MP3 store looks pretty nice. Good sound quality, good prices, no DRM, easy to use—what’s not to like? I’d rather browse using Safari than iTunes, anyway. I’m surprised that they haven’t yet integrated the customer reviews from the CD store.
Since iTunes’ “Download album art” feature is terribly hit or miss, I’ve tried to complete my library manually. I was delighted to discover that AmazonMP3 is easier to search than the corresponding Amazon CD stores, and the artwork on the site is higher quality than the CD store! Combined with the recommendation aspect, I’m able to quickly retrieve and add art for lots of artists in my Library.
Tuesday, September 25, 2007
The implementation of per folder settings took over two months of work. To accomplish this we used a Cocoa technology introduced in Tiger called Core Data. Unlike the Finder (with its notorious .DS_Store files) we use no hidden files, we do not require files scattered around in every directory, and no helper files will ever silently appear on your network shares or external hard drives.
Path Finder 4.8 will store its visual per-folder settings in a centralized SQLite database located in ~/Library/Application Support/Path Finder/CoreData.
It looks like the settings are keyed by directory ID and volume ID.
For the next week, Brad and Erik at Cynical Peak and I are offering the Mac News Junkie Bundle, which lets you buy Cyndicate and EagleFiler together for just $55. Cyndicate is a new RSS/Atom feed reader that follows the e-mail paradigm (which feels more natural to me) and offers filters, smart folders, and automatic ratings to help you manage and prioritize the incoming flow of news. When you find an article that interests you, just press F1 to add a Web archive of it to your EagleFiler library.
Saturday, September 22, 2007
Downloading from Apple’s developer seeding site takes a long time with a DSL connection, and when using current versions of Safari and Firefox an interrupted download means that you have to start over. It’s virtually impossible for my download to go uninterrupted long enough to get a whole DVD-sized file. Fortunately, Mac OS X includes a built-in command-line tool called curl that can automatically retry and resume downloads. Normally you can invoke it using curl -O 'URL' to download URL into the current directory. It’s slightly more complicated if you want handle cookie-authorization and URL redirection:
- Log in using your browser and copy the file’s URL.
- Use curl 'URL' -D FILE to dump the headers into FILE.
- Open the file and note the cookie (set-cookie: NAME=VALUE) and new URL (location: NEWURL).
- Now download the file using curl -O 'NEWURL' -b 'NAME=VALUE' --retry 100 -C -. This will retry and auto-resume up to 100 times.
- You can also add --limit-rate 100K to limit the amount of bandwidth that curl uses if you want to reserve some of your connection for other use.
Wednesday, September 19, 2007
As far as future market competition, its target of 5Gbps puts USB 3.0 ahead of current eSATA (3Gbps), which is really the only other device protocol under active development that might challenge it as a peripheral interconnect. Although an IEEE 1394c protocol has been developed and published as of June 8 2007, no company has announced an intent to produce a product or chipset that utilizes the standard. FireWire remains supported in certain sectors, but I’d personally be surprised if the combination of USB 3.0 and eSATA doesn’t push FireWire out of the market completely.
What a browser needs is a network, but Jobs pitched it as the network needing the browser. It’s silly if you think about it: if it weren’t for Safari, the only thing you’d be able to do on the iPod Touch with Wi-Fi is watch YouTube and buy songs from iTunes. Plus, presenting the inclusion of Safari as a sort of “boy, isn’t it cool that we did this” feature draws attention away from the exclusion of Mail. There’s been a lot less bitching about the Touch not including Mail than I expected—I think that’s at least partly attributable to the way Jobs presented the inclusion of Safari.
Monday, September 17, 2007
…storing plaintext passwords in the database is strictly forbidden—that there’s a better way, starting with basic hashes.
Hashing the passwords prevents plaintext exposure, but it also means you’ll be vulnerable to the astonishingly effective rainbow table attack I documented last week. Hashes alone are better than plain text, but barely. It’s not enough to thwart a determined attacker. Fortunately, the kryptonite for rainbow table attacks is simple enough—add a salt value to the hashes to make them unique.
The problem is that MD5 is fast. So are its modern competitors, like SHA1 and SHA256. Speed is a design goal of a modern secure hash, because hashes are a building block of almost every cryptosystem, and usually get demand-executed on a per-packet or per-message basis.
Speed is exactly what you don’t want in a password hash function.
Sunday, September 16, 2007
None of this is to say that you shouldn’t buy the iPod touch. In fact, based on my early testing, I’d have to say that the iPod touch is by far the most amazing product to ever bear the “iPod” brand name. But be forewarned that the iPod touch is not necessarily the mythical “iPhone without a phone” that some users have been looking for.
It’s much closer to being an iPod plus Safari, Multi-touch, and the store.
You can double-click the Home button to bring up on-screen playback controls, even when the screen is locked. Nifty. But, unlike the iPhone, the Touch has no hardware volume buttons, and it doesn’t have a play/pause/next-track clicker on the headphone cable. That clicker is my very favorite thing about the iPhone’s music player; I think it’ll be a pain to use an iPod Touch that’s in your pocket.
Of course the iPhone has great software, but the hardware—the screen, buttons, clicker, earbuds, and durability—are what have really impressed me.
Wednesday, September 12, 2007
I got my new 160 GB iPod classic today. I like it; a lot. I like its feel, all metal; I like its capacity; and I like the new interface. Well, most of it. There’s one part I don’t like, and I officially anoint it as Apple’s Stupidest Interface Innovation Ever. It’s this thing where you see, on half the screen, a menu, and on the other half, part of an album cover.
Monday, September 10, 2007
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.
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.
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 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 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.
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.
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.
More from Andy Finnell:
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.
I knew Eudora. I used Eudora. Eudora was a friend of mine, and you, sir, are no Eudora.
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.
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.
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?
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.
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.
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 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.
Monday, September 3, 2007
The September issue of ATPM is out:
- Bloggable: Our Sense of Childlike Wonder
- MacMuser: IT Pros Are Anything But
- MacMuser: Time, Ladies and Gentlemen
- Photoshop For the Curious: Creating Seamless Tiles
- Desktop Pictures: Great Ocean Road, Australia
- Software Review: Cocktail 3.8.1
- Software Review: Curio 4.0
- Software Review: NetNewsWire 3.0
- Hardware Review: radioSHARK 2
- Software Review: Snapz Pro X 2.1.1
- Software Review: Stikkit
- FAQ: Frequently Asked Questions