Archive for December 2011

Friday, December 30, 2011

State of the Meat 2011 Edition

Gus Mueller:

I’ve come to the conclusion that relying on Apple for any sort of syncing solution or general hosting of your data is probably a bad idea.…Well, the solution I’ve come up with is to ignore syncing and instead redesign VoodooPad’s document file format so that it can survive a 3rd party syncing app changing things behind it’s back when VoodooPad is running. And I’m so much happier for it now, and I think my customers will be too.

Some new OS features can be adopted almost for free if the framework is a good fit for your app. iCloud isn’t this way, not if you want a good user experience. It pushes a lot of work onto the app. And some apps may need to be completely redesigned, shoehorned into the iCloud model. Then there are the non-engineering issues of it being tied to the App Store and whether Apple is really committed this time. So I think Mueller’s approach makes a lot of sense, although it’s more practical for certain types of data than others.

Historically for Flying Meat (and most indie Mac companies) the majority of revenue comes in through upgrades and new releases. The App Store doesn’t provide this path, so you have to publish a brand new app to have people pay for your work. Recently Adobe took this route with the Elements 8 to 9 upgrade and as far as I can tell, people didn’t freak out too much.

The old version is gone from the Mac App Store. I’m surprised more people didn’t freak out. Is it still available for those who already purchased? Today I accidentally clicked the invisible “x” button for an app in my Purchases list, and I seemingly would have lost the app if I hadn’t been able to search for it in the store and “buy” it again.

Thursday, December 29, 2011

The Failure of iMessages

Drew Schuster:

OK, so sending a text and claiming it failed isn’t that bad. What would be really bad is if a “Delivered” text was never actually received. That happens too. All the time. I sent my dad an iMessage yesterday that he never received, even though my phone claimed that it had been delivered. He handed me his phone later that day to show that he never got it. I tried turning off wi-fi, data, killing the messages application, and restarting the phone, and was still unable to receive that text. That is unacceptable given the simple requirements of a messaging system.

Saturday, December 24, 2011

Cornerstone and Subversion 1.7


For example, 1.7’s re-implementation of the working copy status API used by Cornerstone is now 10x slower than the same API in Subversion 1.6. It provides the same output, but what previously completed in 200 ms now take over 2 seconds. We don’t think this kind of performance degredation is acceptable and spent some time migrating Cornerstone to use newer and faster APIs.


We came to the conclusion that we would have to re-think certain core aspects of how Cornerstone interacts with Subversion. The constraints introduced by SQLite make it substantially more complicated to use Subversion’s APIs from multiple threads. We ended up having to re-design the way in which key data structures are allocated and managed by Cornerstone.

Static Code Analysis

John Carmack:

The first step is fully admitting that the code you write is riddled with errors. That is a bitter pill to swallow for a lot of people, but without it, most suggestions for change will be viewed with irritation or outright hostility. You have to want criticism of your code.

Thursday, December 22, 2011

Thoughts on Writing Emails Using Markdown

Benny Kjær Nielsen:

Essentially, I would like the visual appearance of an email to be under the control of the recipient and not the sender. The typical workaround when viewing emails is to configure the email client to ignore the HTML body part of a message when possible (we’ll get back to how that works further below). In MailMate, you can do it by enabling the “Prefer Plain Text” option in the “Preferences ▸ Viewer” pane.

The problem, for me, with preferring plain text for both composing and viewing is that I do like rich text formatting as long as it is related to the semantics of the message. For example, when using emphasized words, bullet lists, tables, or verbatim text (code) with a non-proportional font. A nicely emphasized word does look better and is easier to read than the traditional starred *word*.

Help Finish QuicKeys 4 for Lion

The lead programmer for QuicKeys has sadly died, and Startly is seeking someone to replace him and complete the update for Lion (via Chucky). I used to be a heavy user of QuicKeys. Here’s a review from 1997 in which I complain about the nested dialogs and menus in its interface, and the fact that it used 600K of RAM.

Friday, December 16, 2011

The Software Developer’s Dilemma

Dave Winer:

The bottom-line is that the developers would have done better, imho, working with each other, than each of them making separate “deals” with Apple. Because to Apple, they weren’t deals at all. Their motive, as people, not so much as a company, was to regain full control of everything that happened on their platform. The other developers helped them do that. Once that was over, they weren’t important to Apple.

