It has been a while since I've written about what Flying Meat is up to, so here's a little look back at 2011, a peek at what might be in store for 2012, and general things I've been thinking about lately.
Acorn
First up of course is the release of our updated image editor, Acorn 3. The attention Acorn 3 got was unprecedented for Flying Meat. Never before has our web server been so challenged to keep up with requests until that moment. It was extremely gratifying to see so many people start using Acorn so seriously, and ditching their current image editing software for it.
Layer styles, multi-stop gradients, quickmask, instant alpha, much improved PSD support (which I wrote myself from the ground up), and more. And things just kept on getting better. Acorn is up to version 3.2 now with big speed improvements when working with 15MP+ images, bezier curve improvements, color profile support, native 10.7 goodies like auto-save, versions, and full screen support.
And of course, more updates and improvements will be coming. I absolutely love working on Acorn; there are just so many different aspects to it that it never gets boring to work on.
VoodooPad
Work on VoodooPad 5 has been going on for quite some time now, though it is taking a lot longer to finish up than I had hoped. I sure it'll be worth it in the end. Without going into too much detail, I'm going to talk about one of my favorite big new features:
I killed WebDAV syncing in VoodooPad 5, and replaced it with nothing and it is awesome now.
Ok, that's a bit dramatic. I did replace the sync code with something else but first let me explain quickly why WebDAV syncing is gone in VP5. Apple is killing/killed MobileMe, and with it they killed the WebDAV server which VoodooPad syncing was designed to work with. That's why I've ripped out the WebDAV code.
I should have seen this coming. Honestly, it's not like I didn't know that iTools wait I mean .Mac oops no I meant MobileMe wait it's called iCloud now wouldn't be long for this world. 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. I really hope I'm wrong, but at least this explains one of the reasons I didn't rush out and add support for iCloud right away in VoodooPad. I want iCloud to succeed. I just don't want to devote a bunch of time building on a syncing solution that's going to be gone shortly.
VoodooPad was born January 16th, 2003. That means that it'll be 9 years old in a few weeks. There are still people out there happily using version 2.0 which came out in 2004. So that means I'm going to need a syncing solution that will be around for at least 5 years. Who can do that? What's the solution?
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.
Do you want to put your document in a Dropbox folder and have it sync to multiple computers at the same time, without having to remember to close it? Oh, and have a page automatically update in front of your eyes as it's edited on another machine? Sure, why not? What about if you put it in a source control repository which is shared among multiple people? Can it handle that now? Yes! And VP5 can even tell you which machine a page was last updated on, and by whom.
It's pretty rad. I think stepping back and looking at the syncing problem a different way has been really good for VoodooPad 5. And of course these changes aren't limited to a specific syncing solution. If you want to use your own home-grown app, it'll probably work with VoodooPad 5. All it needs to do is look at a tree of files and make sure the most recently edited one is pushed out to the other machines. This obviously meshes with some of the things that iCloud does as well, but that code hasn't been written yet so I can't make promises at this time.
Kirstin (my wife) and I have been writing the documentation for VP5 in VoodooPad itself. Which used to be a bit of a challenge before these syncing / file format changes. Now we just put a VP document inside a shared Dropbox folder, and edit away. It's a special kind of magic, and I think it'll really open up VoodooPad to a bunch of new users.
FlySketch
FlySketch gets an honorable mention, if only because of a very heated discussion with an App Store representative when I was trying to push an update out.
There's not much to FlySketch. It does what it does and it does it pretty well. I'm happy it still makes a tiny bit of money, but I think the market for this type of utility is dwindling in the face of free alternatives.
JSTalk
On its website I describe JSTalk as "a scripting language for Mac OS X built on top of JavaScript, with a bridge to Apple's Cocoa libraries. You can use it to communicate with other applications just like AppleScript does". And it still does that, but where I've really found it useful this past year is in driving automated testing and building prototypes.
I was a guest lecturer this past summer at UW's iOS and Mac App Dev class, where I talked about automated testing and how I use JSTalk. At some point the instructor, Chris Parrish, mentioned that JSTalk was my "secret sauce". At the time I thought it was kind of funny, but the more I think about it the more I think he might be right. It's amazing how reliant I've become on a tool that I made for a completely different reason than I ended up using it for.
I also like to describe JSTalk as a research project of mine. Developing it has been a great way to explore the Objective-C runtime, and how the stack works (JSTalk uses libffi for parts of the bridge). I've also had a separate branch for a while now where I've been slowly rewriting the bridge that it uses. If I ever get serious about it and finish it, I think I might release it under a different name; something like "CocoaScript" since that makes more sense.
Mac App Store
I love the App Store both as a customer and for Flying Meat's bottom line. I worry about the future though, specifically with sandboxing and upgrades.
I really wish Apple had required sandboxing for applications on day 1 of the App Store. As it is now, I can see that a bunch of applications are never going to be able to be updated or if they are, some of their functionality will have to be stripped out. Acorn isn't affected very much by sandboxing, but VoodooPad certainly is. We'll just have to wait and see what Apple can do to help us out.
My other worry is on paid upgrades, or the lack of having them in the App Store. There seems to be an implicit assumption that by purchasing something in the App Store, all upgrades will be free in the future. But in the long term this isn't a sustainable way to run a business, or at least the type of business that I want Flying Meat to be. I want to write deep, usable applications that have a shelf life of more than a few months. It can take years for an update to come out (hello VoodooPad 5!) and while the warm fuzzy feeling when folks love your application more is great, it doesn't really feel the same as being able to make a living off your work.
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. Time will tell what the best solution is, but for now I just have to remember to stay flexible on this front.
Madeline Kay
On December 9th at 9:41 am, the entire staff of Flying Meat (aka, Kirstin and I) were proud to become parents of the world's newest Mueller. Or as I tweeted a little while later, mueller++. (And I believe this makes Flying Meat an official "Mom and Pop Shop" now).
Being a parent is an interesting and awesome experience so far. The last three weeks seems like one very long night, full of energy and excitement and sleep deprivation.
She's a great kid, and I explain to her patiently about what copy on write is all about, the benefits of a compiled vs. interpreted vs. dynamic language, and I read her a little bit of Advanced Mac OS X Programming every day, but honestly I think she doesn't quite understand pointers yet. Which is fine, because she's too young to get a worker's permit anyway.