Finding a Name

There are more than 150 million domain names, there will soon be 1 million apps in the Apple and Google App Stores. The OED has 171,476 words in current use, and 47,156 obsolete words. The numbers tell the story. Finding a name for a new product is hard.

For the company, we have selected Exploratory Software, Inc. It’s a long name that you don’t want to make people type or say very often but for me, building software is a process of exploration. You pick a direction and head out into a wilderness of code and you don’t know where (or if) you will arrive. The path for some software is predictable but for innovative software, it is an iterative exploratory process. The company name captures this for me. The product name is really the important one anyway.

Finding the product name was much harder. We need a short, fun, unique, easy to spell, descriptive, and available name. Pretty much impossible… We settled on Explory. A contraction of explorable story. I’m excited about it. It’s easy to spell once you have seen it. There are no other apps in the store that use the word. You can send an explory to a friend.

The only problem is that many people groan when you tell them the name. It will be up to Peter Goldie to craft the right marketing and imagery to create a story for the name.

Telling a Story about the Land

On our ranch, there are many things we watch to understand the health of the land. We then try and make small changes to move in directions we believe are healthy. We keep cows out of wet areas so they don’t cause erosion. We graze the cows harder on the shallow rooted non-native grasses and try to protect the deep rooted native grasses. We give them limited access to the creeks so the fish have clean water but we maintain some openness to keep plant diversity high. Grazing keeps the thatch down and helps increase plant diversity and productivity. Too much grazing damages the plants and trees you want to take care of. These are all modest changes that hopefully over time will lead to big changes in the land. We aim for deeper more productive soils that hold more water, host more wild animals and produce more beef.

But, how can I tell the story? I want to capture photos as the seasons and the plants change over the years. I want to share my thoughts with words and my voice. I want to capture the sounds of the waterfall and birds. Video can capture the speed of the swallows and the physicality of working the cows with the horses. It’s a big story with details from the earthworms and preying mantis to the deer, cows, coyotes, chickens, pigs, and ancient trees. It’s a long story it will take many years to tell and should be alive as it’s told. It’s a story that I hope my kids and their kids will appreciate. It should be a collaborative story, I can’t tell it all myself. I wish I could watch this story as told by the Indians and farmers that were on the land here before us. We could learn so much.

We have tools tool to tell this story. Stories around the dinner table are the best. Words in a book are an amazing tool but are a lot work. Photos are a great tool but only capture a part and it’s hard to add our thoughts. Movies are an amazing tool but take great skill and the linear format makes it hard to capture depth.

What if we had a tool that would capture all of this? The phone in my pocket, the network and the cloud are a revolution waiting to happen here. Clearly Facebook and social networking platforms are doing much of this but I want something with richer media and where I can add more value with my thoughtful editorial. I also want something that is easy enough for a quick story for the grandparents but is also powerful enough professionals and for a knowledge library in the cloud.

I have a story about the land. You have stories about your family, your maker project, your lessons, your loves. The tool can be the same and we can all use it as we dream.

That’s the tool we hope to build.

A New Project – Explory

I started my professional programming career building games for the Macintosh when it launched in 1984. Airborne! was a simple game but it was one of the first Mac games to use digitized sound. Dark Castle followed and was one the first Mac games to have high quality animation and to be designed by professional artist. It was great adventure to learn how to get the most out of this new powerful but constrained platform.

The iPhone is a great place to test your programming and design skills to see if you can build something great within the constraints of the focused hardware and small screen. I’ve been watching on the sidelines for a few years but the urge to be part of this new revolution finally got the best of me. When Gary Grossman, Peter Santangeli and Robert Tatsumi were ready for a new adventure, we decided to finally tackle the story telling project that Peter and I have talked about for years.

It’s always great to find a project that is new and builds on what you have done before. My experience with low level programming, games, multimedia, video and web conferences provide a great foundation for this new project.

For me, a key motivation is that there are stories that I want to tell. Every parent understands the motivation to capture magical moments with your kids and to be able to capture a part of yourself that they can learn from as they grow. I am also interesting in learning more about the natural patterns in our world. Where does food come from? How can we make it healthier? How can we make the world a richer, healthier and more diverse place as it meets our needs instead of damaging and it and reducing it’s productivity and complexity? There are lots of stories for me to tell and maybe, some will be interesting and valuable to the community.

