This is the long version. The short version is in the release
| Part I - The Beginning
In the fall of 1992 I returned from serving as a missionary in
Chile for the Church of Jesus Christ
of Latter-Day Saints, and got my first look at System 7.
One of the new features was custom icons - just select the icon
in the Get Info window, and Paste! But I thought, hey, paste
it from where? We need an icon editor!
Ideas began to form. I picked the name FacePaint, because
all the good names with "icon" in them were being snatched
up fast. Icon Mania, I Like Icon, Icon Artist... (I'll be referring
to it as FacePaint until I get to the point in the story when
I changed the name). I tried as many editors as I could get my
hands on, figuring if I found one that lived up to what I thought
an icon editor should be, it would save me a lot of time because
I wouldn't have to write it! But that never happened. If you
want something done right...
A lot of the early work on FacePaint was done in paint programs.
And once ClarisWorks 2 came out, I started designing in color!
The design for the window went through a lot of evolution. ResEdit
was of course a big influence, but I also had my own ideas.
Editing icon masks has always been a pain, especially if you
want to get fancy like make holes or add a white outline. The
idea for simultaneous mask editing actually came from something
completely different. Back when I was in high school I wanted
to write an application for designing video games. This was when
color was still a fairly new concept on the Mac, so I was still
thinking in black and white. A video game maker would have to
have some animation tools in it, and designing sprites involves
defining which parts are transparent, and editing the mask separately
didn't even occur to me; it has to be integrated. The early prototype
of the "Game Construction Set" editor actually did
it the opposite of Icon Machine's final method - the opaque areas
had the little dots. I thought of a lot of ideas for GCS, but
this was the only one that ever got used for anything.
| Part II - The Great Stall
A friend of mine asked me at one point how easy it would be to
make a text editor that could do search-and-replace on fonts
and styles as well as actual text. Given what I knew about TextEdit
(the text editing utility built in to the Mac OS) this sounded
intriguingly possible, and a new project was under way - Style
Eyes. Soon I was having much more progress with Style Eyes than
FacePaint, so FacePaint got put on the back burner for a while.
I got a lot of good feedback on Style Eyes, and it still seems
to be unique in the features that it offers - style-based search
and replace, and cutting and pasting pictures for making SimpleText
ReadMe files. The closest thing I've found is TexEdit, which
does pictures, but the search and replace doesn't do styles.
Another program that I worked on instead of FacePaint was
Noises. Back in my Mac Plus days I had an INIT (this was before
they were called extensions) called Randomizer which gave me
random startup screens and sounds. I missed having Randomizer
once I got my PowerBook, but startup screens and sounds don't
work like they used to. So I wrote one for random startup sounds.
This one also got lots of good feedback, and was even included
on the disks of two books - Cool Mac Sounds, 2nd edition, and
Virtual Playhouse for Macintosh.
| Part III - Revival
I think one of the events that really got me back on track was
switching from Symantec C++ to Metrowerks
CodeWarrior. The thing that got me to switch was their PowerPlant
application framework. Symantec's Think Class Library was way
to bloated for me, so I had been rolling my own with ideas taken
from TCL as well as the NeXTStep framework. I called it the Object
Oriented Macintosh Programming Hierarchy, or OOMPH. Style Eyes
was written with that framework, and FacePaint began there, but
then, in the middle of converting OOMPH to full C++, I saw PowerPlant
and said, "this is what I was trying to do!"
I had already gotten the editing window to look pretty much
like what was in Icon Machine 1.0, except for the design changes
that have happened since then. The only thing that really worked
was the code for determining an item's icon. So I converted it
all over to PowerPlant and kept going.
On September 7th, 1995, I started keeping a log of my daily
progress. That file is now 76k and 2235 lines of bugs, fixes,
changes, and plans. Now I can go back through it and say things
like "See all these entries here? That was Christmas vacation."
That quarter in school I had a Computer Graphics class, and I
got the instructor to let me work on FacePaint as my class project
with the understanding that I just wanted to get certain things
working, and not actually finish the whole application. That
was when I got the basic drawing tools working (pencil, line,
eraser, oval, rectangle), and that was one of the highest entries-per-day
periods in my log file. It was also the only time I had any real
Progress over the next couple of years was slow because of
school and what not, but I kept going in spite of those that
started to think this was becoming a never-ending project. With
the release of Icon Machine 1.0, I officially thumb my nose at
| Part IV - Exposure
On August 17, 1996, I released FacePaint 1.0a1. The polygon and
text tools and a few other little things didn't work yet, but
for the most part it was there. I passed it around to a couple
of friends, got some feedback, and kept plugging away. I hoped
to reach beta (which I defined as being feature-complete) by
the end of the year, but that didn't quite happen.
In January of 1997 I took off for Japan to teach English for
a while. I brought along my PowerBook, and after three months
of settling in I took advantage of my precious free time and
started programming again. I got the text tool and a few other
things working, and by the time I got home in June it was beta
The first few beta versions saw about the same distribution
as the alphas- just to a few friends. Then I found a couple of
people over the Internet that were willing to help me out, including
Craig Hockenberry, author of Icon
Dropper. Craig game some good feedback, including a suggestion
that I change the name. "FacePaint doesn't tell me it's
an icon editor," he said. So I thought about it.
I've been working on an idea for another program which I call
List Machine, so the name Icon Machine came to mind. It sounded
good - not only does it fit with another of my projects, it also
sounds good on its own. So I went for it.
Of course, changing the name meant a new logo, so I flew into
action. This is one of the parts I really like. I went through
all my fonts (and I have a pretty good collection) looking for
a logo font, and found that the recently-downloaded Crush No.
49 from dincTYPE
seemed like the best fit. I took the FacePaint logo that I had
redone in Photoshop about a week before and dissected it, and
then I found a couple of neat effects to apply to the new logo
text. From there it was a simple matter of replacing the logo
in the about box, the web page, the ReadMe file, and the Apple
Guide file. Whew.
Then there was the icon. The new name required a very different
look, so I began to experiment with the themes I had already
developed for the List Machine icons. I ended up with four candidates:
The first icon was based on my first idea for the List Machine
icon, but I decided it didn't go far enough to get the "machine"
idea across. So I went more extreme for the second, but decided
I had gone too far. I bounced back to a simplified version which
is somewhat lacking in color and might not have enough to tell
what it is. The final version has just a touch more machinery,
with that little green part to balance the red-orange brushstroke
which has always been the basic Icon Machine symbol. (Well, almost
The really cool thing in all this is that I finally used Icon
Machine to design its own icon. The old one was done in ResEdit
because Icon Machine (then FacePaint) wasn't far enough along
to do anything practical.
| Part V - The Beta Flood
At the end of August 1997 I found www.betabase.com
where I could advertise my beta software to find testers. So
I filled out the form, putting September 6 as the end of the
beta period (silly me). By the end of the weekend I had gotten
10 requests from people wanting to be testers, and I happily
accepted them. However, over the next week I continued to get
several requests per day. For one thing, I hadn't realized that
my ad would appear on other sites.
When I realized how many requests were coming in I got more
picky about who I accepted. There was quite a variety of requests,
ranging from the basic "I wanna be a beta tester" to
those who gave me complete descriptions of their systems, listed
other programs they had tested, and told me what they liked about
Icon Machine based on what they read in my web page. As the messages
ranged from one extreme to the other, their chance of being accepted
ranged from zero to 100%. I became glad I had put September 6
as the deadline, because that meant the flood would soon stop...
or at least slow to a trickle.
So I ended up with a full load of beta testers. A group of
people who happened to be browsing the right site at the right
time, and were willing to crash their Macs, spend extra hours
writing e-mail, and put up with my version number puns so that
Icon Machine could make the world a better place. And I thank
them for it.
About this time I also started looking around again at Icon
Machine's potential competition. However, the icon editor craze
seemed to have died out a couple of years before, so the competition
looked scarce. And I realized that Icon Machine just might have
the best feature set of all of them (with the possible exception
of icon libraries, which I'm working on). Of course, I could
be wrong. If you disagree with me, just let me know and I'll
work to remedy the situation.
| Part VI - Release
The important thing here was to tell people. So, I told my friends
and beta testers (of course), and they told their friends (and
beta testers?). I told Cristian Viola of the contextual menu
and he put up an announcement ('cause I got that Edit Icon plugin!).
By the end of the first day (Saturday, November 1) the Icon Machine
page had gotten 58 hits, which was pretty good (though dwarfed
by StuffCM's 782). The next day got
213, then 170, then 71. Things were dying down. Then Andrew Miller,
one of the beta testers, sent a note to MacResource
calling Icon Machine "the Photoshop of icon editors,"
and on Wednesday I got 1025 hits. Ah, that's better!
That same day a Mr. Lawrence P. Carver became the first registered
user of Icon Machine, and a new era was born.
| Part VII - Eternal Progression
Of course, 1.0 was only the beginning. Two weeks later I released
1.0.1, fixing a crash in the polygon tool and a couple of other
things. Then it was time to take some whacks at the future feature
list. Version 1.1, released on January 15 ,1998, had tear-off
floating palettes and Mac OS 8 contextual menus (via my CCMArea
library), and of course a few bug fixes.
On February 25, 1998, the Japanese
version of Icon Machine 1.2.1 hit the Info-Mac archives.
Bridge 1 Software did the
translation, after having done all of my contextual menu plugins.
Way to save the best for last! If you're in the market for getting
some shareware translated, by all means check out Bridge 1. I
have found them to be responsive and flexible, and they do a
It is my policy to release a new version every time I fix
a crashing bug. I did this with 1.2 and 1.2.1. Version 1.2 would
have been 1.1.1, but I didn't like the way that sounds so I made
the preview draggable. It's kind of sneaky, but I'll have better
new features in the future. I promise.
| Part VIII - Welcome to the Machine
Well, first of all, that was the title of Apple
Wizards' review of Icon Machine in their February issue.
They liked it!
But the main point: as I was playing with Icon
Archiver one day, I had an inspiration: what if other icon
utilities could use Icon Machine as an external editor? You know,
you double-click on an icon in that program, and it opens up
in Icon Machine. You make your changes, and when you save, it
saves directly back into the other program. This is scheduled
to be a grand and ground-breaking feature of Icon Machine 3.0.
But even for the present, other programs can be made to be
Icon Machine friendly through the magic of Macintosh Drag and
Drop. Being able to drag and drop icons between other programs
and Icon Machine will be a great addition for both sides.
So I began contacting the authors of various utilities, inviting
them to add Icon Machine compatibility to their programs. Responses
were very positive. The authors of Icon
Dropper, Icon Archiver,
and Menuette all expressed
interest. But then I had to change my priorities a bit.
| Part IX - A Timely Vacation
After the Worldwide
Developer Conference in May of '98 (I didn't attend because
it's really expensive), word got out that Mac OS 8.5 was going
to have some significant changes in the world of icons - a 48x48
size, 32-bit icons, and so on. There was no indication of anyone
making an editor for these new icon types (except maybe Resorcerer;
ResEdit is still dormant), so I had my work cut out for me -
I decided to make Icon Machine "the" icon editor for
As it happened, the semester at the Academy
of Art was ending just then, so I was about to have a solid
month to get cracking. The Navigations Services SDK had also
just been released and I was working on adding support for it
when I got the new-icon-stuff news. Thanks to some sample code
I found, I was able to add Flip and Rotate commands finally.
And to go with the idea of "the" icon editor for Allegro,
I decided to start converting the Icon Machine interface over
to Appearance Manager controls. And that's a lot of stuff for
one version upgrade, which is why the number jumps to 1.5 from
the previous 1.3.2.
This was also a departure from my previous plan of adding
icon libraries and external editing before any of the smaller
stuff. I had wanted to get that done soon, making the jump to
2.0, but I decided that Icon Machine needed to be Allegro-savvy.
But don't worry, my list of features to add wasn't shortened,
| Part X - My Work Is Never Done
Version 1.5 took longer than expected. Converting to Appearance
Manager controls involved a lot of tearing things out and sticking
new things in and rewiring, and there were lots of kinks to work
out. By the time I got up to 1.5b16 I decided to make it a public
release just so people could enjoy the improvements and see I
was still alive; I figured the bugs that were still there were
tolerable as long as I made it clear it was a beta version. Soon
after that I changed my mind and fixed a few things to release
1.5b17, and then gave up on 1.5 because I really wanted to move
on. A few days later I sent 1.6d1 to the beta testers.
The reasoning behind version 1.6 was that there were some
interface changes that I wanted to make for editing 32-bit icons,
and some of these were still useful in the old-style icons. So
I added the Mask View (not to be confused with the Mask drawing
mode) and made the editor less strict about keeping colored pixels
opaque. I also ripped out the Navigation Services customization
I had so much fun making; for some reason it didn't work right
in Mac OS 8.5.
I released 1.6 without running the latest changes by the beta
testers, and I regretted it before the end of the day. Serious
bugs were found, and a few hours after 1.6 was posted I hastily
put up 1.6.1. That haste also turned out to be a bad thing, as
there were still more bugs waiting to ruin my day.
Some people reported a -192 error as Icon Machine was starting
up. -192 means "resource not found," and it happened
as Icon Machine was trying to read the standard 8-bit color palette
from the System file. But it seems that for some reason the new
iMacs and G3 machines don't have this resource in their System
files. One user said it was caused by a virus. Either way, the
solution was simple: just copy the resource from my System file
into the Icon Machine application.
| Part XI - Adding Depth
One of the biggest struggles in producing Icon Machine 2.0 was
deciding which features to put in 2.0 and which ones to delay
until 2.1 or later. I wanted to get 2.0 out the door as soon
as I could, partly because I was starting to get some competition
from other shareware authors. So I decided that I would have
32-bit editing, along with whatever other features were needed
to extend Icon Machine's interface into the realm of millions
of colors and 256 levels of transparency. A few other things
did manage to sneak in, such as Appearance sounds and the gradient
tool, but for the most part I stuck to my plan. Ideas and suggestions
kept piling up, and I kept saying "Yes, that would be cool,
but I'm not going to do that for 2.0. Probably 2.1."
I also started getting more demanding in how features requests
were submitted, largely in an attempt to cut down on how many
I was getting. But I was inspired by one request which I thought
should be the model for others to follow: the beveled foreground/background
color swatches. This user decided that the F and B that I had
been using to identify the swatches were too small and hard to
read, and suggested the 3D beveling effect instead. The key was
that he even included a picture of what he thought it should
look like. The principle is this: the more work you do in designing
and describing your feature idea, the less I have to do to implement
it, and the more likely I am to do so since you've made it so
easy for me.
I had been growing more and more dissatisfied with the Icon
Machine logo, and version 2.0 was as good a place as any to change
it. I had one design idea from several months before, but it
didn't fit with the idea of editing 32-bit, anti-aliased icons.
Also, I wanted something that better expressed the "machine"
in Icon Machine. I was working with Tobias Törnblom to design
a nifty new 32-bit icon for the application (I enjoyed the icon
work he did in his
Kaleidoscope schemes), but it was hard to come up with the
right elements to represent a machine that makes icons. When
I released the first development version of Icon Machine to the
testers, I used an icon of my own design, and the responses were
so positive I stuck with it. I had taken the old document-with-a-brushstroke
icon and surrounded it with some gears. I had given up on the
idea of expressing an icon-making machine, and just put the "icon"
and "machine" elements together. From there it was
a simple thing (at least conceptually) to take the gear idea
and make a new logo. And of course once that was done I had to
re-design the web page. But when the fun was over I had to go
back to programming.
Just when I reached the alpha stage in developing Icon Machine
2.0, where I had declared that all planned features had been
implemented and all that remained was debugging, I got some feedback
that convinced me to make a significant change to the interface.
When people edit icons on the Mac, they're used to seeing the
mask and working on it directly. I had added a Mask View in version
1.6, but there were no visual cues to its existence except for
a command hidden up in the View menu. It needed to be more obvious;
sometimes it was even unclear whether Mask View was active or
not. So I took it out of the View menu, and instead put a couple
of buttons in the editing window, relying on the tool tips to
advise the user that the tab key is still available as a shortcut.
This experience reminded me of some important user interface
design principles. First of all, there's the "out of sight,
out of mind" factor. You can generally expect people to
not read the manual, and to not go exploring the menus to see
what's there. They just run the program and start clicking whatever
catches their eye. If they don't see a feature, they won't use
it, until they happen to stumble across it a year later. Second,
just because it's standard doesn't mean people know about it
and/or like it. I had the tab key as the shortcut for the Mask
View command, so I used the standard Appearance Manager method
for assigning the key and displaying the tab symbol in the menu.
But people would see it and not know what it was. One person
even thought it was a bug. I kept having to explain it, which
should have made me realize that rather than trying to teach
my users about obscure interface standards, I should make my
program easier to use.
You can't tell users what to expect or how to think. You have
to anticipate it, and make it work for you. And them.
| Part XII - Just Say When
As I mentioned before, one of the never-ending battles in the
development of Icon Machine 2.0 has been deciding what features
to put in when. But as with version 1.0, eventually there were
no features left to add and no bugs left to fix. The new help
files were rewritten, and the web pages were redesigned. Special
thanks to Onyx Technology
for Spotlight, without which I might never have found some bugs.
I also finally have some direct competition in Iconographer.
Icon Machine and Iconographer each has features the other doesn't...
so which one is better? Try them both for yourself. You're probably
more obective than I am.
Thanks to everyone who provided feedback and support. It feels
great to finally say that this is done, even though I know there
is a lot of work yet to be done as Icon Machine continues to
| Part XIII - It Never Stops
Just as I was getting comfortable with 32-bit icons, and finally
starting to put some fancy conveniences in, Apple had to pull
another one on me and put 128x128 icons in Mac OS X. Yikes.
Personally, I think it's going a bit too far. I mean, we never
even got around to using the "Huge" (that's the official
name for the size) 48x48 icons, and now we're skipping to 128.
When the Aqua interface was first introduced, the monstrous icons
were justified by saying that we have much bigger monitors now
than when 32x32 icons became the standard. I say, for one thing,
our monitors generally aren't four times as big... unless you
can afford a Cinema Display. (Four times the dimensions of the
original Mac screen would be 2048x1536, which is at least six
times the total screen area of today's average computer.) Second,
we got bigger monitors so that we could see more icons, not so
we could actually read the Quantum label on a gigantic hard drive
| Part XIV - The Power of Three
In the session on icons at WWDC 2000, I found myself having to
get up and point out that the list of icon editors they gave
was incomplete, and that Icon Machine would be updated to edit
Mac OS X icons.
Adding support for the new icon sizes involved redesigning
Icon Machine's interface, separating the actual editing area
from the main icon window and putting the tools in a universal
floating window. In fact it looks more like Photoshop now - but
without infringing on any patents.
I am impressed with Apple's commitment to Carbon. It was initially
introduced as something merely meant to ease the transition,
but they have added some great new features that make it just
as good an alternative as Cocoa, and it's obvious that it's here
I've already released two icon sets
that I made using Icon Machine (including another Pixelpalooza-winning
set), and I finally updated the iconmachine.com domain name to
point to this site. I've gone throuh the usual round of beta
testing with my trusty testing team, and then the real fun begins...
| Part XV - All According to Plan
It had pretty much always been my plan to release a public
beta of Icon Machine III. OS X did it, so it just seems logical!
Plus it had been a relaly long time since the last update, so it
was partly just to finally get something out there.
As WWDC 2001 approached, I remembered that the previous year
I promised everyone that I'd give them OS X icon editing, so
it semed like a good plan to release the public beta before the
conference came again. Not only was it for the sake of following
through on the previous year's promise, but it also strengthened
my resume - I had gotten laid off from my job at Static Online
(now Blue Falcon Networks)
a month before.
In all of the excitement, I had almost forgotten that I am
a one-man show, which means I have to do more than get the program
working. Before I release it, I have to redesign the web page
and make sure the payment details are all set up at Kagi (something
that din't quite go smoothly in the 2.0 release). But fortunately
that stuff doesn't take nearly as much effort.
And then WWDC came... and it was deja vu all over again. I
started wondering what it would take to get Icon Machine's name
on that slide. But one pleasant surprise was that before I could
get up to plug my product again, someone from REAL
Software actually beat me to it.
| Part XVI - Good News And Bad News
The good news was that I got a job a lot faster than I expected,
working in the small Macintosh team at Efficient
Networks. So after a short year and a half in Los Angeles,
I moved back to Berkeley, just barely in time to hang out with
Greg Landweber (of Kaleidoscope
fame) before he left Berkeley for the University of Oregon.
The bad news was that Icon Machine III wasn't done yet, and
it was a couple of months before I got settled and started working
on it again. But the dwindling shareware payments and the appearance
of a couple more competitors finally got me going. So the time
that formerly went to things like television or making dinner
was now dedicated to the Machine so I could get this thing out
But then I decided to make some changes. For one thing, the
new icon I had made was starting to bug me. When I would see
it out of the corner of my eye in the Dock, it looked too complicated.
It needed to be easier to recognize and understand. And the fact
that most of the elements were cut off at the icon's borders
bothered me. It made it look cramped and restrained. So it was
time for something better.
I kind of surprised myself by going with the "angled
paper with a tool on top" seen in most of Apple's OS X application
icons, which I always thought was too restrictive a rule, but
in this case it worked. And I kept it unique by staying with
the same thick-bordered, free and curvy style of the first design.
So here's a brief history of the icons of Icon Machine. Funny
how the document icon only seems to change half as often...
I must say I like the new icon ten times better.
If you've gotten to the bottom of this page by actually reading
the entire story, I must say I'm impressed. I think I wrote it
mainly for therapeutic purposes, but as they say, if you enjoyed
reading it half as much as I enjoyed writing it, then I will have
enjoyed it twice as much as you.
Just remember that the story isn't over yet.