Sign In
Lens Calc
rss logoRSS

Assorted Entries

Micro-Nikkor 105mm f/4 AIS Review
Micro-Nikkor 105mm f/4 AIS Review

The Big Apple Circus
The Big Apple Circus

A Walk in the Park
A Walk in the Park

The Long Road to Pro Part 2
The Long Road to Pro Part 2

Nikkor 80–200mm AF f/2.8D ED Review
Nikkor 80–200mm AF f/2.8D ED Review

Newest Musings

Filterstorm is the first iOS app I wrote, and by far the most successful. I still think that its editing capabilities are unmatched on mobile, but it’s never been the fastest or the prettiest photo app on the app store. The Achilles’ heel has always been reliance on the CPU; lots of time and memory is wasted copying the image from CPU to GPU memory. Because of this, Filterstorm has long relied on a reprocessing step, remembering all the editing steps you do on a preview image, then applying them to the full image later on.

http: pictures Filterstorm Neue filterstorm neue ipad sm.png

I waited (too long) for Apple to let developers write custom Core Image filters on iOS as we can on the Mac, but to no avail. Several months ago I decided to go ahead without this capability and rewrite Filterstorm on OpenGL rather than Core Image. With some help from Brad Larson’s GPUImage project, I was able to build a much faster and more stable foundation for my new flagship app: Filterstorm Neue.

The new interface was all about simplicity. I spent less time trying to create icons for concepts like “effects” that have no readily understood pictorial representation, and instead used more text. Since text takes up more space than icons, I put the buttons on semi-transparent rectangles that wouldn’t fully obscure the image. To tie the interface to the image, I created an algorithm to create a color scheme based off whatever image was being edited*. The very initial result of the new interface concept is shown in this video I tweeted about 5 months ago.

Compared to the final version, the animation is atrocious and the spacing is poor, but it was immediately clear that the idea was a winner. From that point I made the buttons smaller and closer together to save screen space, and changed the animations to swipe in from the right when going into a menu, and push out to the right when backing out, to give a clearer sense of place. I also added overlay sheets that would attach to buttons to provide information and options in the same manner I used popovers for in previous versions. The results can be seen in my demo video here:

Please note that the poor frame rate is due to recording via airplay.

One of the most requested features I’ve received is for a way to use a mask brush without covering the area you’re brushing with your finger. The two suggested solutions were either to offset the brush from the finger, or to show the area obscured by your finger somewhere else on the screen that was visible. Filterstorm Neue solves this issue in a manner similar to the first recommendation. If you simply place your finger down and move it, the brush will follow your finger just as in older versions of Filterstorm. However, if you tap your finger, the brushing indicator will be moved without brushing. You can then grab the indicator by any edge, and drag it to move the brush which is now offset from your finger. If this description is confusing, please watch the above video as I demonstrate both methods.

Another feature I’ve long wanted to implement (also shown in that video) is the ability to go back and forth between masking and editing. Filterstorm has always had you set the filter first, then mask on the change. I’ve always thought this is better than masking before editing. However, when setting the filter for the whole image sometimes your initial perception is a little off, and once you’ve set the mask you want to increase the contrast effect, for example. In Filterstorm Neue, accepting the mask will bring you back to the contrast controls, and you can re-adjust before applying the filter. You can switch back and forth between masking and contrast as much as you like before applying. Unfortunately, there are a few features that rely on the CPU for now for which this isn’t possible, but it is for most.

Filterstorm’s been on the market for well over three years now, and I’ve learned a lot in that time. With all that extra experience, I’ve been able to build a much better engineered app that should stay fast and stable for years to come. The feature set is not yet as large as that of classic Filterstorm, but it is far faster and has a number of advantages like the ones I’ve discussed here. Future development should also bring back most of the missing features quickly. I plan to release Filterstorm Neue in early November as a new app, so please pick it up!

For more information, you can visit the website at

*I know some people won't want to have color in their interface, so rest assured that there is a grayscale setting.

T logo

Inkist iPad

tai | 2013-02-16 19:36:24
Comments (2) | Tiny link

http: pictures inkist ipad inkist ipad roller derby sketch thumb.png

When Inkist was released last May, I wrote this blog post about its creation which may be worth revisiting. In short, Inkist is how I envisioned drawing on a Cintiq (or other drawing tablet) should be. Of course, there are many people like me who enjoy drawing, but don’t have the money to buy an expensive specialized piece of equipment like that. iPads, however, are commonplace, general purpose devices that are ideal for both amateurs and travelling professionals.
inkist and inkist ipad toolbars

Though it’s usually a terrible idea for a Mac and iPad app to share an interface, the iPad (right) tools are little changed from the original. Since the Mac app was meant for use with pen input, it was already well suited to an iPad stylus. The buttons are based off a larger 50 point grid rather than a 30 point grid due to the fact that fingers and iPad styluses aren’t as accurate devices as Wacom digitizes, but the overall organization is unchanged.