Flash as a Communications Tool

When we started building Flash, we had a great vector graphics editor but very few customers. We tried to convince potential customers that we provided an easier and faster way to draw on the computer than our competitors. However, our competitors had been in the market for many years with good products that customers were happy with so the customers did not need a better solution. At the time, drawing software was focused on creating images that would be printed on paper. When the web began to gain momentum, we realized that the needs of an editor to create graphics that to be delivered on a computer screen were different than the needs of an editor to create graphics for paper. Graphics are a tool for communicating ideas and feelings.

Throughout history, new communication tools have delivered great benefits to society. Communications is a key part of the foundation of modern society. Some key inventions in communications:

  • Spoken language
  • Written language
  • Postal service
  • The printing press
  • The pencil
  • The chalkboard
  • The telegraph
  • The telephone
  • Radio
  • Television
  • The typewriter
  • The word processor
  • The laser printer
  • The compact disk
  • The cellular phone
  • E-mail
  • The world wide web

When Apple Computer introduced the Apple LaserWriter, they created a new tool for the delivery of information. Suddenly, it was possible to create very high quality print material for a much lower cost than was previously possible. Tools such as Adobe Illustrator, Adobe PageMaker, and Macromedia Freehand provided tools for users to create content for this new information delivery medium and as the medium grew, sales of these tools grew as well.

The World Wide Web also provided a new communications medium. Many of the software tools for this medium evolved from tools that were used for printed information. Adobe Photoshop is the best example of this. When we saw the web begin, we had a drawing program for print that had an insignificant market share in comparison to the established products in the market. We realized that this medium had different needs than the print medium. Since we had no existing customer base to serve, we were free to modify our tool to serve this emerging market.

We realized that the needs for creating graphics that would be delivered over a low bandwidth network onto a computer screen were different than the needs for creating graphics that would be delivered on paper.

  • Display technology – Laser printers a very good at creating very high resolution black and with graphics computer monitors are good a creating low resolution images with lots of colors so we made sure that our graphics looked much better on a computer screen than the print tools.
  • Animation – On an image is on a piece of paper, it never changes while the image on a computer monitor is redisplayed more than 60 times every second. This means that to create graphics that take advantage of a computer display, you need to support animation.
  • Interactivity – Graphics on a piece of paper cannot respond to a users input while computers have mice and keyboards that allow users to interact with graphics. We added buttons and simple interactivity so that users could interact with graphics on the computer.
  • Bandwidth – It turns out that products such as Macromedia Director already provided the ability to display high quality graphics with animation and interactivity on a computer screen but Director was designed to create CD-ROMs. With a CD-ROM, you had 600 megabytes of storage that you wanted to fill up. With the Internet, you needed to deliver these graphics over a 28.8 kbit/second network. This is 15 times slower than a CD-ROM delivers information so we built a technology to create graphics that could be delivered quickly over a slow connection.

It was clear to a lot of people that there was a need for animated and interactive graphics to be displayed with web pages. Early on, there were a lot of people building products to address this need.

  • Animated GIF
  • Macromedia Shockwave
  • mBED Interactor
  • Java
  • Dynamic HTML
  • Coda
  • VRML
  • Sizzler by Totally Hip Software
  • Direct Animation by Microsoft
  • Liquid Motion by Dimension X
  • CorelXara
  • ObjectDancer by PaceWorks
  • SVG, PGML by Adobe

One risk for Flash was that it was both an authoring tool and a display technology so it competed with tool makers as well as display technologies like VRML, Java and DHTML. Much of the market place felt that the standard display technologies would dominate the delivery of multimedia on the Internet. As it turned out, these technologies did not live up to their initial promise. They were complex, slow, unreliable and difficult to create content for. Because Flash provided a complete solution that included an efficient and reliable runtime as well as a powerful and easy to use authoring tool, designers found they could express their creativity best using Flash.

