The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Twitter
» Pizza Lab
» Code
» Archive
Aug 16, 2014

Last Thursday was one of the bi-monthly Cocoa developer meetups (aka, Xcoders). And as usual we take over a large section of Cyclops, consume food and beverages, and chat.

And of course, at some point someone mentions that a recruiter at Apple contacted them about a team in Cupertino that needs some good developers. And hey, why not interview with them?

This happens fairly frequently.

There are lots of developers in this area, which might be unsurprising because we've got Microsoft, Amazon, Adobe, Google, various game companies, etc. But there's also a very large group of Cocoa developers in the area, though I'm not sure why exactly. Maybe it's because we have long dark winters and as long as it's miserable outside- well, you might as well learn this Cocoa stuff. Maybe it's the fresh air, or the mountains, or something else that I'm not thinking of.

So when Apple says "Hey, we've got a job down in Cupertino", the usual response is "Uh, that's great. I'm going to stay here thank you very much". And then Apple says "But, this is Apple. We're changing the world." and the developer responds "Yea, but have you seen housing and rent prices down there? And it's pretty awesome in Seattle- you couldn't pay me enough to move. Besides, Seattle is the fastest growing big city in the country, why don't you open up an office here?".

Yea, why doesn't Apple open an office in Seattle?

I know the usual responses: secrecy, being face to face is important, it is against Apple's DNA. But you know what? Apple needs quality developers in a bad way, so I think it's time for that special DNA to evolve.

Hire a manager, and open an Apple developer office in Seattle. There are plenty of places across the country where Apple has offices for historical reasons or acquisitions. Why not have a remote office on purpose this time?

Then you could quietly steal the best and brightest from MS, Adobe, and wherever. And you just solved a big part of your hiring problem.

* Flying Meat is doing awesome btw. So I'm not looking to join Apple. I just look around at all the talented people in the area, and I think Apple should do something about it.

Aug 11, 2014

GrandArmy: Redesigning an American Institution

"The United States Postal Service is one of America’s great infrastructure achievements. In addition to being a technical marvel, it is also a storied and hallowed institution. From the Pony Express to the first letters sent by air-mail, few things are so uniquely American.

"Plagued by budget woes in the modern era - the USPS sought to modernize its image, and more importantly, streamline the retail experience with clear signage, way-finding and packaging.

"To this end, GrandArmy developed a total re-design of the USPS in-store experience. A robust three-bar layout system was applied to all materials, from menu-boards to hang tags to welcome signs to kiosks and so on. This system holds together a huge variety of collateral. Ancillary materials include emotive creed posters, window clings, a mobile app, and shipping box design."

Looks awesome. (via Dezeen)

Aug 11, 2014

This month's issue of is on Testing. I haven't read it yet, but I'm willing to bet it's awesome.

And I'm a little late on this one, but last month I contributed to their Back to the Mac issue, writing about adding plugin support to your OS X app.

Jul 30, 2014

Acorn 4.5 is out, so start your update engines and grab the new bits.

There's nothing earth shattering about this release, but I'm irrationally proud of it and I think it basically comes down to two new things in it that I really like.

The selection marquee has been tweaked a bit, and rotates through various colors and draws smoother making it 200% more awesome. I love it.

The other one is when you paste in dimensions such as "1256x408" into the width field of the new image window, Acorn will recognize that you probably want an image with a height of 408, and will automatically set that value for you. It's a small time saver, but it makes using Acorn even more pleasant.

There's lots of other stuff in Acorn 4.5, including detailed release notes.

Jul 28, 2014

There's been a lot of talk lately about how it's harder for folks to go and stay indie, or even make any money on the app store anymore (see Brent's post, Jared Sinclair's, Luc's post, various folks leaving indie life for , etc - I know you've seen them).

I'm in my tenth year as a full time indie dev (so I can claim to have a bit of perspective). And I think that yes, it is much harder these days to go indie.

Why though?

I think it comes down to a handful of reasons, but the major one is that we have more potential customers than ever, but we also have more developers than ever.

This creates an environment where the majority of customers are using price as a filter for which apps to choose from. This in turn fuels a race to the bottom, and then it never comes up from there.

It worked for a time. If you can quadruple the number of purchases by halving your price- well, that's obviously more money. But when you start out at $.99, where are you left to go? Customers get used to it, and then expect it. They can point to developers who have gone this route and are rolling in the dough. It's an easy sell. But that's a lottery game and those huge hits are generally an anomaly.

Sales are now fueled by one day release surges, and then it tapers off into nothing.

What can be done to fix this?

I'm really not sure. But I can tell you what I've been doing, and what I will continue doing going forward.

My basic strategy is to make a useful quality product, and sell it at a fair and sustainable price. If your app is quality, it will find customers. And then those customers will tell their friends, and the news sites will notice it. And since you're charging a fair price a virtuous circle will form.

If you are just starting out, this might take years (maybe even exactly 1,068 days). It's a long road of hard work, pain, joy, and just showing up every day. Eventually you will get lucky and gain some traction- but it's not luck alone that is the key to success. You need to recognize opportunities as they come along and grab them. And just as equally important- you need to recognize time sinks and stupid ideas that come along as well. There will be more of the latter.

