Hummingbirds: Day after day in warm weather they would zing up to the feeder outside my office window, and every time I saw one out of the corner of my eye I thought how nice it would be to get some good pictures. Nice, but not quite worth sitting motionless behind a lens for great chunks of time to get the perfect shot.
So I attached a remote-control button to a camera clamped to the windowsill. But hummingbirds are skittish, and every time my hand left the keyboard to reach for that button the birds flitted off. Then I removed the camera from the clamp and replaced it with a webcam. This was nice, because the webcam software (Oculus) includes motion-detection routines, meaning it will take pictures only when a bird buzzes the feeder. Two new problems emerged: The image-processing activity brought everything else running on my com-puter to an amble, and the resolution was just about good enough to tell the difference between a rubythroat and a really big hornet.
I started thinking about getting an embedded Web server. Actually, what I started thinking about was a device to trigger my SLR camera every time the webcam said there was a bird at the feeder. That turned out to be the embedded server.
To picture the server, think of sites like Google or Yahoo, which employ thousands of high-end CPUs ganged together to answer hundreds of millions of queries a day from all over the world, the equipment occupying whole floors of specially constructed office buildings. Then imagine the opposite, a few $2 chips wired together and a few hundred bytes of software: All it takes to create a tiny server that will answer simple http requests. We're talking about a tiny machine here: A few years back, Hariharasubrahmanian Shrikumar, a graduate student at the University of Massachusetts, built a server in a space slightly larger than the head of a match. The biggest single component in these widgets is typically the modular RJ-45 plug for the Ethernet connector that attaches the server to the rest of cyberspace.
In the best of all possible worlds, I wouldn't need a microserver at all. Networks and communication protocols would already be perfectly tuned for exchanging information between intelligent devices-thermostats, coffeepots, Coke machines, air conditioners, parking meters, sump pumps and so on. Right now we have digital Babel. Committees full of very smart people have been trying to build a perfect solution to the universal gadget- yakking problem for years, and there's no end of the trying in sight. So meanwhile, it's much easier just to embed the aforementioned Web server-a device that legions of techies already know how to make and how to talk to-into whatever widget or appliance needs to acquire communication skills.