Seeing how designers have learned to use Flash over the past few years has been the best part of helping to create Flash. Flash provides a basic set of tools but it really takes a community of designers to build techniques around those tools. I am still amazed when I see a Flash file and wonder how did they do that? The gradual accumulation of ideas and techniques within the Flash community is a key part of the success of Flash.

I believe we have barely scratched the surface of the Internet’s potential as a communications tool. The Internet has been a place where you go to get information but as DSL, cable modems and wireless access grow, the Internet will become more important than the telephone as a communications tool. It will be exciting to be part of the creation of software that enables the next generation of communications tools on the Internet.

The Magic of Flash

I’ve always had a passion for building things and solving problems. The magic of programming appears when you start with a blank screen and create a set of rules that bring that screen to life. The rules are nothing more than electrons in memory chips or magnetic fields stored in a very thin and carefully created layer or rust. That part of programming is a very precise and predictable process. There’s also a magic associated with debugging software. In theory computers are very precise machines. In practice, the software they run is created by fallible people. Software becomes an organic layer that is built on a precise foundation of electrons and magnetic fields. There is magic when debugging software. There are hundreds of thousands of lines of code in a complex application and there are billions of different states that software can be in, so searching for the one line of code or combination of states that leads to a bug can be very difficult. Successful debugging is much like solving a murder case. You can spend lots of times looking for clues and when you finally find the answer, it is a magical moment. Eureka! A good programmer can do this many times in a day. It’s actually a bit more of a rush that you might imagine you could get while sitting in front of a keyboard.

This process of creating software, starting with a blank page, building a ephemeral creation that does something useful and then finding bugs and fixing them is the magic of software development and lots of people do this everyday. But this pales in comparison to the true magic of Flash. Imagine the invention of the telephone. In one sense, it’s a very mundane creation. It simply transmits sound from one place to another. But imagine all the wonderful conversations that take place on a telephone everyday. A little boy calling dad at work, to tell him about winning the soccer game at school, lovers talking about their dreams in the middle of the night, or friends comforting each other about their insensitive bosses. The magic of the telephone is in how people use it. I wonder how the inventor of the pencil felt about the impact he had on the world. A pencil is just a simple device for making marks on paper but think about the amazing things people do with pencils. Flash started as ideas that were captured with a pencil on bits of paper. Homes are designed using pencil on paper. Notes are written. Grocery lists are created. The magic of a pencil is that it’s a simple a reliable device that people can use in lots of interesting ways.

Although Flash is certainly not as important as the telephone or pencil, it has the same kind of magic. It provides a basic ability to move images on a computer screen and make sounds and lets people do lots of different things. Lots of magic has gone into and continues to go into the creation of Flash, but the real magic is the amazing things people create with Flash. Flash is like the telephone and pencil because they are all tools for allowing people to express themselves. There is potential magic in the tools but the real magic is in the expression.

For me, there is an art in creating software, it gives me a way to express myself. Flash has been a success because so many other people have been able to express themselves using Flash. The appeal of the design process is that there are always new problems to be solved. You might think that inventing the pencil was a simple thing but that simplicity is exactly what makes it a great invention. Flash’s biggest weakness and one of it’s strengths is it’s complexity. Complexity is a weakness because it limits the number of people who can create things with Flash. That same complexity is also a strength because it means that people can create sophisticated things with Flash, that Flash has become a skill and that a community to support people who create with Flash has grown.

Software as Art

Have you ever looked at the curve of a sculpture and felt the softness of the stone in your mind? Have you ever looked at the sweeping roofline of a building and been drawn inside? Have you ever seen the flowing lines of a chair and been compelled to sit in it? To me those things all have a bit of art because they evoke a feeling beyond their function. Anyone who has used a personal computer knows that software can invoke a feeling. Frequently there is an urge to throw something out a window. But software can also evoke good feelings. The sense of satisfaction when you clear a row of blocks in Tetris, the feeling when the computer responds to your click instantaneously, software that does it’s job but does not get in your way, and a user interface that is attractive but not distracting. These all have a bit of art in them.