The toolbar is a bit unusual for an iPad app. Drawing apps currently on the App Store try to minimize the screen real estate taken up by the tools in order to dedicate as much space as possible to the drawing itself. As understandable as this is, switching brushes, colors, and layers while drawing is common and needs to be easily accessible. Rather than tapping a button to reach those controls, Inkist keeps them on screen making the process faster. There is some tradeoff with drawing space, but it’s a tradeoff I wish more apps would make. iPhone’s small screen necessitates hiding features behind taps and iPad apps seem to follow suit either without enough consideration as to how much can be displayed, or in attempt to create an uncluttered look without regard to functionality.

As mentioned in my previous blog post, brush feel is of top priority for Inkist. For the most part I’ve been successful in transitioning this to iPad. With standard styluses and finger strokes, brush strokes will have a slight fading in and fading out, using the light and strong brush pressure parameters as guides. Thankfully, several third party manufacturers have begun releasing styluses using bluetooth which can report pressure information. At launch time, Inkist will support the Pogo Connect stylus with support for other pressure sensitive styluses being planned. The feel still isn’t quite as good as a Cintiq, but it’s a pretty good approximation.

Inkist for iPad is nearly ready for release on the App Store. More information on both the Mac and iOS version can be found at
T logo

Gridditor Sales

tai | 2012-11-05 10:12:52
Comments (1) | Tiny link

No matter how good your app is, you need exposure. Reviews in prominent publications and popular blogs mean a lot, some exposure can be bought through advertisements, but nothing kickstarts app sales like some promotion from the App Store itself.

How does one get this promotion? The process is opaque, but since I had no communication with Apple about Gridditor whatsoever before receiving the email requesting art assets, I can only assume that someone checks over new apps for promising candidates. Editor’s Choice/App of the week promotion requires you to send Apple some artwork given their specifications for the banner, usually with a very fast turnaround time. Getting it done in time can be trying, but the excitement of a big feature is more than worth it. “New and Noteworthy” and “What’s Hot” placements on the other hand occur without any communication whatsoever, and are always a pleasant surprise.

http: pictures gridditor launch gridditor launch sales chart.png

Apple updates the App Store features at approximately 3pm (New York) on Thurdays, so the the banner isn't visible for the full day. This is why sales rise on the second day.

My strategy, which I used before with Inkist, was to release at a discount ($0.99) during the feature to prioritize downloads over profits and hopefully get some word out, then to increase the price to the final $1.99 the following week. Does this strategy work? Unfortunately, there are far too many variables for me to know how much of a difference this makes. It’s possible that the vast majority who purchased in the first week at $0.99 would have still purchased at $1.99 and I’ve simply missed out on a large amount of profit. It’s also possible that the best way to launch an app is free, as Filterstorm was, in order to get that critical mass of initial users with which to spread the word.

In fact, launching as free was my initial plan, but Apple advised me to not change the price during the feature. I was too worried about missing out on profit from a full week of banner promotion to go through with it.

Regardless as to which strategy for launch is best, the power of promotion is clear. With the banner promotion I was averaging 2,400 sales a day, in “What’s Hot” that number dropped to 900 (though there was also a price increase), and the week after that went down to 215, a number that would surely be much lower without the reviews and buzz prompted by the initial feature.

Though it sold better than Filterstorm at launch, Gridditor’s sales have since slipped below those of Filterstorm. Several localizations were added to Gridditor (on 2012-10-26), which should provide some help, and I’m planning some advertising, too. It’s still unclear how Gridditor will perform in the long term, but I think there’s a large market for this type of image editor and will keep pushing.
T logo

Gridditor Featured!

tai | 2012-10-04 21:36:28
Comments (0) | Tiny link

http: pictures gridditor editors choice app store gridditor editors choice thumb.png

Gridditor’s promotion marks the second app launch in a row for me to get a big banner on the App Store! Thanks Apple! I hope everyone likes Gridditor. If you haven’t purchased it yet, you can buy it here [App Store Link].
T logo


tai | 2012-09-20 15:09:48
Comments (5) | Tiny link

Filterstorm is overkill for most people—and it should be. It was meant to be powerful, and though I try to make it as easy to use as I can, power necessitates complexity. Gridditor is the opposite. It’s the app I can tell all my friends to use regardless as to whether or not they know the first thing about photography. It is meant to be fast, easy to understand, and in some respect to teach by forcing people to look at how each filter behaves and interacts with others.

http: pictures gridditor the anti filterstorm gridditor flower screenshot thumb.png