Tyler Hall has a wonderful post today: A Candid Look at the Financial Side of Building Mac Apps on Your Own:

"Well, for starters, it takes a lot of patience. My sales didn’t appear overnight. It took five years for me to gain semi-stable financial independence. That’s something that I worry most iOS developers with indie dreams don’t appreciate. I’m not singling out Jared, but I think the “gold rush” mentality of the App Store leads many people to expect either instant success or epic failure. They lose sight that there might be a middle ground where you can grow your business slowly over time into something substantial."

I've always tried to set my expectations appropriately. I've looked towards those who came before me in indie-land and attempted to learn from them. I'm happy with Flying Meat being a mom and pop indie shop, and I want to keep it small. I try to make my customers happy within reasonable bounds, and they in turn support my for efforts. It takes time, patience, and lots of hard work.

This has worked so far, but I always have a plan B and C the back of my head if my ideas don't pan out. Expect failure, but don't let it get you down. Learn from it, and most importantly- enjoy it. Your company might grow and gain more customers, but it never gets easier. But you do tend to get better as time goes on.

Jul 8, 2014

The Acorn 4.5 betas have been going on for a while, and I'm pretty close to pushing out a final release. So now is a great time for some final testing and a chance to play with some new features before your neighbors.

You can grab the new bits on the Acorn latest builds page, and if you find any problems - won't you please let us know by sending an email to

So what's new? Well, you can read the full release notes for all the details, but the highlights include new presets, new AppleScript commands, full screen for Raw import, web export improvements, precision mode for the eraser, new shortcuts for common things, and Acorn can now open up .pict files. Yes, that last one was a real requested feature. I'm here to please.

There's also a handful of changes, as well as the usual list of bug fixes. And speaking of bug fixes- Project Oak is at 48% of the way there. I might not reach 100% by 2015, but I'm steadily making progress.

Jun 30, 2014

Tony Schwartz in The New York Times: Sleep as a Competitive Advantage

"More than ever, I’m convinced that sufficient sleep is a uniquely powerful fuel for sustainable performance. Among all the behavioral changes we help our clients make in their lives, none have a greater impact on how they feel and perform than getting more sleep. It’s also true that the greater the performance demand, the greater the need for rest and renewal. Instead, most of us do just the opposite: as demand increases, we simply hunker down, push harder, for longer."

I have handful of "Incredibly Obvious Software Development Secrets" (hat tip to Steve Kalkwarf), and getting enough quality sleep is right there at the top of the list. I've also found that the quality of the mattress you sleep on makes a huge difference, so be sure to get the best mattress you can afford.

May 15, 2014

It's time for another progress report.

Acorn Stuff
Acorn 4.4 betas are up. Not too much in the way of hot new features, but there's some good changes and fixes in there. Live updating of blend modes as you scroll through the list is awesome, and the same trick now works with the font popup for text. It's now super easy to quickly preview what new fonts would look like with your text.

I expect to ship this version soon, so make sure to write us ( if you find anything wrong.

I've also been working on a new compositing engine for Acorn. I was originally going to ship it in 4.4 but it still has some kinks in it to work out so it's going to wait until 4.5 or maybe later. It's showing lots of promise though. If you have lots of layer styles and/or layers, drawing is crazy faster. The basic trick behind the new code is to do some pretty aggressive caching. However, I might have pushed things to be a little too aggressive.

Project Oak now stands at 35% complete. This is lower than the last time I gave an update. Why's that? I've filed a bunch of bugs against the new compositing engine but Acorn has also gotten an influx of new users thanks to the recent sale (see below), and along with that are a lot more eyeballs scrutinizing Acorn. And combining that with the amount of time I've had to take off when moving - well, it was bound to slip backwards at some point.

Flying Meat's 11 1/2 Anniversary Sale
A month or so ago we put Acorn on sale for $14.99 in celebration of FM being around for over 4197 days. The super sale is over now though, but if you were signed up for our newsletter you would have known right away!

My original plan was to sell it at this price for two days. Kirstin convinced me to push it out 14 days instead, to give people more time to try it. So that's what we did. Acorn is still on sale right now, down to $29.99 from $49.99, which is our normal upgrade price. I'm not sure how long I'll keep it at this price, but it's sticking there for now.

WWDC is coming
Are you going to be in SF for Apple's annual developer conference? So am I! If you see me, make sure to say hi. And free FM stickers for anyone sporting a Flying Meat t-shirt.

Hello again from Mukilteo, WA
We're done moving and the old house sold. Most everything is unpacked but we still have lots of work to do. It stalled work a bit, but that was expected. Onward.

Mar 26, 2014

Wow, over a month since the last progress report. I'm a slacker!

Hello from Mukilteo, WA
OK, I haven't been slacking, we've actually been in the process of purchasing and then moving into a new home. We hope to put the old house on the market real soon now.

Flying Meat's new home base (where we sleep that is) has relocated from South Everett to Mukilteo, WA.

We've still got the office in downtown Everett, and the commute is the same (hurray). But what we get from the move is a nice view and a good school for the little girl to walk to when she gets older.

But what about the pizza oven‽

Everyone I've told seems very concerned about this. I'm sad to announce that Dante (my pizza oven) is staying behind to be loved by the new owners. I'm afraid that trying to move it would destroy it (it weighs over 2 tons) and besides, this is a great excuse to get another one later on this year (I've got some ideas for improvements). In the meantime it's back to indoor oven cooking, and I'm sure I'll be getting more use out of Marvin as well.

