Archive for December, 2007

Marketing High-Technology Products

December 21, 2007

About twenty years ago, I read “The Regis Touch: New Marketing Strategies for Uncertain Times”, by Regis McKenna, now out of print. McKenna was a famous marketing expert who advised Apple Computer, Intel, and National Semiconductor.

I took away one big point from the book: “The difference between high-tech marketing and other marketing is that it’s so difficult and costly to try out and evaluate the product.” For example, if someone needs a database management system, they could try implementing their whole application in two different DBMS’s and compare which has better features and performance. But nobody can really do that, because it takes far too much time and effort.

Because of this, the success of a product is very dependent on word-of-mouth. The example in the book was: suppose you advertise and market your product to death. But then a bunch of high-tech decision makers are having breakfast together at some Silicon Valley restaurant, and one of them says “Oh, yeah, we tried Product X, but it worked badly and we replaced it.” Nobody else at that table will ever take a second look at Product X after that! Game over.

He was exaggerating slightly. If our prospect has heard a lot of good things about the product, then maybe hearing one negative report won’t be fatal. And it may depend a lot on whom he or she hears the story from.

The lesson is that in high-technology, you must be very careful to make your customers happy, and prevent that kind of bad word of mouth from happening. Don’t market and sell to customers from whom the product is inappropriate and who will inevitably be frustrated with it.

Most of the above applies to free or open software just as much as commercial software. In the commercial world, if you have a direct sales force, it’s pretty hard to stop them from trying to make their quota, if they’re simply given a commission on sales in the usual way. You may want to think about some other kind of incentive system.

More about One Laptop Per Child and its XO Laptop

December 15, 2007

Dave Moon pointed me to this article, in which a BBC reporter brings an XO home from Nigeria and gives it to his nine-year-old son to try out. There’s also a 3:34 min video of the boy playing with the XO.

http://newsvote.bbc.co.uk/mpapps/pagetools/print/news.bbc.co.uk/1/hi/technology/7140443.stm

More stuff:

http://www.technorati.com/tag/One+Laptop+Per+Child

The rest of this blog pointing consists of some more fun facts about the XO/OLPC, from an interview with Mary Lou Gepsen (the CTO) in ACM Queue Nov/Dec 2007 (very slightly edited by me):

Generators make really weird power. Sometimes the frequency is as low as 35 hz, and the OLPC’s AC adapter has to do “really interesting” power conditioning. The laptop itself can take between negative 32 volts and 40 volts, and works well with anything from 11 to 18 volts. You can plug a car battery into it, or a solar cell, or a bicycle or wind powered generator. India has this cow-dung system that creates methane that drives a generator. Even that will work.

We run the mesh network at extremely low power: 400 milliwatts, compared with my ThinkPad laptop, which uses approximately 10 watts just to run Wi-Fi.

We had to fix a couple of bugs with the chipsets to make sure that they can talk to the flash memory, which operates at very high speed. We had to do wear leveling on the flash. Luckily we’ve got David Woodhouse, who wrote JFFS2 (Journaling Flash File System, Version 2), on the project.

We put memory into directly into the display itself. That means the screen can stay on while the rest of the motherboard or the chipset is off. The way to get to low power — the big secret — is to turn off stuff that you’re not using. But nobody has ever made a laptop with a screen that self-refreshes.

We also put a tiny ARM core into our Wi-Fi chip. We used the Marvell chip because it’s the only Wi-Fi chip with a tiny ARM core in it, which means the Wi-Fi can also stay up and running while the CPU is off. [This is important because the machine is part of a mesh network. -- DLW]

We put the motherboard behind the screen so the kid can use the XO machine on his or her lap and it won’t get too hot like a normal laptop. These are the first truly laptop-use computers made in the last decade.