The basic premise is simple: arrange thumbnail previews in a grid, and let the user choose which one looks best (tapping on any thumbnail will bring up a larger preview). Lather, rinse, and repeat until satisfied. To generate the grid of thumbnails, I assign one filter to each cardinal direction. By default, up is contrast, down is vibrance, left is darkening, and right is brightening. If you choose a thumbnail directly to the right from the center you get that one filter, in this case brightness. If you go in two directions—say, up and to the right—then you’ll get both the brightening and the contrast filters. After a choice has been made, four new filters are pulled in at random. If the user doesn’t like the filters chosen, they can be specified manually, or a new group of random filters can be pulled in by selecting the center/unmodified image.

http: pictures gridditor the anti filterstorm gridditor torii screenshot thumb.png

By showing a big grid of choices rather than having the user select a filter and control its strength, more options are shown at once, unexpected possibilities can arise. It also allows for very quick choice and is great for making some minor adjustments to an image before uploading it to wherever it’s headed.

http: pictures gridditor the anti filterstorm gridditor truck screenshot thumb.png

I’m very excited to get Gridditor out onto the app store, and it should be available in the next couple weeks or so. In the mean time you can see the website, including a video of Gridditor in action on iPad at

T logo

Inkist Lite

tai | 2012-07-23 18:53:07
Comments (4) | Tiny link

Filterstorm started big. It was a free app at the time of iPad launch, and thanks to an early staff favorites feature, it hit number 11 on the free apps sales chart. The reason I launched it as a free app wasn’t business savvy (though in hindsight I’m glad I did), it was simply that I had developed Filterstorm without access to an iPad and I didn’t trust it to run properly — and at first it didn’t.

Inkist’s launch was a very different story. I set the price where I wanted it to stay, and simply released it hoping again that word of mouth would spread it. Of course, it turns out there are fewer mouths to spread the word when people have to pay $9.99 to get the app. I did have a big banner feature which helped, but not enough.

http: pictures inkist lite inkist lite roller derby screenshot thumb.png

It seemed I needed something more. My first thought was a demo version, something that expired after 30 days you could get from the Inkist website. I like going through the app store, though, and demo versions don’t work for that. So I decided to go in a different route, by which I mean “shamelessly copy from Autodesk’s strategy with Sketchbook”.

Sketchbook Express is a free version of Sketchbook which flattens the images when they’re saved (there are probably other limitations, but that’s the only one I’m aware of). That seems to me to be a good way to do things, give people a good taste of the abilities of the program but with enough limitation that people will want to upgrade.

I thought about doing the same limitation as Sketchbook Express, but having a flattened image on save would hurt people who start working on an image in Inkist Lite and want to finish it when they upgrade to Inkist. Instead I simply set a limit of 3 layers available to the user. This makes it a powerful enough app that people can get real use from it, and many may want to stick with the lite version, but limited enough that more serious users will all want to upgrade to the full version.

I think there is a danger that I’ve made the limitations too loose and most people will be happy with Inkist Lite, but as Filterstorm is the vast majority of my income, this is a risk I can afford to take. If I’ve played it right, hopefully I’ll see the word spread and sales of the full version will go up, too.

T logo

WWDC Keynote 2012

tai | 2012-06-12 10:08:07
Comments (0) | Tiny link

Despite the fact that there was no Apple TV Announcement, the keynote was far bigger than I expected. Simply put, I didn’t think iOS 6 and Mountain Lion would be as big as they were, and the new Macbook Pro is gorgeous.

I had my Nikon V1 and 30–110mm along, though I think next time I’ll bring along a DSLR. The light simply wasn’t good enough for the slow lens/small sensor combination.

http: pictures wwdc keynote 2012 thumbs DSC_0177.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0180.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0186.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0192.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0215.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0217_2.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0229.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0233.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0235.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0240_2.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0246_2.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0248.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0249.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0263.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0278.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0280.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0287.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0296.jpg

http: pictures wwdc keynote 2012 thumbs DSC_0310.jpg

T logo

The One Thing I Want From iOS 6.

There has been a lot of talk and speculation over what Apple will announce tomorrow at the WWDC keynote, but the one thing I’ve been waiting for for the last couple years has barely been mentioned, if at all. Yes, mapping could be improved (and it will be) and yes, iOS could support better communication between apps, but there’s something else that is missing that hurts both consumers and developers.

Paid updates.

When I first released Filterstorm back in 2010, my plan was to charge money for the update that added layers to the app. Well, that came in 2011 and I didn’t end up charging. So far, the consumer has won if they’re purchasing from me. However, a number of other developers have gone the route of releasing a new app for their major update. PhotoForge 2 is a good example. In this (entirely understandable) case, existing customers lose, as they have to pay full price a second time for the app.

I want to charge $0.99 to existing customers for a major update, rather than having them pay the full $3.99 for the new functionality as if I were to release a separate app. I also want to be able to use the update screen to let customers know the new version exists rather than having to search for it on the app store.