We could put more art in software than we see today. Software developers have an opportunity to focus a bit less on how many features their products have and a bit more on good design, quality, and having a clear vision for the goals of a product. There are several measures where today’s computer software should be a lot better than it is.

Complexity

There is unnecessary complexity everywhere in today’s software. Why does my Start->Programs menu have 90 items in it? Why do I get a “critical update” from Microsoft every couple of weeks? Why are programs I download from the web so large? Why does RealPlayer include a jukebox, phone program, and downloader in addition to the video player I want? Why do I have to go through three screens of information just to sign up for a web site? Why do I have to look up the settings I lost when I need to configure my e-mail account? Why did it take me several hours to configure the accounts and Internet Software on my new Windows 2000 laptop even though all the software was preinstalled?

Computers are inherently complex devices. Many of the great innovations in computer science such as the microprocessor, and compiler are tools for creating layers that hide the complexity underneath and enable us to create more sophisticated technology. Complexity is not inherently bad but we need to do a much better job at hiding the complexity in operating systems and application software from users. I don’t need to understand how a transistor works to program in JavaScript, and I should not need to know the name of my SMTP server is to configure my e-mail account.

Reliability

Why did the Sony web site stop working when I upgraded Internet Explorer from version 5.0 to 5.5? In fact, that is the only new “feature” that I noticed in the new version. It was not a wildly successful upgrade for me. Why do I need to reboot my Windows 98 machine several times a day? Why doesn’t the TV Tuner card in my PC work any more? I suspect something is wrong with a driver somewhere but I have been unable to fix it.

Performance

The computer I am typing this on can do hundreds of millions of operations each second. So why do I have to wait every time I turn it on? First I wait for the computer to display the login screen. Then I wait for the login. Then I wait for the desktop to load. Then I start Internet Explorer and Outlook Express and wait for them to load. I read my e-mail, check my stock quotes and then wait for Windows to shut down so I can turn off the power. Can you see how I might get an extra few minutes of free time in my life every day?

Imagine that you are reading a book but your cannot use your hands. Each time you want to turn a page, you have to call the librarian over to turn it for you. Sometimes the librarian is close by and turns the page quickly, sometimes he is busy and you have to wait for the page. That’s how I feel when I read on the Web. You might say that is because modems are slow but my modem can receive 7000 characters per second and I can only read about 60 characters per second. The modem should be able to stay ahead of me. In fact, I know my modem is not busy while I am reading a page. It could be loading the next page automatically so I can turn to it instantly but the web is not designed that way. If I could turn web pages without any delay, that would be a little bit of art. It would not be difficult to design a system that works that way. There are two issues here. One issue is control. Because I cannot predict when the page will load, I do not feel in control. The other issue is that I have a rhythm when I read and if that rhythm is interrupted by having to wait for the computer it is very distracting.

What’s the Problem?

There are several forces that have created these problems in the software industry.

History

The basic process of software development is to write some base code and then layer more complex code on top of that. As you add new features to software, you typically keep all of the old code and add new code for the new functions. This is much like the process of evolution. You typically only remove old code when the cost of keeping that code is higher than the cost of replacing it. But the cost of keeping old code is very small in terms of direct costs. The added complexity created by keeping the old code grows slowly over time so it is easy to ignore. Also, it is frequently difficult to remove old code because the person who wrote it and understands how it works may not be working on the project any more. With an operating system, keeping the old code is the best way to maintain compatibility with old applications. This process of layering new code on top of old code and continually increasing the complexity of software is typical of any development project. Occasionally, you can throw away the old code and start over with new code but this is very expensive and often does not work well because you lose the knowledge and expertise that accumulated over time in the old code. Thus, as software ages, it grows more complex.

Increasing Power of Computers

Inspiration and creativity is frequently triggered by the limits that are imposed on us. If you tell me that I have an unlimited budget to create a great work of art, I will not know where to start. If you tell me to spend $20 on art supplies and draw a watercolor of the tree in your front yard, I have a much more interesting problem to solve. With the incredible growth in the power of computers, the limits in terms of memory and processing power have been very generous with software developers. In any design process, there is a tendency to design the largest and most complex things that will fit within the assigned limits. Since modern computers allow for very complex software, the tendency is to build complex software.