In Libya, it gets up to 57 degrees C [134 degrees F -- DLW] in the desert. But the safe (read: don’t explode) NiMH (nickel-metal hydride) batteries won’t recharge above 45 degrees C. That’s a real problem because many spots in Libya are off the grid. But the lithium ferro-phosphate batteries charge in heat up to 60 degrees C. The machine can handle many different battery chemistries, which was a real pain. We did that in the embedded controller.

Our battery has a five-year life. You can go to 2,000 charge/recharge cycles. The lithium ion battery in my ThinkPad is supposed go to for 500 charges, but in practice it’s more like 200. So, moving to lithium-ferro-phosphate is really cool because you don’t have to spend additional money on periodic battery replacement costs, regardless of the environment.

We do 15 times better than Energy Star compliance. Where a typical laptop has maybe a one-, two-, or three-year maximum lifetime in office workplaces, ours is double that at five years — and we do this in extreme environments to boot. Our machines are half the size and weight of a typical laptop, and our laptops are repairable by children and by locals. You can change out plastic parts quite easily, including the screens. Five-year-olds can change the screen on our laptops because it’s actually that easy.

Carbonite: Automatic Offsite Backup

December 15, 2007

As soon as I got my new PC, I bought an external disk as large as the provided internal disk, and told Vista to turn on automatic backup to the external disk. That works fine, but what happens if some event causes failure in both the PC and the external drive? Power spikes, fire, and theft are all real possibilities.

Carbonite provides automatic offset backup at a reasonable charge. It’s really automatic; you just turn it on and forget it. The documentation is very good and simple. It runs in the background and I don’t notice it at all. It only costs $4.16/month, or $3.75/month if you sign up for two years. You can get a free 15-day trial.

It’s so easy to put off doing backup; I procrastinated for years. Luckily, I didn’t lose my data, but I’ve had friends who have lost their computer’s disk and it cost them plenty of time to recover, and they lost some data permanently. I recommed both the external disk and Carbonite.

(Full disclosure: Carbonite is funded in part by Common Angels, though I am not an investor. I also like that the CEO is David Friend, who used to run ARP Instruments — I was a music synthesizer hobbyist in the early 70’s and Friend was quite famous in that area.)

Panel on the Future of Innovation in New England

December 9, 2007

What will be the future of innovation in New England? On December 5, at the MIT Media Lab, there was a panel discussion on this topic, run by Xconomy.com, which publishes a “business technology blog” with special focus on New England, especially Boston and Cambridge.

The panel was moderated by Michael Greeley, a general partner at IDG Ventures and president of the New England Venture Capital Association. Panelists were Helen Greiner, chairman and co-founder of iRobot; Frank Moss, director of the MIT Media Lab; and Christophe Westphal, CEO of Sirtris Pharmaceuticals, which is developing drugs to treat diseases of aging, such as diabetes and cancer.

(I am basing the following on my own scribbled notes, so I may have made some mistakes; if so, I apologize.)

Greiner explained that iRobot makes their money by selling actual robot products, plus some government research contracts. They consider themselves very innovative. They make five home robots (the best-known is the Roomba vacuum cleaner) as well as military robots (primarily for dealing with roadside bombs). She is very interested in making sure that robotics continues to thrive in New England, and to that end encourages partnering among other robotics companies, academic research laboratories, and related organizations, e.g. through the Mass Technology Leadership Council. When asked about how the area can get involved in “clean” technology, she didn’t express much interest, saying that “clean” technology can happen anywhere (and she took a swipe at venture capitalists as “sheep” or “lemmings”), whereas we ought to focus on where we’re already leading in Boston, such as robotics.

In response to a question from John Landry of Lead Dog Ventures, she explained that iRobot did not raise any external capital until their products were on the market. They had trouble finding funders who believed in their concept, but finally found some “foresighted” VC’s. She said that it was hard to get the best technical people, and we need more. She cited a study from Georgia Tech saying that about 2/3 of Roomba customers give their Roomba’s names. She was in Japan recently to see robotics technology there, and while the Japanese are very strong on industrial robots, they’re “disappointing” in other areas of robotics. On a personal note, she recommended the Axon Labs SleepSmart device, which she says helps her sleep better (she is also an investor in the company), and she said that she’s taking up kite boarding.

