Dec 6, 2013
Acorn 4.2 is out, and this release is for the Pros.
Acorn has implemented some of the top feature requests from professional users
- Opening a raw image with more than 8 bits per component (bpc) will pop Acorn into a 16 bpc "deep" workspace for image processing and saving. If you have a newer DSLR that takes wide gamut pictures- this is for you.
- Acorn 4.2 also has an option to convert your image into a 16 bpc image. Wide gamut displays are becoming more popular and Acorn is ready for it.
- Acorn’s default color profile is now set to sRGB.
- The crop palette now has an option to keep the aspect ratio of your crop bounds when saving a new preset (this has been requested frequently in the past, so I'm happy to finally incorporate it).
- There are now keyboard shortcuts for flipping through the various blend modes for a layer.
- The upper boundary for brush diameters has been increased to 1600 pixels wide. Other image editors max out before that and still stutter when trying to draw with a giant brush on an 83 megapixel image. Acorn 4.2 handles this task with ease, and the reason is…
Acorn has been supercharged in anticipation of the new Mac Pros
Pixels get to the screen so much faster now that everything is drawn through OpenGL. Not only that, but Acorn takes advantage of OpenCL by virtue of using Core Image. Acorn also uses custom OpenCL kernels I hand coded to speed up other operations. Acorn incorporates some super fast algorithms combined with GCD to minimize the amount of drawing that happens. Less drawing means longer battery life and overall things go faster.
I had mentioned in a previous post that I was reworking the compositing engine. I'm not done with that yet, but the progress I have made is promising. So with a bit more work and time, things are going to get even faster for Acorn.
More awesome stuff in Acorn 4.2
I've also added some other new features such as "Radial Gradient Blur", which is sort of like a vignette but with a blur. It's fun, try it out!
There's a new Share menu item which will let you post your images to Flickr, Twitter, and Facebook, or send them to iPhoto and Aperture.
The pencil tool has been revamped with pixel editing in mind. You can now draw exact squares to help you make perfect pixel art. Acorn even allows you to set the pencil blend mode, including a new "Copy" blend mode that is exclusive to the Pencil tool.
You can now extend a selection after you've made it. Use the arrow keys when a selection is made (and one of the selection tools is active) and hold down the option key. Acorn will copy the selection in the direction you press with the keys, thus extending the selection by a pixel (or 10 if you hold down the shift key).
And there are many more improvements including bug fixes of course. You can read the full release notes for the gory details.
We'll be submitting Acorn 4.2 to the Mac App Store shortly. Even though 4.2 has been in beta for a while with lots of folks banging on it- I want to make sure it's absolutely solid before I submit it to Apple. It's a lot easier to get a quick bug fix out via direct downloads than the App Store. So look for it there soon.
Why are you still reading? Go grab Acorn 4.2 and take it for a spin. And if you have feedback- let us know.
OK, one last thing. We've got some new forums for Acorn up that we're beta testing. I thought it'd be fun to put up a post describing some of the technical changes in 4.2.
Nov 16, 2013
Photo Blog Stop: Blend Modes Explained.
"In this article I’m going to give you a high-level view of what the various blend modes do, and then I’ll dig deeper into the nuts and bolts of the blend modes by explaining some of the math involved, and their interrelationships with each other. I’m not going to “show” you how the blend modes work—I’m going to “explain” how they work"
OK, so the actual title of the post is "Photoshop Blend Modes Explained"- but pretty much everything in here applies to Acorn as well (except for some of the shortcuts- I had no idea about these).
Nov 15, 2013
Here's a fun fact - Acorn has supported images with 16 bits per component since the 4.1 release last August. If you open up a 64 or 48 bit image in Acorn, it'll pop everything into a 64 bit workflow and even save the image in a 64 bit format.
Bits and components and what?
A short primer on bit depth in Acorn
Prior to version 4.1, when you opened an image in Acorn it would convert the image from its original bit depth into a 32 bit image. For Acorn this translates to four components (also known as channels) per pixel: red, blue, green, and alpha. Each one of those components takes up 8 bits and when you add them all together you get a total of 32 bits per pixel. With 32 bits there is a total of 16,777,216 possible colors per pixel (256 possible values for each red, blue and green component- so it's 256^3 which is 16 million. Alpha isn't a color, so it doesn't get added in).
Starting with Acorn 4.1, when you open up an image which has at least 16 bpc (bits per component), Acorn will change the internal workflow from 32 bit to 64 bit. You now have 16 bits per color and when you add the four components together you get 64 bits per pixel. With 16 bits per color, there are now 65,536 possible values for each red, blue and green component. Multiplying all those values together gives a total of 281,474,976,710,656 possible colors per pixel. Holy crap that's a lot of colors- over 281 trillion!
That's pretty rad. And the term for these high bit rate images is "deep color".
Currently there are no consumer displays available that will show all those colors. There are new displays coming out that can show 30 bits per pixel (meaning each RGB component gets 10 bits), for a total of 1.07 billion colors.
If you don't have one of these displays- what's the point of going with a higher bit depth? Here are a couple of reasons:
1) You have a camera that produces RAW files that are greater than 8 bpc. You may want to keep your image in that format to preserve fidelity for the future.
2) Having a 64 bit image gives Acorn more breathing room to work on your image. Things like alpha pre-multiplication problems disappear and image adjustments are more precise.
3) Scientific computing. Things like working with satellite or medical imagery can benefit from deeper colors. Just because the human eye can't see a difference between two colors doesn't mean it isn't there.
What changes in Acorn 4.2 for deep color?
A menu item has been added in Acorn 4.2 to convert an image between 32 and 64 bits per pixel. Code paths have also been added that handle the different bit depths correctly. Things like curves, flood fill, and instant alpha needed new code to support the increased bit depth as well as little things like bounds detecting code.
Drawbacks to deep color
So what's the downside to all this? 64 bit images are going to use more memory both on disc and in RAM. All those extra bits need to be stored somewhere after all. There is also more data to shove around so there could be a performance hit for some operations (although in my testing, I haven't noticed any).
One last thing
The working tagline for Acorn 4.2 is "One for the Pros". It has a dual meaning, and I'll let you figure it out.
Nov 6, 2013
The great folks over at Plausible Labs have taken over development of VoodooPad.
Both VoodooPad and Acorn have grown over the years into much more than I can handle as a single developer. And because of this one of my two apps was going to be neglected, and obviously VoodooPad has gotten the short end of the stick lately.
This isn't fair to my customers, it isn't fair to VoodooPad, and it was driving me insane. I use VoodooPad every single day, and I love it to death. I want it to grow, and that wasn't happening so something needed to be done.
Why Plausible Labs?
I first approached my friend Mike Ash a while back about taking over VoodooPad. I've known Mike for about a decade now and he's been using VoodooPad for about that long as well. He's a good guy, a solid coder, and one of the few people I would trust with VoodooPad's future.
So I asked Mike if he was interested, and he said yes but then came back with an even better idea. How about having his company, Plausible Labs, take over VoodooPad?
So you're saying that maybe more than just one awesome person would be working on VoodooPad?
Um, hell yea?
Why this is awesome for VoodooPad users
Development on VoodooPad is going to happen at a quicker pace now. And instead of a single developer focusing attention on VoodooPad, it now has a team.
And it's not just any team- Plausible Labs has serious brains and talent and experience. And most importantly, I trust them to do the right thing with VoodooPad. It's all in their hands now.
Why this is awesome for Flying Meat
I'm sad to let VoodooPad go, but at the same time I'm excited about being able to focus 100% of my energy on Acorn. Having to split my brain up on two major apps has probably been slowing me down- hopefully this won't be the case anymore.
VoodooPad turns 11 in February
When I started VoodooPad I certainly never expected it to grow and to be able to support myself and my wife- yet that's exactly what it did. It was the first real project that I cut my teeth on, and it launched my indie career. I'm forever grateful for the customers who purchased licenses and upgrades and sent in feature requests and bug reports and everything.
So many smart people have been VoodooPad customers over the years as well- it's been amazing. VP has been used for simple things like keeping notes on the super secret development of the first Intel Macintoshes, to building web sites and books, and all the way up to world building for one of the most popular console games of all time.
VoodooPad has a strong history, super loyal fans, and now an incredibly bright future. I'm super excited to see what happens next.
Oct 19, 2013
Andy Reitz on Apple TV and gaming:
"Now, let's turn back to Apple TV. For $100, the current Apple TV consists of a single-core A5 CPU, 512MB of RAM, and 8GB of flash storage. In order to turn this machine into an competitive gaming console, Apple would have to up the CPU to an A7 (probably relatively cheap), up the RAM to 8GB (much less cheap), and dramatically increase the storage. I think that they need to be able to hold at least 2 games on the device, which is at least 60GB of storage"
He has a bunch of good arguments, including one that pokes a hole in my "where are the game controllers?" idea. I think he's probably right that this isn't the year for an Apple TV + game console device.
Oct 17, 2013
This past weekend I was in Montréal for the Çingleton conference and had a pretty awesome time. A big thanks to Scott, Luc, and Guy for putting it on again this year, and thanks to everyone else that helped pull it off- it was a ton of fun.
Now that the weekend is over and I've had time to reflect, two talks end up standing out in my mind. Matt Drance's talk on leadership because it got me thinking quite a bit, and Jonathan “Wolf” Rentzsch's talk on value systems because it was a punch in the gut.
Matt's talk stuck with me because it really got me thinking about what leadership is (which was exactly what he wanted I suppose). A ton of questions popped into my mind while Matt was talking. I can't deny that people look to me, simply because I've run a mostly one man indie shop for over ten years now, which is a dream for a lot of people. And I have created code (both open source and closed) which is used and respected by lots of people as well. But does that put me in any sort of a leadership role? I don't consider myself a leader, and in fact I tend to shy away from those roles. But maybe I shouldn't? And what the heck does that actually mean? Should I be more vocal about my opinions or just keep on doing what I'm doing? Over the years I've been more quiet on my blog because it has so much more visibility - is that a mistake?
I don't have the answers and asking myself these questions makes me feel silly. But it does make me wonder about what the heck I'm doing these days. Life isn't about just writing code and making pizza.
Then there was Jonathan's. The overarching theme of his talk was about value systems. And there were some bits about "fillers and spillers" which I won't get into because I saw it as a side show to the one thing that I believe he was trying to convey.
In [C4 release]; Jon described why he ended his C4 conference. In short it was over the addition of Section 3.3.1 of the iPhone Developer agreement (which basically said you could only write iPhone apps in Cocoa) and the lack of condemnation from the developer community. When Apple added that section I thought it was stupid, but hey it's their platform they can do what they want. And so like most developers, I didn't say anything about it.
That was a personal mistake on my part. And I didn't realize just how big a mistake it was until Jon's talk and the razor sharp way he described how he felt.
One of Jonathan's core values is to help push humanity forward. And he believes one way to do this is through exploration and experimentation in software. If we didn't come up with new ideas and new languages to express our thoughts (and really- that's what we're doing when we program) we would be farther behind in progress.
I know this for a fact. If I hadn't invented JSTalk which I use for rapid prototyping and adding functionality to my apps, Acorn and VoodooPad would be farther behind in development. I open source things like FMDB and FMPSD because I don't want people wasting time reinventing the wheel. I don't get much out of it but in a very small way, the world does by the time developers save so they can work on more important things.
Section 3.3.1 cut off the possibility of inventing new programming languages on the iPhone, so by the values that Jonathan holds - this was a horrendous act by Apple. It cut off an arm of progress and invention.
And Jon thought he was alone in thinking this.
I had to take deep breaths when Jon explained his reasoning. I felt incredibly ashamed. It was in part because I consider Jonathan a friend and he thought he was alone and I did nothing. I felt ashamed because progress is one of my values and I said nothing. I felt ashamed because Matt's talk set me up, and Jonathan's knocked me down.
I could have pushed back, even if it was only a tiny bit with simple post here on my site. That was the least I could do, and I didn't. And I am sorry and upset with myself because I was lazy and a coward. But I'm hopeful that I won't let an opportunity to stand up for what I believe in pass by again.
You can claim to have certain values and you can put them up on a pedestal within your own mind and walk around feeling good about yourself. But don't ever forget that a person is defined by their actions and your values don't mean shit if you don't follow through.
Oct 16, 2013
Natural born programmers:
"There is nothing quite so destructive as the myth of the natural born programmer, the assumption that some magic genetic variation lets you write the most elegant web shops in lisp."
Oct 7, 2013
Capo 3 ("Reverse Engineering Rock and Roll") is out.
"Capo 3 helps you learn to play the music in your iTunes library quickly. Now with automatic chord detection, Capo 3’s award-winning capabilities let you learn to play your favorite songs faster than ever."
When I want to learn a song or guitar solo, this is where I go. And it's a steal at $29.99.
Sep 27, 2013
A short list of things I'd love to see out of Cupertino before the end of 2013, in order of most likely to least.
New Mac Pros
This one is a pretty much guaranteed to happen before the end of the year. I want the new Mac Pro, and I want it yesterday. Any time I can cut off of the compile and run phase of developing apps is time I can use to fix bugs and implement new features.
Again, I'm pretty sure this will happen before the end of the year. I'm especially excited about some new improvements with OpenCL and friends.
New Apple TV with Games and Game Controller Support
There has been speculation for years that the Apple TV would get games at some point, and I've even said that this would happen in two to three years. Well, I now think it'll happen before the end of the year for the following reasons:
- Apple has said that they will enter a new product category this year.
- The iPhone 5S just got 64 bit processor. That same processor would work great in an Apple TV which played games and it could even address 8GB of ram just like the new consoles from the other players in the market.
- We've now got game controller support for iOS devices.
But you know what I think is really interesting? iOS 7 shipped last week and no game controller hardware was to be found. And the manufacturers have known for months that this was coming and certainly have had prototypes in the works for that long as well.
It seems to me that if you were making a game controller you would want have it available on the day iOS 7 shipped. Unless of course you weren't allowed to ship it yet for some reason. Maybe, just maybe… what if Apple said you had to wait to show it off with some awesome new unannounced hardware? Is that why we haven't seen any controllers yet?
iPad Mini with Retina Displays
I don't think this will happen before 2014 because the battery technology just isn't there yet to be able to support that much of a power drain at that form factor. But I'm still willing to hope.
Touch ID Support for OS X
Just like Apple sells a Magic Trackpad for its desktop machines, I think it would be awesome if they sold a little Touch ID accessory for the Mac as well. I want to walk up to my new Mac Pro, place a finger on a little Touch ID thing, and instantly log in.
4k Desktop Retina Displays
Wouldn't that be sweet to have along with a new Mac Pro?
Sep 25, 2013
I've added a new class to my FMMicroPaintPlus code (as described previously) named "FMIOSurfaceAccumulator". It's basically a clone of CIImageAccumulator which is backed by an IOSurface. This class could be handy if you want the flexibility of an IOSurface (such as handing it off to OpenCL) but need fast incremental updates to the image like CIImageAccumulator does.
It does it's magic by using CGLTexImageIOSurface2D, which is a neat little function which tells OpenGL to use an IOSurface as a texture. When calling setImage:dirtyRect: the class uses a CIContext which it setup with OpenGL + drawImage:inRect:fromRect:, which is a way faster than using render:toIOSurface:bounds:colorSpace:.
Then later on (.00024 microseconds) when you need a CIImage you can create it one of two ways— either with a texture reference or the original IOSurface (and depending on your OS release, one way works better than the other).