Birth of a New Product-3 Final Idea Selection by Jack Krupansky My Paris adventure has come to a close. I'm back in the Boston area, living "temporarily" in my apartment in New Hampshire. I spent the last few weeks of July traveling (mostly within France) and a lot more sampling of Parisian restaurants. I met with an ME reader who was also spending a few months traveling around Europe. I didn't do as much traveling outside France as I hoped, but did get to spend more time in Paris than I hoped. My final excursion was a three-day train trip to see the new zeppelin that is being built in Friedrichshafen, Germany. The Zeppelin company calls it "Zeppelin NT." It was supposed to fly this summer, but glitches have delayed it's "release" until 1998. My final surprise in Paris was receiving the check for my apartment security deposit at the same time I handed over the key. I stayed one night in a hotel and then took the Eurostar "Chunnel" train to London for two days before flying to Boston. My French mail will get forwarded to the apartment I stayed in last September. But I filed a change of address request with the post office so my bank statements and final utility bills will come to New Hampshire. In fact, the final electric bill has already found it's way over here. It was easy to set up the forwarding (the guy at the post office even spoke fluent English), but they charged me $20 for a year of forwarding. Back in December I leased an apartment in Nashua, New Hampshire for my legal residence while out of the country (and a place to stay when visiting my client in Waltham, Massachusetts.) I figured New Hampshire would be cheaper and that I wouldn't have to pay state income tax. Unfortunately, New Hampshire does have a business tax equivalent to the state income tax elsewhere. Sigh. Now that I'm back from France, I need to decide where to go next. I don't expect to stay in New Hampshire for an extended period of time, possibly just until my lease is up in December. The scenery can be nice, but overall I get bored very quickly outside urban areas. I really don't know where I'll be living then or what I'll be doing for income. One major annoyance is that since I don't own a car anymore (and have no desire to do so), I'm stuck renting for the next two or three months. I really want to get back into a situation (like I had in Boulder, New York, and Paris) where travel by foot and public transportation satisfies virtually all of my daily travel needs. The work for my current client has slowed to the point where I can only depend on about twenty hours a month. I still haven't lined up any new contracts, but have a few good leads and have already turned down a few possibilities that I didn't think would help me in the longer term. Although I would rather have more income right now, I like to tell people I'm doing the "French" thing and taking the entire month of August off. I hope that one of my leads will solidify over the next couple of weeks. But, I'm already planning for the contingency that September also might be a slow (or even dead) month for me. So, I'm in a state of limbo and a bit depressed that I don't have a solid plan in place. But that's okay since this is a time of transition and you're not supposed to get too comfortable at times like this. If I had lots of money in the bank (or lots of income) I'd probably be traveling around Europe some more, hanging out in Washington, D.C. for a year, or wandering around the U.S. for a year or two. I'm also considering Cambridge, Massachusetts since there's a lot of work on software agents going on at MIT and the surrounding area. I'm sitting here waiting to hear where consulting work will determine where I work and live next. Meanwhile, I'm catching up on some reading, enjoying the summer weather, and finally getting a handle on my decision for my next product. Going With Software Agents As depressed as I am about not having much income or a plan for where to live, I'm rather excited that I've finally settled on a single product idea to pursue. I had been thinking of something vaguely related to software agents, but wasn't sure of the right angle of attack. After surfing the web for awhile, I've concluded that there are not yet any clear winners for the low-level infrastructure needed to support software agents. There are a lot of research projects, but still plenty of room for competition. I've continued to try to come up with other ideas, but I kept coming back to software agents as being a really good concept on which to focus my efforts. It really seems like a great foundation on which a lot of other efforts can be based. And plenty of room to maneuver as the competitive environment changes. Most of the current buzz about agents is related to software that accesses files across the net and filters them or searches for information. Current products focus on those aspects. There are research projects for agents that can dynamically move across the net, but no products yet. I have tentatively concluded that truly mobile agents should not be a short-term priority. I believe the ability to send an agent across the net to run on a remote machine is a good feature to focus on. Transparent access to files and resources across he net is a good idea and suitable for many applications, although it requires an active net connection and depends on the availability of net bandwidth. Agent Middleware In my last article, I thought that "agent middleware" would be the best place to start with a focus on tight integration with relational databases. A friend and I initially thought it would really work, but we finally concluded that we didn't have a similar enough vision of what it would actually look like. Most of the benefit of that project would have been that we would collaborate and build on each other's strengths. But without the intense collaborative effort, that project seemed doomed. Or maybe the level of collaboration required would have doomed it even if we had similar visions. I also felt that immediately jumping to a heavy-duty, corporate- oriented product would probably be too much effort at this stage. I believe I'll do better by focusing on the interests of the ever- present "lunatic fringe" and evolve into a corporate product over time. And I may still do a stripped-down interface between my agent system and my friend's relational database, just to demonstrate how well a "true" and properly integrated agent can perform. The Lunatic Fringe The "lunatic fringe" are the technology professionals who are interesting in trying out every "new" thing that comes along. If you have something with real potential, they're the ones who will get all excited and tell everyone how wonderful your product is. They have a much lower barrier to entry, are more forgiving of "bugs", and provide much higher quality feedback than typical corporate grunts. The trick is to come out with products that they can get excited about. That's why one of my primary criteria for selecting product ideas has been "novelty." I really believe that software agents are new enough and novel enough that the lunatic fringe will be interested and quire excited. Agent Application Incubator Unfortunately, agent infrastructure is an "enabling" technology that is not by itself usable by an end-user. So, it is probably necessary to seed the market with some representative applications so that customers can relate to the true capabilities of software agents (beyond simple searching/filtering/reporting.) And, I believe that applications are where most of the money will be made. But I don't have the resources or inclination to do applications. So I came up with the idea for an "Agent Application Incubator." The idea is to offer recent college grads (and even promising/motivated drop outs) a modest pile of money to spend a year pursuing their own ideas for agent applications. The amount of money would be competitive with what they could get at Microsoft or some hot Internet startup, but they wouldn't be stuck with the leftovers that new-hires typically are offered. I worked out a lot the details (including sharing of intellectual property rights), but the bottom line is that venture funding would be required and I'm not quite up to that yet. So, the idea goes on the back burner for now. Software Agent Infrastructure I'm right at the point of beginning to organize my thoughts for how I'm going to approach an infrastructure for software agents and I have a lot of specific ideas for details, but I don't have them organized enough to even present here. I know that it will be based on TCP/IP (sockets) and work on both LANs (intranets) and the Internet. I know that agents will run in a "sandbox" (similar but both more controlled and flexible than Java.) I know that there will be a graphical user interface for monitoring and controlling agents. I have a lot more decisions under consideration, but still not finalized. I continue to work on trying to "finalize" my exact "angle", but for now I'm satisfied with having set my general direction. Besides, I'm planning for the contingency of making a mid-course correction if compelled by unforeseen difficulties, competition, or opportunities. With a technology this new you need to do a lot of experimentation and rethinking before you can settle on a best approach. For now, I'll concentrate on developing release 1.0 of my agent system and proceed from there based on feedback from the market. I already know a lot of the features that I'll defer until future versions. Better to get something usable into user's hands quickly so I can use their feedback to guide the decisions about the priority for future features. I'm confident I won't have a "full blown" agent system until version 5.0 and version 1.0 probably will be seen as being merely a "toy", but I should be okay as long as I can show consistent and rapid forward progress. Release 2.0 would have to have significant extensions and be available with six months of 1.0's release. I've already started some experimentation, developing a small client and server application that allows a Liana script to be sent via a TCP/IP socket connection to a remote, named server (or raw Internet IP address) and executed with a result sent back to the client. It only took a few days, and the experiment told me a lot about the way socket connections work. My next step will be to define an agent base class and send a script that is a class derived from the agent base class. The agent base class will have support for allowing the agent to communicate with the client interface. Languages There are a number of agents systems in various research labs that are based on Sun Microsystems's Java programming language. Everybody's talking about Java. They say everything's got to be Java- compatible. I expect this hype-trend to continue, but I also expect that not everyone will buy 100% into it. For one thing, Java isn't very appropriate for hard-core AI applications. So, maybe a LISP-like language would be better for AI agents. My language, Liana, is a more flexible language which is much closer to LISP than Java as far as the ease of manipulating dynamic data structures. I am thinking of supporting an embeddable LISP interpreter as a second language for my agent system. Probably not in the initial release or two, but at least in my plans and designs. From a marketing perspective, I'll finesse the language issue my saying that my system's architecture supports multiple languages (it's "language-neutral") and all that is needed is a plug-in module developed by the language vender. The complete source code for a number of LISP interpreters is available very cheaply from a number of sources. Ten years ago I actually adapted one for use in a GUI database interface. AutoCAD's AutoLISP was also adapted from one of them. At least being able to talk about supporting multiple languages will take off a little of the pressure of not being "100% Pure Java." Java is a compiled language and the Java Virtual Machine has no provision for dynamically compiling and executing direct from source code. Various browsers support the JavaScript language that allows executable source code scripts to be embedded in HTML documents, but JavaScript is actually unrelated to Java other than the similar name. Liana is a much more capable language than JavaScript and supports non-compiled, source code scripts. I certainly concede that ultimately I may have to support Java, for now I need to focus on being expedient rather than comprehensive. If my agent system becomes successful, then adding support for Java will be rather straightforward. Actually, it would be very difficult for me now since I would have to negotiate an expensive source license with Sun so that I could tweak the compiler and interpreter to fit into my model of being able to send source code across the net and to exert more control over how the interpreter uses system resources. No way could I do that today. I recently heard that someone has a free clone of the Java source that I might be able to use, but I doubt that I could claim "100% Pure Java." Liana and Java have a lot in common since both were based on C and C++. Java does have some significant differences, but I could quite easily make extensions to Liana so that a number of Java features can also be used in Liana. A lot of the same runtime functions are available, but with different names. I could easily make copies of a number of Liana functions and classes with the Java names. I wouldn't be turning Liana into Java, but at least my marketing materials would be able to refer to the similarity. I need to find out whether I can legally say "Java-like" or even "very similar to Java". Marketing I actually have been spending more time contemplating the marketing issues than the technical issues, but that will change as I switch into a development mode. It's just that I haven't settled on a marketing strategy or the details. I expect to do a lot of promotion on the web itself, but I also expect to run ads in a couple of the developer-oriented trade magazines. And I definitely want to do a much better job of periodically sending press releases to the major trade magazines. Of course I'll have a "free" downloadable demo. I'm thinking about putting the software on a CD-ROM that can be used as a brochure and business card to mail, for trade shows and a general hand-out. The definition of my agent system is still too nebulous to give it a truly concise and accurate description that will be instantly comprehended by the average listener. One of my biggest concerns is that the terms "agent", "software agent", "intelligent software agent", and "mobile software agent" and used in such a wide variety of ways that they have become mere marketing fluff and no longer clue the listener into precisely what you're referring to. It looks like I get to pick my own collection of adjectives to string together in front of "agent" to define my approach. Maybe I'll use "remote software agents" to emphasize that the agents are executed remotely. Or maybe I'll just use "software agents" and expect the listener to immediately ask what I mean and then give a detailed explanation. For now I think I'll use "software agents" casually and "remote software agent infrastructure" when I feel the need to be more formal and specific. I'm not totally happy with the term "infrastructure", but I think most people can relate to it a bit better than "system", "environment", "operating system", or "operating environment". "Agent system" isn't too bad, but doesn't sound specific enough for my taste. "Agent Platform" is another possibility. I feel silly coming up with my own term for something that should be an industry standard term. But maybe that's to be expected when I'm really trying to establish a de facto standard anyway. My biggest peeve about current terminology is that I think of an agent as someone who does a task for you with some sense of special knowledge, experience, intelligence and autonomy but the term is currently used for tasks that are clearly clerical in nature with no real intelligence or autonomy required. A secretary is not usually considered an agent. Some sense of remote activity is required. A secretary can do some of the tasks of a travel agent, but I think the independence of the travel agent is what really makes them an agent. Who knows, maybe we'll all end up calling secretaries "personal/executive agents." The bottom line is that although I can come up with my own conceptual model for agents, I have to attempt to live with the models that are already floating around and in people's heads. That's part of the difficulty when a techie gets involved in marketing. I actually visited one new vender that is introducing an environment for creating agents, but of the search/filter/report variety. It didn't seem like there was going to be much of an overlap between our businesses, but it was good for me to hear their perspective on the industry. IBM in particular is trying to spread the story that agents are here now and ready to go. Kind of misleading, but who am I to complain that someone else is spending money their own money convincing people that agents are a good thing! The really good news is that the market is at the research and hype stage with a lot of confusion and the only real products are of that search/filter/report variety. The means lots of untapped opportunity, fragmented competition, and plenty of room and time to respond to the various "market forces." Venture Capital Just for fun, I called a local venture capitalist (actually, they sent me a mailing and letter inviting me to call them.) We chatted and they actually gave me a little good feedback but said that they tend to shy away from "early-stage" investments. He did recommend another local VC that does early-stage deals who I may call just to pick his brain on marketing-related issues. I don't have any really serious intent of pursuing venture capital financing, unless I sense that my application incubator could actually fly. Online Catalog My Entrepreneurial Software Developer's Mall web site is up (see my web site), but I haven't been pursuing improvements yet. I think the agent system deserves more of my attention and some of the things I want to do with the mall are too difficult during the vacation season. Maybe September will show more progress. What's Next Now that I have a slightly better than vague idea of what I want to do, I can start becoming a lot more focused. Top priority is deciding where to live in two months and increasing my short-term income. Only slightly lower priority is fleshing out my initial cut at the socket- based agent system. Due diligence will need ongoing attention, but design and coding that can be started now. I'd like to talk with a few companies every month. A couple of beta sites are needed, but it's still a little early for that. I'm thinking that I should have something interesting to show within three months. Marketing issues need a lot more attention, but that will all evolve as the product itself evolves. I want to start looking into how artificial intelligence can be exploited by agents. That might also give me an opportunity to identify more agent opportunities. I need to try to come to grips with the language issue and decide what level of Java compatibility is needed, but I suspect this issue will drag on for some time. I need to come up with a strategy for avoiding "Notes Disease." This whole agent thing is so new, that it's not easy for an average listener to be able to comprehend what it's all about, in simple terms. But I think this exercise will also help me come up with some of the elements of a good marketing strategy. Lots more stuff to worry about, but that's just par for the course when you're trying to do something new and different. The key is not identifying issues, but creatively deciding which issues to defer. ------ Jack Krupansky runs a one person software business, Base Technology, which develops and markets the Liana object-oriented programming language and CodeScript scripting language interpreter and offers Windows software development consulting. He may be reached at 800-786-9505, jack@basetechnology.com on the Internet, or at http://www.basetechnology.com on the World Wide Web.