Westphal talked mainly about the biotech industry. His company, Sirtiris, is developing medicines based on Resveratrol. You might have heard of it; it’s found in red wine, although you’d have to drink 1,000 bottles to get the theraputic effect. They’re targeting diabetes first but suggesting that it will help with heart disease, cancer, and Alzheimers. He feels that the Boston area is way ahead of the San Francisco area in bioteach, and claims that the San Francisco people agree. He credits Harvard and MIT for being major influences, and he said that every leading aging researcher is in the Boston area. He feels that a biotech company needs to be physically close to any university researchers they work with.

To a question about how companies can get to the $1 billion level, he cited several biotech companies that already have: Biogen, Vertex, Millennium, and the Genetics Institute (before it was bought). He thinks his own company could reach that level, since so many people would be interested in their product.

He feels that “clean” technology will be highly regulated, lose a great deal of money when started (i.e. it will take a long time before the products come out), and the only “exit” will be an IPO or purchase by a large company, all of which is similar to the biotech industry.

Frank Moss mainly talked about the MIT Media Lab’s business model. When the lab was started, Jerome Weisner and Nicholas Negroponte anticipated that government funding for research was diminishing (as it is now), so they set up the Media Lab to by primarily funded by industry. His job is to keep the model going and keep bringing in funding. However, corporations are now more reluctant to pay for research, and are looking for return on investment.

He is now looking to change the model. Although it was never a goal of the Media Lab to create companies, there have been about a hundred spin-off companies so far (he mentioned Guitar Hero 3). As he sees it, venture capitalists are “waiting by the back door” for people to emerge with new ideas, ready to form companies, “grazing the intellectual property”. What Moss would like to do is get venture capitalists “in the front door”, forming relationships with students up front, in exchange for some funding, which is says would be only 1/10 of one percent of the VC investment.

Moss said that he thought there was too much anxiety about creation of $1 billion companies. The important thing is to have companies that will stay in the area in generate people suitable to be executives. He feels that there is a real problem that there is not a critical mass of companies that stay here and create talent.

During the discussion of “clean tech”, Moss mentioned the Clean Car, a stackable electric two-passenger city vehicle, which has a feature called “Wheel Robots”. Greiner said, “Oh, if it has robots, I’m for it!”

One of the questioners was from the Cambridge Innovation Center. I had never heard of that, so I looked it up when I got home. It’s in Kendall Square (the part of Cambridge where MIT is, and where I work), at One Broadway, with 150 customers on 7 floors. They offer office space and services to start-up companies (mainly technology oriented). They provide refreshments, conference rooms, reception, Internet connectivity, phones, a mail room, server space, and even social events with the other tenants.

Complaints I’m Seeing About Java

December 8, 2007

At Object Design, I developed code in Java for over ten years, and I worked with Java more at BEA. I’d be happy to use it again. It has many strengths, as well as extensive libraries and some great tools. It’s a lot cleaner than many other popular languages.

