The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Twitter
» Maybe Pizza?
» Code
» Archive
February 15, 2014

Acorn Stuff
Acorn 4.3 has entered beta status. You can download it from the latest builds page, and of course read the release notes.

There's some good new features (mostly RAW import stuff), as well as a bunch of bug fixes and a few minor changes.

I've also already started on 4.4, which is going to focus mostly on bug fixes as well (hello Project Oak!). I'm also hoping to get in some performance improvements that I originally wanted to do for 4.2.

Speaking of Project Oak— I'm 42% of the way there. I got to close a bunch of bugs since the last report, mostly because some bugs had already been fixed but I hadn't ever closed the issue. And there were a few things that were categorized as bugs, but were really feature requests.

Which brings up an interesting question- what is a bug? From Acorn's POV, a bug is something that is supposed to work but doesn't. Things like drawing artifacts showing up when you move a bezier curve, or maybe merging layers causing things to be flipped around. Those are bugs. But things like "doesn't open PSD CMKY layers" or "can't left align multiple bitmap layers" aren't.

Sure, there are things that Acorn really should be doing, but that's not a bug. A bug is something that doesn't work correctly.

Other Acorn Stuff
Wim Lewis from the OmniGroup started a little project for converting Acorn files to SVG. Which is awesome, and hopefully I'll use that someday to kickstart SVG support directly in Acorn.

FMDB
When I discovered that SQLite had its own code path for timing out when the database is busy, I ripped out FMDB's version and deleted the while loops that would make things pause and retry the query. Which was a mistake— FMDB still needs the loop to retry. So I'm working on bringing that back.

I had a little internal crisis with this though. How does FMDB break out of that loop if the database is perpetually locked (such as from another process)? Well, I think I'll end up adding a timeout variable which will be an NSTimeInterval, and check that in the loop for breaking out.

And then what about NSError? Yea, that's going to have to be done as well- you can read about ideas for it in a GitHub thread.

I have no idea what this API is going to look like. I just know that I don't want it to be ugly, and that's going to be hard to do. This will all probably be done in a version 3.0 (and it will most likely be backwards compatible as well).

A Random Acorn Tip
Did you know you can enable Acorn's precision brush mode (aka, 3x slowdown in mouse movement) temporary by clicking down on the mouse, and then pressing the space bar immediately after that? It's pretty awesome if you need precise brush strokes with the trackpad or mouse.