The Axamblis Blog » Axamblis
Developing Software is an Art.
Artifica — Saturday, November 7, 2009 6:08

Let’s reinvent Image Editing and Design

Sit back for a minute and try to name an image editor that is user-friendly, simple yet powerful and productive. I’m having a hard time figuring out just one piece of software that matches this description. “What about Photshop?” you might ask. To be honest, Photoshop is a lightyear off of what I would call user-friendly and simple to use, and speaking of power and productivity: when I design something in Photoshop, e.g. website graphics and the like, I usually spend 10 to 20% of the time managing the different image files, keeping them in an editable state, pushing the files through the compressor and messing around with hundreds of backup layers and files.

Backup Layers? Why on earth…

…would someone need backup layers and files in Photoshop? The answer is simple: Errare humanum est — I make mistakes. Sometimes I need to intersect two selections very precisely, so I create two fill layers with each of them stored in the mask, and do my selection logic with them. So there goes the third layer which has the intersection of the two layers stored in it. Why not throwing the other layers away, why keeping backup layers? Well, usually I realize half an hour later that the mask I created is misplaced, has a bad shape, looks dull, etc.. And because Photoshop is one of the most destructive and unforgiving applications out there, there’s no way of efficiently going back half an hour to change something and then returning to the present with the changes applied immediately.

Destructibility and Unforgivingness — Vice or Virtue?

Why are there applications so user-friendly they let you undo every click you made, forgiving you about any mistake you could have possibly made, and other pieces of software that feel more like a big block of cheese you try to talk into helping you retouch your holiday snaphsots?

The answer to this question lies in the past. In the early days of computers, when Photoshop and Microsoft Office appeared for the first time, a computer running on 1 MB of system memory was considered the ultimate supercomputer. Unlike today, memory footprint and efficiency were the ultimate and exclusive concern of most software engineers back then. User-friendliness is a luxury that has popped up on the computer only a few years ago. Operating system suppliers like Apple and Microsoft have started to include more and more functionality into their systems which make the usage of applications across the platform more uniform to the user. Writing an application like TextEdit on today’s Mac OS is a matter of a few hours and perfectly illustrates the luxury and power built into today’s operating systems: Compared to TextEdit, the first Microsoft Word looks more like a toy and had by far less features, even if it did cost quite a bunch of money (which TextEdit doesn’t).

So, if you write a new program from scratch on Snow Leopard, you get all the nice features and gems of the operating system for free (spell checking, file handling, text input, undo management, networking, drag’n'drop, etc. … you could fill dozens of lines with features). If you want to load an image from disk, instead of writing all the image decompression and loading algorithms yourself, you just say “system, read that image!”. The system won’t even complain you didn’t say the magic word! There are parts in Photoshop and Office that probably date back way into the last century. Migrating a program which has millions over millions of lines of source code to new technologies is a pain and not realistic. So what do companies like Adobe and Microsoft do? They adopt some of the new features of the operating systems by writing them themselves. Have you never wondered why Photoshop and Office just don’t feel at home on Mac OS X and Windows XP, but more like a stranger having difficulties adopting to the local rules and culture?

I’m sure that Adobe and Microsoft are doing their very best to keep up with the growing demands and standards on modern computer platforms. Vice or virtue? Maybe it’s both. Sometimes you just have to choose the least painful way of doing something.

Are you trying to say it’s time to reinvent Photoshop?

Yes and no. There’s absolutely no point in trying to clone Photoshop because…

  1. it’s probably illegal due to patents and copyrights held by Adobe
  2. trying to run against Photoshop with your own PS-clone is just ridiculous.

So it is definitely not the time to duplicate Photoshop and add some user-friendliness-shickymicky to it to get it sell on the market. Photoshop is the best image editor out there in terms of functionality and power. So where’s the yes?

I think it’s time for a new approach on how we edit and design images. Some things have proven very powerful in the past, take layers for example: People got used to the idea behind layers and many other types of applications have adopted the scheme. This is something you have to keep and evolve in order to make for a good image editor. On the other hand, there’s the thing about destructive filters: In 2009 it shouldn’t be necessary to worry about the contents of a layer being messed up because a filter changes them irreversibly.

Indestructibility and Forgivingness — The Goal for a new Editor

These two words should be the ultimate goal for a new image editor.

Everything the user does should be undoable in an easy way. If the user feels safe in the editor, if he knows he can click anywhere in the app and try everything without having to worry about not being able to return to the original state, that’s when we suceeded creating an image editor for the new century. If the user can apply any filter to any of his layers without having to keep a backup of them, then we have succeeded.

“You’re really trying to reinvent the leading image editor with a robust undo system and an automatic backup-keeping so that filters can be undone from layers?” — Not at all. This was just a simple description of how things should work. The true power behind the filters is that they should be dynamically calculated. With today’s high performance graphics cards and CPUs, image filters can be calculated on-the-fly. The user can create a stack of 50 filters on his layer and see the result immediately. Don’t like the sepia tone of filter 29? Just change it, and filters 29 to 50 get recalculated – superfast.

This sounds nice but doesn’t reinvent the wheel of design and image editing. There’s more to it than just a few filters. We should radically change the way people input data like images, colors, pixels and the like into the application. Everything should be vector-based from the very beginning to the end. And with on-the-fly filters, you wouldn’t even have to rasterize your vector shape to blur it. All an application needs from the user is a clear indication of what he wants to do. So if he wants apply a blur to a vector, there’s no doubt the vector should be rasterized in the background and have the filter applied to it. It should not be about what the application can do, but what the user wants it to do.

If the user wants to create a reflection effect, he shouldn’t have to think about how to update the mirrored and faded reflection when the original changes. He should be able to create an instance layer which duplicates another, and apply a mirroring and fading filter to it. And since the filters are computed on-the-fly, he can change the original layer with the reflection updating in real time. This is how things should work.

And that’s just the beginning…

Those were only a few ideas and concepts one should try to follow and implement when creating the next big image editor. There are many, many more important things: how fast can you get your updated image exported again, how easy can you handle the user interface, how versatile are the tools the editor gives you at hand, etc..

Maybe creating such an application is a bit unrealistic, but maybe the time has come when finally someone should try to do it and establish new standards in image editing.

If you happen to have any ideas for such a new image editor, write a comment!

Thanks for reading the article.
Until my next revolutionary plan to world domination: Take care!

Axamblis Stuff — Sunday, September 20, 2009 14:49

A Fresh Design

The Axamblis Blog has been around for about 1 1/2 years now. Unfortunately I ended up not having as much time to write posts as I had hoped the day I installed the WordPress webapp. That was mostly due to the fact that I was in my last year of school and therefore hadn’t much time for blogging. But now that I’ve passed my exams and graduated, I’m taking a year off to dedicate myself more to software development and to get Axamblis ready again. This change in life also brings me some time to write regular blog entries which I will try to do as good as possible.

Refurbished Look

But do I want to write blog entries in this WordPress theme of mine, this rather dark and shabby looking enclosure? Hell no. So I sat down and started to design an all-new theme for WordPress which integrates itself into the rest of the Axamblis website. This makes the blog feel like it really belongs there, and not as it were some completely isolated place hidden behind a subdomain on my server. So the new design looks a bit like a newspaper and is way more lightweight than the old one. The comments look nicer, the blog is a bit better arranged and the overall reading experience is more relaxing due to the lighter color palette.

One thing I realized once again when I was drawing the graphics for the blog in Photoshop: Someone really should write a replacement for Photoshop which…

  1. is easier and more efficient to use
  2. looks better and is faster
  3. and doesn’t drain your bank account that much.

Maybe I’ll take a look at that if I’ve got enough time this year.

Anyway…

…enjoy your stay at the Axamblis blog. I’d be happy to receive comments or emails on stuff you didn’t like, you especially like, or you would like if it was there.

P.S.: I’m serious about that Photoshop thing, someone really has to write a replacement… Cheers :) !

