I am working on several projects besides my 'main' XCF project with professor Canny.
Network API -- I think network programming can be made a lot easier if we have another level of abstraction on top of the Berkeley socket layer. I am very impressed by the Java Network classes, so I am porting most of their functionality over to C++ for general use.
ttalkd -- a talk daemon that lets users reject talk requests based on host names and/or user names. Granted that this project can be done by adding about 50 lines to the current talk daemon if I use a very simple accept/reject scheme. But I want a friendlier .talkrc that allows an user to use wildcards in specifying which logins or hostnames to accept or reject. It has made parsing a bit tricky.
Introduction
Professor Canny's Blimp project involves building a blimp that will be remote controlled through the web. The blimp will carry a camera that will transmit video through the network to whoever is controlling it. People around the world will be able to navigate the blimp around soda hall looking at geeks playing netrek. The user interface for controlling the blimp will be written in Java because of its portability. Compiled Java bytecode is machine independent. Anyone with a Java capable browser, regardless of what platform it is in, will be able to download the applet codes and control the blimp.
Approach
I have been working mostly on video transmission. A number of approaches can be used to transmit video. A cheap and easy way is to use server-push in HTML to constantly send new JPEG images from the blimp camera. This approach is too cheap and too easy. Various existing video transmission packages are also being considered. CUSeeMe, from Cornell University, works quite well. However, it transmits both video and sound in an external window, not inline. I have also tested the WebVideo package from Ulm Univerity. The package claims to do inline video transmission, but it does not yet support JPEG image decoding.
My own approach to this problem has been to write an applet that decodes an image stream on the fly. This is very difficult to do if the image stream is in JPEG format. However if the data stream transmits raw RGB pixel number, it makes my job a lot easier. The down side is of course it wastes a lot of bandwidth. A JPEG compressed image is only a couple of kilobytes long, the raw RGB pixel numbers might be in the tens of kilobytes. I am still working on determining just slow this method is. The trade-off is between the time spent decoding a small JPEG image versus the time spent transmission a bigger image in RGB format.
Progress Report
I have installed Solaris 2.5 on the Sparc 1+ and I am now working on configuring this workstation for Java installation.
10.15 sting.xcf is fully operational. Hotjava and JDK installed. I am learning the language.11.04 Figured out a way to render inline video images. I will have this coded by Monday.
12.27 Trying to integrate my pixel rendering applet with my networking code.
I re-written the Java client interface to the blimp. Right now it only allows one way communication from the client to the server. I plan to modify it to allow feedback signals from the blimp.
Click here to visit the Blimp homepage.