Yet many people complain about it. I’ve been looking around the web seeing what the predominant complaints are. After filtering out the ones that no longer apply to the latest Java release, and the ones I don’t understand, and the ones that aren’t important enough to mention, I’ve come up with a list of current complaints that are interesting and have some validity. With each one, I’ve added some commentary. My comments are not deep; some are downright superficial. And they certainly reflect my own point of view, with which people can quite validly disagree.

  • Base types (int, float, etc.) are not objects. So they can’t be passed to many useful classes that take Object arguments, and they’re otherwise treated specially and differently, leading to non-uniformity. The situation has been greatly alleviated by auto-boxing and auto-unboxing, although that’s something of a kludge.
  • You can’t return more than one value from a method. If you want to, you have to return a little array (unless one value is an int and the other is a Person!) or an object of some special little class made just for this purpose. When I was helping Bill Joy and Guy L. Steele Jr. by reviewing drafts of the original Java Language Specification, I was originally upset that there was no way to do this. So I set out to find a small example program that obviously demanded such a feature, to convince them that multiple value returns must be added. I was unable to come up with one, and I could see that Java’s philosophy was to leave out things that are rarely used and not crucial, so finally didn’t say anything.
  • Java is call-by-reference (in the same sense as Lisp) for object parameters. There is no implicit copying, the way there is in C++ when you don’t use a “*” in the type. Some people like such implicit copying in some circumstances. One example I was given was passing an Iterator, so that the called would not mess up the state of the callers Iterator. Personally, I did not find that example convincing: sometimes you really do want the iterator to be advanced by the method you call, and sometimes you don’t. Explicit copying seems to me far superior to complicating such a basic thing as parameter passing.
  • Speaking of a called method messing up the state of an argument passed by a caller: for collections you can use Collections.unmodifiableList to make a read-only view of a List object to prevent the collection from being messed up. But that breaks the Liskov Substitution Principle: if the method’s parameter is declared to be a List, the method might be written to modify the List. An unmodifiable list is-not-a list. Should there be a Java interface for the read-only methods? Probably Josh Bloch has a well-thought-out discussion of this somewhere.
  • There is no multiple inheritance of implementation. That is, a class can only inherit from one other class. There are no “mixins”. In my own experience, multiple inheritance isn’t used all that often, but it’s not all that rare either. Multiple inheritance of interfaces is truly critical, but Java has that.
  • Java needs the Factory pattern because it doesn’t have polymorphic constructors as part of the language. In my opinion, many of the famous Design Patterns are conventions for extending the programming language, and so this is just a special case of that principle.
  • Getter and setter methods are not built into the language. I interpret this as being another place where the designers of Java wanted to keep things simple, at the cost of not adding syntactic sugar. C#, the Microsoft answer to Java, does have these: classes can have “properties”. But if Java had “properties”, the reflection API would have to be more complicated to represent them, and so on. Whether these should be part of the language is one of those things where reasonable people can easily differ. For example, Flavors had this and CLOS does not have this.
  • Variables declared in an outer class and referred to be an inner class must be declared “final”. This is a real shortcoming. It means that Java can’t do the most basic kind of “lexical scoping”. This would be even more egregious if Java programmers used more higher-level functions, but, as we’ll discuss, they usually don’t.
  • Assignment is denoted with an “=”, which is confusing because it looks like an equality predicate. Something else should have been used, like Algol’s “:=”. I have no strong opinion about this, per se, since I don’t even like this kind of lexical syntax especially, but obviously it was a goal to look like C++ at this level.
  • Java is case-sensitive. This is another issue about which people feel strongly either way, but no argument will persuade either side to change its mind.
  • There is no operator overloading, in the sense of C++. Now, hardly everybody thinks that operator overloading is a good thing! From my own point of view, it’s unfortunate that there are special “infix operators” that are so different from methods, in cases where the infix operators have function/method-like semantics (”+” does, “||” does not). Operator overloading would let them be treated more like methods. But it can be confusing, especially for beginners.
  • Integer overflow is entirely silent. This is bad.
  • When working with streams, you often have to create all these nested objects, with classes like BufferedInputStream. The underlying reasons for all this seem sensible but the result does make it hard to do easy things, and verbose too.
  • Checked exceptions stir up strong feelings in many people, some reasons being better than others. This is such a complex topic, and I am so interested in exceptions, that I propose to take it up in a later blog entry.
  • Many important library classes cannot be subclassed, including String and StringBuffer, because they are final. I am less convinced than some other people that it’s really so important to subclass these, but I’m not sure.
  • Arrays are not objects of any class except Object. You can’t subclass them and they hardly have any methods. There’s a class called Array full of static methods to do things with arrays. This leads to some non-uniformity, although in practice I don’t think this is a huge problem.
  • It’s very awkward to “use functions as objects”. For example, there isn’t an easy way to apply some function to every member 0f a collection. Imagine trying to translate this Lisp program into Java: “(defun compose (f g) (lambda (x) (funcall f (funcall g x))))”, i.e. take two functions, each of one argument, and return a new function that is the composition of those two functions. You have to use anonymous inner classes with all the types properly genericized, at the very least, which is prohibitively verbose.
  • Objections from Lisp and Scheme people: it’s all too verbose, there are no multimethods, expressions and statements should be the same thing, and there are no tail calls. There are no macros in the Lisp/Scheme sense; they could be added, as shown by Jonathan Bachrach and Keith Playford’s Java Syntactic Extender, but this hasn’t caught on, perhaps because the IDE’s would have to know about it. And, of course, Lisp/Scheme people don’t care for the lexical syntax.

