Uncommonplace Shareware - Icons - Games - Forums

Shareware

  This is the long version. The short version is in the release notes.

 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 deadline.

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 them.
 

 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 time.

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 always...)

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 site Control-Click, 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 good job.

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, Kineticon, 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 Allegro.

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, just rearranged.
 

 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 progress.
 

 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 icon. Sigh.
 

 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 to stay.

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 the door.

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.

Blog