Economics

There are two economic forces that encourage complexity over quality in software today. One is that software companies make much of their money from upgrades where they sell a new version of a piece of software to an existing customer every year or two. This is a wonderful way to get revenue because instead of selling me Windows once, they get to sell it to me 3 times which obviously means they get more money. The other force is competition. One of the main ways you convince a customer to buy your software instead of your competitor’s software is to make sure your software does more for the same price. It’s true of any business that offering a customer more for his money is a great way to compete. With most products, there are physical limits on giving the customer more value for their money. A bigger car takes more steel and makes the car more expensive to build. With software, making the software bigger and more complex increases development costs but it does not increase manufacturing costs. The end result is that in the software business, you always add as many features to a product as you can within your development budget and since ensuring quality is the last step in software development, it is frequently gets shortchanged if a product goes over budget. It also means that when developing an upgrade to a product, the majority of the budget is typically spent on adding new features instead of improving existing features since it is the new features that encourage people to upgrade.

What can we do?

The first step is to understand and value good design. We also need to make the Internet a place where we encourage innovation and experimentation. The business realities of the software industry encourage a winner take all attitude because typically all the profit in a given software category goes to the most popular piece of software. We should resist this tendency when possible and create a world where different technologies can coexist without creating too much cost for users.

As consumers, we should learn to buy the software that is the fastest and most reliable instead of the software with the most features. Unfortunately in many ways, Microsoft sets the agenda for the entire software industry and their agenda is to keep building more complex software because it ensures their revenue stream from upgrades and it keeps their competitors out of the market. That’s a huge incentive for Microsoft to keep building more complex software. The consumers and the rest of the industry largely follow this lead.

The expense resulting from the complexity of Windows is the major cost to the world from the Microsoft monopoly in operating systems. Microsoft has done some wonderful things for the computer industry but every time that I spend hours trying to fix a software problem with Windows, I wish that I could charge Microsoft for the cost of that time. The $90 I paid to purchase my operating system pales in comparison to the cost of maintaining the software on a Windows PC over time.

Microsoft is the biggest target to blame for poor design and too much complexity in software but the entire industry can take the blame. Java is a great example of a product that fell victim to too much complexity. A huge portion of the software industry rallied around Java as a solution to many of the limitations of Windows. In the end Java on the client simply did not work reliably. One reason for this failure was that Sun chose to compete with Microsoft on Microsoft’s terms. They talked about the “API land grab” where they started lots of projects to ensure that Java had more functionality than Windows. Because they got defocused by making Java do everything, they failed to make it work reliably for simple tasks. They created thousands of API’s when the market really needed a few hundred API’s that would enable developers to do things they could not do on Windows. They failed to realize that a potential competitive advantage of Java was in being simpler and more reliable than Windows. Netscape fell into this same trap by trying to turn Navigator into an operating system. No one can compete with the army of Microsoft programmers when it comes to developing big and complex software so Netscape chose a battle that they were doomed to lose. If Netscape had developed a simple and reliable platform that third parties could build on to create Internet applications, we all might be using Navigator today instead of Internet Explorer.

Positive Trends

There are some positive trends that will help develop the marketplace for new and innovative software.

  • Instant software distribution – The ability of the Internet to deliver software to lots of machines very quickly at very low cost has the potential to greatly encourage the development of new and innovative software. We have seen this with the web browser, instant messaging, MP3 players and utilities such as WinZip. The barriers to software distribution are still higher than they should be. I should be able to install a piece of software in less than a minute with a single click, and try it. If I like it, I should be able to pay for it and use it. If I don’t like it, it should be gone with a couple of mouse clicks.
  • Software as a service instead of a product – The idea that the Internet allows software to be a service you subscribe to instead of a box you purchase means that it should become much easier to try new software and keep it up to date and running well.
  • Instant communication, information sharing – The ability of the Internet to instantly transmit information between any two computers in the world has not been fully exploited. There is lots of software that can be written to take advantage of this ability.
  • Software as a mass market product – As software moves from being a product purchased by professionals and hobbyists to a tool that is used in people everyday lives, this evolution will encourage the development of new kinds of software.
  • Transparent software – Professionals and hobbyists, can enjoy and gain value from learning and developing skills with complex software. As software addresses a broader market of users, the software needs to become invisible to the user and simply perform its task in a reliable way.