On the other side of the coin, in app purchases would allow me to charge for new features, but this sort of nickel-and-dime charging per feature is antithetical to my ideals of simply charging a fair price for a quality product, and what I think a good user experience is.

What Apple TV Apps Could Mean

This is entirely speculation, and partially a list wish, but I do think the addition of apps to Apple TV could—by itself—be the game changer people have been expecting Apple to eventually produce.

I like TV shows, but I hate TV. It’s a common sentiment in my generation. The linear nature of preprogrammed material is contrary to what we’ve come to expect thanks to the magic of the Internet. The fact that we all pay subscriptions for packages of channels, most of which we’ll never watch, is almost insulting. An HBO app, with a paid subscription (as Apple already supports in the app store) that gives access to current HBO programming would by itself sell millions of Apple TVs.

I don’t think HBO will be there from the beginning, but I do think a number of other networks would be willing to test the waters in this way, and sports franchises already offer similar apps. An even simpler app could provide a real time stream of a network’s cable feed (though local ad sales issues might be prohibitive.) Once a critical mass of networks start offering apps, a people would cancel their cable subscriptions en masse. An à la carte revolution with no new hardware needed, just the app store. Everyone is excited to see what independent developers like me do on the Apple TV, but I’m excited about the big players.
T logo


tai | 2012-05-17 16:46:04
Comments (1) | Tiny link

http: pictures inkist feature inkist app store feature thumb.png

Apple gave Inkist a big banner feature! Thank you, App Store!
T logo

Introducing Inkist

tai | 2012-05-07 16:45:08
Comments (0) | Tiny link

A bit over 2 years ago I wrote Filterstorm to be the photo editing app I wanted to use on iPad. I wrote Inkist for similar reasons. I own Photoshop, Painter, and SketchBookPro, have used all of them with my drawing tablet (a Wacom Cintiq 12WX), and to some extent I like each of them, but each also has its annoyances, and they aren’t cheap. Since fixing them isn’t something in my power, I of course went out to create my own app to satisfy my needs.

http: pictures introducing inkist brush preview thumb.png

My top priority with Inkist was brushing. Brushes had to be responsive, easily configurable, and respond well to pen pressure. I spent a lot of time going back and forth between Inkist and SketchBookPro to make sure brushing compared favorably as the whole endeavor would have been useless if it didn’t. Since the back end of Inkist is shared with Filterstorm, this was the majority of the work outside of the interface.

http: pictures introducing inkist inkist tools.png

I hate it when apps have too many floating windows. I don’t mind having one, it can often be very useful, but I tend to like most tools to stay within the primary window. All of Inkist's tools are contained on the left side of the window, grouped into four palettes. Colors, Brushes, Other Tools, and Layers. Any of the palettes can be popped out into a HUD style panel, I tend to pop out either the color palette or the layers (or sometimes neither if I’m working on a flat image like the tiger image above).

I spent some time experimenting with different sizes for the buttons within the palettes trying to find the right balance between a button large enough to be easily clickable using a pen (it’s easier to hit small targets with a mouse), yet small enough so that the palettes don’t get too big when they hold lots buttons. I ended up settling on 30x30 buttons, which I believe is slightly larger than Photoshop uses, but similar to Pixelmator.

http: pictures introducing inkist brush palette.png

Like Photoshop but unlike SketchBookPro, the four brushing modes (brush, erase, blend, line) all share the same set of brushes to choose from, though each may have a different brush selected at any given time. I chose a different route with the blend tool than SketchBookPro, too. I believe SketchBookPro creates a blurred copy of the entire layer, then uses masking to reveal the blurring, similar to how Filterstorm works. Inkist's blend tool calculates the average color under the the brush and sets that to the brush color. The advantage of this is that if you go over something many times with the blend tool, it’ll get more blended each time, it’s also possible to use it to create less smooth blending when stylistically appropriate. That’s what I did to create the fur of the tiger in the picture above. Smooth blending can still be accomplished by using a brush with low opacity/flow.

http: pictures introducing inkist color palette.png

The color palette was actually the catalyst that got me to start writing Inkist . I used to have a tendency to put several shades of the same color into my color palette, switching between them in order to do shading. One day I thought “Wouldn’t it be nice if I could just keep the mid-tone in the palette and use a slider to get different shades?” A few days later I started programming. The brightness and temperature sliders will change the brightness/temp of every color in the palette including the currently selected one, and it does so non-destructively so you can just hit the reset button on the side to get back to normal. It was a simple feature, but one I find fantastically useful.

Inkist was submitted to the Mac App Store on Saturday, May 5, and will sell for $9.99. It’s a 1.0 release—there are certainly areas that need improvement, and features that need to be added—but I think anyone who enjoys digital art will enjoy it.
T logo
<< Newer Entries  |  Older Entries >>
All content © Tai Shimizu unless otherwise indicated.