Tuesday, December 13, 2011

Check App Store Updates With a URL

Cabel Sasser:

To send your users to Mac App Store updates, use this URL:


TextMate 2.0 Alpha

As promised, the public alpha of TextMate 2 was released before Christmas. Some of the significant changes are support for non-contiguous selection, better multi-file find/replace, color themes, more powerful language grammars, and a better bundle editor. No doubt lots of groundwork has been laid for cool stuff in the future, but it doesn’t seem to be at a state where I can use it for work. My existing project files are not recognized, it hung trying to download Java (which I already had installed) when I tried to open a LaTeX file, and it doesn’t recognize my custom language grammar for reStructuredText, which is the main reason that I have TextMate in the first place. The documentation for what’s new and how to migrate is scant, and version 1.5 still works fine for me, so I see no reason to be an early adopter.

Monday, December 12, 2011

Binary Constant Macros in C

Tom Torfs (via Jonathan Rentzsch):

I’ve been missing the lack of support for binary numeric literals in C. To get around it I wrote the following handy macros, which allows you to simply write something like:

whatever = B8(10101010);

and will translate as:

whatever = 85;

MFIndexSetForeach Macro

Michel Fortin has written a macro for iterating over an NSIndexSet. It looks to be easier and faster than writing your own loop, and also more convenient than using block iteration.

iCloud: Lessons Learned

Kyle Sluder has posted slides from his talk, which is important since much of this stuff is not yet extensively documented.

Hex Fiend 2.1

HexFiend 2.1 adds support for binary diff viewing, choosing the text encoding, and more.

NeoFinder 6.0

NeoFinder 6.0 is a Cocoa rewrite of Norbert Doerner’s venerable CDFinder. It looks like a great update, although I have less need for offline disk cataloging these days. I’ve transferred the contents of all my archival DVDs (software disk images, old project data, videos, music, etc.) to a few multi-terabyte hard drives. When I need to find a file, I can just stick the relevant drive into the Voyager S3 and then search it with EagleFiler.

Saturday, December 3, 2011

ATPM 17.12

The December issue of ATPM is out:

Friday, December 2, 2011

QuickTime History

Tony Smith notes that QuickTime is now 20 years old (via Jonathan Rentzsch):

Looking back, it's easy to dismiss the early QuickTime – with its tiny image size and scratchy, low bit-rate sound – as a gimmick, but the technology was genuinely ground-breaking at the time of its release. Computers had shown video before, but not without some very expensive add-on technology. This was the first time video could be done on an ordinary home machine.

Kindle vs. Nook vs. Kobo Review

Marco Arment:

I’ve been able to generate newspaper-style navigation that works on all non-touch Kindles, but the Kindle Touch and Kindle Fire use new periodical-navigation formats that I haven’t been able to successfully generate yet. I don’t know if Amazon will ever make this possible. And recent changes to Kindle “personal document” storage makes it difficult to delete old Instapaper articles from the Kindle Touch.

He also says that the Kindle Touch is slower at page-turning than the Kindle 4 (and Kindle 2 and 3). I have the Kindle 3 (a.k.a. Kindle Keyboard) and am not at all tempted to upgrade. The Touch lacks page-turning buttons, and the Kindle 4, though a bit smaller, would be significantly more unpleasant for type-to navigation and entering short notes.

Gitbox Is 1 Year Old

Oleg Andreev:

Gitbox is still lacking some interesting things like built-in diff viewer, line-by-line staging, tree view or submodules. Those will come soon. But many more important things were already done: very responsive UI, instant full-history search (even by diff contents), undo for common operations like commit, pull and push (and more to be added in later updates), ubiquitous drag and drop and powerful keyboard shortcuts. Also, a lot of stuff was ignored that would cripple and complicate the UI. Some power features were delayed until the right place for them was found.

Object File Inspection Tools

Mike Ash:

Being able to see all stages of your work can be immensely helpful when debugging a problem. Although you can get a lot done only looking at the source code and the app’s behavior, some problems benefit immensely from being able to inspect the preprocessed source code, the assembly output from the compiler, or the final binary.