Negative Trends

There are several negative trends in the software industry that limit the possibilities for software as art.

  • Complexity and unreliability of PC software – As PCs get more powerful, PC software has become more complex. One of the magic moments in developing software is when you have a complex solution to a problem and suddenly realize that you could solve the same problem much more simply. Developing new software can be much like exploring. You might wander a bit before you find your destination. After you find your destination, you know that there is a more direct route. You end up with a shorter path if you cut a new more direct route. It is more work at first to create the shorted path but in the long run, it saves lots of walking.
  • Closed device architectures – There is no standard way to develop software that runs on a variety of devices today. In fact, many devices such as WebTV do not allow third parties to develop software that runs on the device. This means that these devices cannot evolve as people invent new kinds of software. If these devices become too common it could mean that the world is stuck with HTML 3.2 and current e-mail for the next 20 years.
  • Standards as religion – A standard is a group of people getting together and agreeing to do something in a consistent way. The benefit of this is the coordination and cooperation it enables between large groups of people. The disadvantage is that if a better way is found it can be difficult to take advantage of the innovation. The Internet industry needs to be careful to understand the strengths and weaknesses of standards. Frequently with a new technology, there is not enough experience to develop a good standard and a better solution can be found if the industry has the opportunity to learn from the mistakes of several different approaches before developing a standard.

The democracy of software

Much of the magic of computers and the Internet is that it is a very accessible medium. You don’t need lots of money or people to develop a significant piece of software or web site. Because the cost of creating and delivering information can be small, software is a medium that is accessible to people with limited resources. We should ensure that this remains possible. It is possible to create a software environment that has the ease of use and reliability of an Internet appliance but maintains the accessibility of the personal computer for creating software and content.

Is Software Art?

The concept of “software as art” is not saying that software is art. The idea is to use art as a metaphor that helps us learn how to create great software. Although it is built using very precise and rigid machine instructions the creation of software is very much a human endeavor and an expression of human thoughts and creativity. As something that is carefully crafted, we should be able to enjoy, admire and appreciate software as we use it. There are many different photographs and paintings of famous spots such as the Eiffel Tower or Half Dome in Yosemite. Each of them has something different to offer in terms of lighting, perspective, or style. There are also many ways to solve a given problem in software. We should encourage exploration and different forms of expression in software.

A History of Flash

It started with a few bits of colored plastic…

As a child, I grew up playing with Lego when there were no Lego men or whales and the pieces were all rectangles except for a few wheels and roof pieces. Lego was an early way to express my passion for building things. Lego also helped me learn the basics of engineering design. The first step was always to choose a problem. My favorite was to build big “ships” with lots of ramps and that would hold lots of cars and carry them around the house. It’s easy to underestimate the difficulty of choosing a good problem. It’s best to choose a problem that inspires you and challenges you but that you can achieve with your capabilities and resources. For me, Lego ships were good because I had enough bricks to build them, they captured the sense of a city that could move and they provided a place to drive little Lego cars. Lego helped me learn to allocate resources. You only had so many bricks and you needed to find an efficient way to use them. Lego was also very forgiving. If you made a mistake, you could always take part of your creation apart and make it better. This process of iterative refinement is an important part of design. It is of course good to have a vision for what you intend to create but the human mind is much too limited to be able to capture the entirety of a complex creation all at once. With Lego you can start with the vision of building a ship and work out the details of the design as you progress. Because there were lots of pieces in a Lego ship, I learned that creating interesting things takes time and that if you are patient and keep at it, you will finish it.

Design Process

  • Choose a problem – Build a Lego ship.
  • Develop a vision – What sort of ship will it be? How big will it be? What will it carry?
  • Build – Build the framework of the ship.
  • Fill in the details – Design and build the details of the ship, ramps, doors, etc…
  • Test – Drive the cars around the ship and sail the ship while exploring the house.
  • Refine – Take parts of the ship apart and make them better.
  • Learn – Take what you learned from building this ship and use it to build a better one next time.