Axamblis Stuff — Saturday, May 10, 2008 23:16

Blog Kick-Off

I’ve seen so many developer blogs around these days, I started to feel like “Why don’t I have one too?”. After having read Andy Matuschak’s blog regularly and sneaking into various other Mac OS X Developer blogs from time to time, I eventually decided to put up one myself.

A few words on myself

Well, when I was 9 years old I began to program. Starting with BASIC and switching to REALbasic later on I made my first steps and learned some of the principles of software engineering. When Mac OS X 10.0 finally came out and old Project Builder started to become stable and reliable, I decided to move on — leave REALbasic and give the new Objective-C as well as the new Cocoa API a try. I have to admit it was hard work learning Objective-C, not having had any C or C++ background, just BASIC in my mind.

Since my first steps in BASIC, 9 years have passed which makes me 18 years old, having 9 years of experience in software development, as well as probably 7 years of Cocoa experience.

So why launching a Weblog anyway?

A few years ago, when Apple started this whole Podcast-thing in iTunes, I came across this great Podcast by Blake Burris, “CocoaRadio”, which I felt was just great to listen to — hearing all those other developers talk about their problems and experiences, as well as their software.

Two years later, Steve Scott started his gorgeous “Late Night Cocoa” podcast which is now part of the Mac Developer Network. The show was great, having software engineers speaking about basic as well as more advanced topics concerning Mac development, directly addressing development issues.

In what I remember was the fourth episode, Scotty interviewed Scott Stevenson — who I haven’t known back then — about new Leopard features. At the end of the show I picked up his blog address (Theocacao.com) and started to read it. Later on, Andy Matuschak joined the show talking about his updating framework Sparkle, also leaving his blog address (andymatuschak.org) at the end.

That somehow pushed me into reading weblogs, which I now do on a fairly regular basis. I was overwhelmed by the quality and beauty of some of the programming blogs I’ve read. The Mac OS X developer community is just great, and growing rapidly as well, therefore I thought about trying to “give something back to the community”, publishing my developing experiences.

What “The Axamblis Blog” is all about

In order to publish my software projects, I started “Axamblis” which now acts as some kind of pseudonym. Some of the topics that I will deal with are

  • thoughts on Axamblis and the projects I have
  • articles on Cocoa
  • Xcode and Interface Builder
  • the Developer Tools
  • general Mac OS X development topics
  • as well as sometimes personal stuff regarding the blog or the chaos I call my life :-)

I won’t write articles on a regular basis, but I’ll try to keep the blog alive, full of intersting stuff such as tutorials or articles and hopefully also full of comments and responses written by readers. If you have any thoughts, ideas, pros and cons, e-mail me at fabianschuiki@axamblis.com (I know I must be nuts publishing this one here, ready to be found by “scan bots & friends”).

Thank you for reading the blog, so I close my very first article with the words…

Welcome to The Axamblis Blog!