Check your QuickLook plugins
I have managed to get a little bit of work done though, mostly in the way of bug fixes for Acorn. One interesting one was in Acorn's QuickLook plugin.

This particular bug came to me when a customer was having big stalls (and sometimes fails) when loading previews of Acorn via QuickLook. The customer was working with 18mp / 500 megabyte Acorn files, and they were taking forever to load. Acorn saves a composite of all the layers in an image as part of it's file format (for quick rendering via QuickLook), so I was surprised that it wasn't speedy. But when profiling the plugin, I noticed that there was a lot of time spent flushing an image in a PDF context. After a bit of snooping I discovered when drawing in a QuickLook context, you can ask the system to make a PDF context or a bitmap context depending on your needs.

Apparently, I made a bad decision a long time ago.

Acorn was using a PDF context, which isn't especially great for bitmap formats (which is what the preview is stored as). I changed things around so that QuickLook made a bitmap context for rendering (by one of the parameters in QLPreviewRequestCreateContext) and this made things go way faster.

I'm not sure why I originally chose the PDF context. Acorn used to be vector only, so it's possible that's why I made PDF context decision many years ago. Anyway— things are better for the next release of Acorn (which will be version 4.4. Grab a latest build if you'd like to play with it).

I also took the opportunity to make one other change for previews— and that was adding a thumbnail composite to .acorn files (if the image is above 256x256 pixels). In the case of RAW files (which are usually huge), it was pretty dumb for Acorn to load up a 18MP image to render into a 128x128 square. So now the thumbnails show up super fast if there's the thumbnail cache. This is only for files saved in Acorn 4.4, otherwise it'll fall back to the full image composite.

FMDB stuff
In the 2014.02.15 progress report, I mentioned that I needed to bring back some wait loops for handing locks on the database.

I wasn't really looking forward to this changes since it added complexity to FMDB that I honestly thought SQLite should be doing for me. Then I discovered sqlite3_busy_handler, which is a built in function to SQLite, and which lets me do away with the retry loops.


This new code is on a branch ("busyloopback") and I'll be bringing it over to mainline after I've used it for a while in Acorn.

Cocoa Script
I put up a dev build of the current sources here: Eventually I'll do things like setup a real website and such - but I've got boxes to unpack and things to fix right now.

Feb 25, 2014

Another week or so, another post on what I've been up to.

Acorn 4.3 is out
We pushed out Acorn 4.3 yesterday for direct customers, and then 4.3.1 a few hours after that. (App Store versions will be coming soon).

Acorn 4.3 has a bunch of bug fixes, and new RAW import features (along with speed improvements). The release notes are available as usual.

Why so quick release of 4.3.1? I belatedly noticed a regression when fixing a brush bug. If you used a tablet and had pressure sensitivity turned off, the first dab of your brush stroke would be clipped incorrectly. This made for a funky looking brush stroke.

It was a super easy low risk fix, so I pushed it out quickly.

Work on Acorn 4.4 continues, and I'll begin pushing up betas of that soon enough. I managed to squash some memory leaks when driving Acorn with Cocoa Script, as well as some misc bug fixes (Project Oak now stands at 42% done). No new big features yet.

I also played around with Cocoa Script "shaders" for shape graphics in Acorn. This won't ship in 4.4 (or maybe ever?), but it was fun to code up and might be something awesome some day. How it works is a little hard to explain, but I'll try. Basically, instead of a rectangle having just a stroke and a fill when it draws, it will call a snippet of Cocoa Script code in place of the normal drawing routines. That snippet of code then has access to a bunch of libraries, and can do whatever it wants in the context it is drawing into. The following example draws a rectangle with a gradient, draws a border around it, and also draws a lighter border on the inside of the shape.

Click to embiggen.

Normally you'd need at least two different shapes in Acorn to draw something like this. This is future stuff certainly, and probably doesn't even make sense in Acorn. But the programmer in me thinks it is kind of neat.

FMDB Stuff
Guilherme Mogames wrote a tutorial for using FMDB with SQLCipher. This comes up every once in a while on the FMDB mailing list, so it's nice to see someone publish this.

Other Stuff
I've been playing with Nanoblocks recently. They are essentially teeny tiny legos- so small in fact that it's sometimes wise to use needle nose pliers to work with them. It's a nice relaxing change from coding all day. It's also nice to see Ohio Art is still around.

My new Mac Pro finally arrived as! What a game changer this is— everything is buttery smooth and fast, and being able to run OS X in VMware without any annoying lags is worth it alone. It makes testing Acorn on clean builds of 10.8 and 10.9 pain free. I love it, and recommend that everyone get their own. Maybe if it becomes mass market, that'll drive the price down?


Anyway, till next time.