As I looked for challenges beyond Lego ships, I dreamed of architecture. What greater achievement for man is there than creating great buildings? I had a little drafting table and drew plans for houses. As much as I enjoyed designing houses, I quickly realized that as a young teenager, there is just not a lot of opportunity to actually build the houses I designed. Although, I did actually get to design and build a shed and garage at my family’s cabin in the mountains. About that time, I got an Apple II computer for helping to paint the house one summer. As I began to program, I quickly discovered that with computer software, you can design something, build it and then see it work and respond to you. Although bits of Apple II Basic were not as impressive as building houses, I could take a project to completion and see if it worked. The first game I wrote was a Space Invaders clone on the Apple II in Basic. As I graduated from Basic to writing in Pascal, I wrote my first graphics editor. If you ever think Flash is difficult to use, you should try drawing with a joystick on an Apple II before the concept of undo was invented. That will test your patience.

I got my big break in professional programming when I was in high school. I had entered my graphics editor in the school science fair and done well with it. Also around this time, the Macintosh came out and I had just gotten one. My father took me to an early Macintosh Users Group meeting and he bragged to the organizer of the group about my science fair project. It turns out that the organizer was Charlie Jackson and he was looking to start a Macintosh software company, Silicon Beach Software, but did not have much money to spend. He realized that as a high school student, I did not need to earn any money so I could build a program and he could pay me after he started selling it. This was a good deal for me because the only way that I could write software for the Mac was to get access to a $10,000 Lisa computer and Charlie had bought a Lisa. I still think he was a little bit crazy to believe that a high school student could write Macintosh software but I did manage to write Airborne!. It was the first Macintosh game that used digitized sound and had animation that did not flicker. For the time, it was a big seller. For my second game, we hired a professional artist and created Dark Castle. Dark Castle was a big hit and paid my way through college. After Dark Castle, there was Beyond Dark Castle. Writing games was an important part of my computer education because I learned about animation, about digitized sound and how to synchronize sound with animation. Most importantly, I learned that fast and responsive software is fun to use. After Beyond Dark Castle, I worked on adding PostScript style drawing support to SuperPaint II.

After SuperPaint and graduating from college, I went to work for Silicon Beach Software full time and began to develop technology for creating a new generation of graphics software. It would be written in C++, would use an object-oriented framework to make development easy and to enable it to run on the Macintosh and Windows. This technology became a drawing program called Intellidraw that would enable Silicon Beach to compete with Adobe Illustrator and Aldus Freehand in the Postscript drawing market. The unique aspect of Intellidraw was that not only did it draw pictures, it allowed you to add behavior to your drawings so you could create lines that stayed connected to objects and you could draw a bar chart that would change as the user entered numbers into a text object. It turns out that the first computer drawing product, called SketchPad, had this ability but people had forgotten about it. A company call Visio was able to take this idea and create a very successful product but Intellidraw never found a significant market. When I realized that Intellidraw was destined to be a modest success, I decided it was time for me to find a new challenge. I had made as much money working part time as I had working full time on Intellidraw so I decided I should try and place myself in a position where I could create a successful product and benefit from it’s success so I started my own company.

The hot new concept in the personal computing world was pen computing. A company called Go was building an operating system for a new generation of portable computers that would have a screen you could write on with an electronic pen instead of a keyboard. The computers could be smaller and you could use them standing up just like you use a note pad. It was a very appealing idea and with Silicon Beach Software, we had seen how a new operating system created the opportunity to build new software companies. In January of 1993, I convinced Charlie Jackson to invest some money and we started FutureWave Software to dominate the market for graphics software on pen computers. An important lesson that I had learned from Intellidraw is that it was hard for users to learn complex features in a program and that the real challenge in writing good software is creating sophisticated software that is easy to use. I also knew that drawing on a computer was in many ways much slower and more awkward than drawing with a pencil on paper. The mouse had been an improvement over a joystick but I imagined that drawing with a pen directly on a computer screen would be even easier. So Robert Tatsumi and I set out to build software that would make drawing on the computer easier than drawing on paper. Go turned out to be better at spending money than writing great operating systems so they were purchased by AT&T who was going to build computers that would enable people to send faxes from the beach. AT&T soon discovered that people were not compelled to spend $4,000 to send faxes from the beach so in January of 1994, just as we were about to ship our first product, AT&T pulled the plug on Go and left us without a market. We did actually make a few sales of SmartSketch. The most noteworthy sale was to an architect working on Bill Gate’s house.