There are probably other complaints. People love to complain about computer languages, which are all far from perfect. In the future, I’ll write a similar posting about Common Lisp.

Common Lisp Implementations: A Survey

December 8, 2007

There are ten currently-maintained implementation of Common Lisp. What are they, and what are they like? What do they cost, are they open-source, and where do you get them? What platforms do they run on? Where did they come from? What platforms do they run on? Do they support threads, streams, CLIM, the CLOS MOP, and/or profiling? Answers to these questions and more can be found in my survey.

There’s also a glossary of terms, a table of some major Common Lisp libraries showing which implementations are supported, a long list of papers about Common Lisp, some success stories of Common Lisp applications, a list of Common Lisp textbooks that are available online, and an extensive list of Common Lisp resources, all with links.

My deepest thanks to everyone who responded to the survey (see the list in the paper), to Drew Crampsie and Common-Lisp.net for helping me host the paper, and to Pascal Costanza for all his advice and help.

Update on One Laptop Per Child and its XO laptop

December 7, 2007

The first-ever real, non-pilot deployment site of OLPC XO laptops just happened in Uruguay. They sent Ivan Krstic, the security architect of the project, partially so that he could make sure that the security arrangements would be done properly and really work (to avoid theft, mainly). Read about some of the story and some technical details here.

For more news, posted frequently, look here and here.

There is an interesting “Sixty Minutes” segment here.

Another good site here.

For the amazing adventures of famous Lisp hacker Luke Gorrie, living in Kathmandu, writing all kinds of code using the FORTH interpreter in the XO’s firmware look here and here.

Luke says: Forth on the XO is in the firmware instead of a BIOS. Its most basic task is to initialize the hardware and boot Linux, but it can do other things too: open a REPL, run hardware diagnostics (e.g. copy camera data into the frame buffer), join a wireless network and make HTTP requests, mount file systems and copy files, etc. A great little self-documenting extensible operating system in 500KB or so of object code :-) you should check out these links when you get your XO: here and here.

Why does this remind me of the FEP (front-end processor) in the Symbolics 3600, which could boot over the net, operate a hierarchical file system, and otherwise act like a dancing bear?

For Ivan Krstic’s fascinating talk at Google, which is what got me so excited about the XO, look here.

For a nice XO technical overview, see M. Tim Jones’s paper, here.

To learn about the nonprofit “powerful ideas education” Viewpoints
Research Institute, run by Alan Kay, look here.

For Bill Clementson’s blog entry entitled “Why you should buy an OLPC XO Laptop”, look here.

The “Give One Get One” offer has been extended to the end of the year, so you can still buy one of your very own, or just donate to the project. Look here.