The failure of Go and pen computing was a big setback considering we were a company with no income that had just spent a year developing a product we could not sell. The only opportunity we saw was to take our software and make it run on Windows and the Macintosh. We sold SmartSketch as a better way to draw on the computer and had some success. However, it was difficult for a small company to compete in an established market and even harder to convince Illustrator and Freehand users that they needed a better way to draw. We persisted at working to sell SmartSketch but it was an uphill struggle and we were looking for a new strategy. In the summer of 1995, we were sharing a booth at Siggraph, a computer trade show for high end graphics users, and got lots of feedback from people that we should turn SmartSketch into an animation product. I wanted to build an animation product but since the only way at the time to distribute animation was either on video tape, or on a CD ROM, the market for animation tools was very small. However, also about this time, we were starting to hear about the Internet and the Web. It seemed possible that the Internet would become popular enough that people would want to send graphics and animation over the Internet. That might create enough of a market for 2-D computer animation to enable us to create a profitable product. We began to add animation to SmartSketch. At the time, the only way to extend a web browser was through Java so we wrote a simple animation player that used Java and was horribly slow. We stubbornly kept at it and in the fall, Netscape came out with their plug-in API and we had a way to extend the web browser with decent performance. We started to talk about shipping SmartSketch Animator. We then realized that we did not really have much brand recognition in the name SmartSketch and should focus less on drawing and more on animation so we started talking about CelAnimator. Before we shipped, we realized that we did not want to get pigeon holed as a cartoon creation product so the product name was changed to FutureSplash Animator. As we were working on FutureSplash Animator, we realized that we were tired of running a company that did not have much money to spend.

In the October of 1995 we tried to sell our technology to John Warnock at Adobe. He was a bit intrigued by the SmartSketch drawing software but the horribly slow demo of our animation in Java was not impressive so Adobe passed. In December of 1995, we almost sold the company to Fractal Design but they were mostly interested in the SmartSketch drawing software and did not place much value on our new web animation technology so we did not close a deal with them.

In the summer of 1996, we shipped FutureSplash Animator and began to get some interest. Our big success was in August of 1996, Microsoft was working on their web version of MSN and they wanted to create the most television like experience they could get on the Internet with a modem and computer and they because fans of FutureSplash. I’m still surprised that they made their launch of MSN dependent on a new animation technology from a six-person company but it was a great way for us to get exposure and an early lead as a technology for web animation. Our other high profile client besides Microsoft was Disney Online. Disney was using FutureSplash to build animation and user interface for their subscription based online service Disney Daily Blast. In November of 1996, Macromedia was getting tired of hearing about our product when they worked with Disney to use Macromedia’s Shockwave product. So Macromedia approached us about working together. We had been running FutureWave for 4 years with a total investment of $500,000 and the idea of having access to the resources of a larger company to help us get FutureSplash established in a market that was full of competitors and growing slowly seemed like a good one. So in December of 1996, we sold FutureWave Software to Macromedia and FutureSplash Animator became Macromedia Flash 1.0.

In the middle of 2000, now Flash has been through 4 versions at Macromedia. It still has the much of code that was written for pen computers. It has evolved from a simple web drawing and animation package to a complete multimedia development environment with 500,000 developers and 250 million users of the player. Flash has become synonymous with animation on the Internet. It’s possible that Flash is the most widely distributed piece of software on the Internet ahead of Internet Explorer, Netscape Navigator, and Real Player and it all started with the lessons learned by a boy from a few bits of plastic. If you surf the web, you may not have known it but you probably have used Flash.

Flash is even used on the Lego web site to help sell more bits of colored plastic.