For PC Magazine’s review of the XO. This is before the war with Intel ended, so that little section at the end is obsolete. I think it has more than 6 to 12 months to get traction; people are so impatient! The note “sluggish flash performance” should not be taken too seriously; they were reviewing a beta version on which a lot of performance improvement work has since been done, and more is coming. Look here, and for wonderful Internet video, look here.

My friend Olin Sibert says: That’s the thing that makes me most dubious about the project: it’s revolutionary in so many areas, so they’re trusting an awful lot of things to work (and integrate) reliably without having much experience.

I ran this by Ivan Krstic, and he agrees completely. And adds “But there’s only one way to find out if it’ll work.” I applaud their bravery. It’s all quite a daunting undertaking.

In case you didn’t read all the comments to my last blog entry about the XO, here are some interesting points:

OLPC has given serious thought to the theft problem. One point they make is that if an adult has one, it’ll be pretty clear that it was stolen; but I don’t know whether or not that would be a strong deterrent in some of the cultures of the world. The main theft-prevention feature is that the user must get a wireless crypto-token periodically from the school server. The tokens are transmitted every day and expire after a month. No token, and the laptop stops working. In situations without appropriate networking, the tokens can come in via the USB ports. I presume that the XO’s distributed here from Give One Get One won’t have this enabled. Look here.

I hope it’ll be easy to get a Scheme and a Common Lisp running. After all, it’s just another Linux/x86 port. Most Common Lisp implementations already run on Linux/x86 (I don’t know the story with Scheme but presumably it’s similar). I wonder how easy/hard it would be to bring up a good Scheme learning environment like DrScheme. You need the X Window System but apparently it already has that. The issue may mostly be whether there is enough demand for the various Common Lisp implementors to direct their effort this way; those folks all have a lot of priorities.

Regarding the price of the XO: Jim Gettys says in his blog that they have always said “$100 in late 2008-2009, which seems to get lost in the press”. So that’s in line with the point I made in my earlier comment: the price will come down, as prices always do.

There is a review of the XO written by SG, a twelve-year-old who writes as well as anyone I’ve ever read (which is astonishing). The comments on the posting are also interesting. I is mainly about the improvements in the Beta 4 XO as compared to the Beta 2 XO, so it gives you some idea of how things have been changing. Look here.

For SG’s earlier review of the Beta 2, scroll down here.

My old friend Brian Silverman, whom I have not seen in years, has co-authored a paper that helps explain the kind of educational philosophy behind the OLPC project, althhough it is not specifically about OLPC. Look here.

There is something called Squeak eToys, described as follow: Based on LOGO, Parc’s Smalltalk, Hypercard, and starLOGO. It is a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users that runs on many platforms, and it is free and open source. It includes 2D and 3D graphics, images, text, particles, presentations, web-pages, videos, sound and MIDI, etc. It includes the ability to share desktops with other Etoy users in real-time, so many forms of immersive mentoring and play can be done over the Internet. It is multilingual, runs on more than 20 platforms bit-identically, and has been successfully used in the USA, Europe, South America (Brazil, Colombia, Argentina), Asia (Japan, Korea, India, Nepal), and elsewhere.

There’s a general description of it here.

And there’s a paper from Viewpoints Research Institute, written by Alan Kay, here.

I had originally been under the impression that the OLPC would contain a complete Squeak, which is a modern (but not very fast) implementation of Smalltalk-80, but Henry Lieberman of the Media Lab says that it won’t. I think eToys is written in it. I wrote about it in one of the long comments on my previous blog entry about the XO. Look here.

I have lots of friends who have been pursuing Seymour Papert’s and Alan Kay’s ideas about education for decades. (See, e.g., Seymour’s “Mindstorms: Children, Computers, and Powerful Ideas”, especially the powerful ideas.) There have been many successful projects based on these ideas, such as the Lego Mindstorms Kit, but they have not quite yet taken the world by storm (so to speak). I’m very much hoping that the OLPC project will do that. I don’t know if Seymour and Alan are right, but it would be so great if they are.