Design traffic lights that can monitor the volume of traffic and provide random combinations of advanced and protected lefts, protected rights and variable length lights to adjust traffic flow. They should also communciate with neighbouring lights to try to sequence lights at the speed limit.
Eric Praetzel complained about having to manually install certain pieces of software on Windows machines. Set up RDP on all the Windows machines, the use rdesktop with synthetic X events to run a recorded script. I'm sure schemes like this have been previously invented, but because of the RDP and synthetic X, you can write your scrip and then do a sort of for each in machines; do depraetzel $each script & done and forget it. Hell, you could cronjob that and have it suck a directory of scripts.
Create an amplifier that will digitally filter out feed back. Do this by creating a buffer and filling it with output audio. As audio comes in, subtract an appropriately scaled and delayed version of the output audio from the buffer to remove the fed-back signal. Send out an inaudible pulse every few seconds to calibrate the magnitude and delay of the feedback system.
As system where a user wears an RFID tag that identifies them. A computer with many displays situated strategically though out a building locates the user and displays directions to their destination as they move about. It should be able to handle many concurrent users. Destinations could be entered in advanced from scheduling software or from public terminals.
I lived in a house one term with radiators and because of the placement of the thermostat, most rooms were not at a comfortable temperature. In each room, there should be a small control unit that has a temperature sensor and a vavle on the radiator in that room. When it gets too cold, it sends a message to the boiler to turn on. It opens its valve and then, once the room is hot, turns of the boiler. Multiple controllers can request the boiler to be on and the boiler should not go off until all the rooms are satisfied. If the boiler is on and a room is slightly below temperature, the controller in that room should open the valve to take advantage of the boiler being on anyway. The controllers could look at the rate of temperature change to open the valve not fully so the rooms heat at the same rate.
Get a microwave that can read the cooking directions from an RFID tag on the packaging. Microwaving will destroy the tag, possibly with fire. Perhaps some kind of barcode reader.
Taken by Andre, Dan, Derek, Eddie and Joel.
Capture the content written on the chalkboard in such away that it can be downloaded later and replayed. Anyone should be able to download the current display or stream the contents to a file over an internet.
Bank cards that use public-key encryption so that that they get re-written when you make a transaction. If some one duplicated the bank card and used it, when you used your card, the numbers would be out of sequence and the bank could freeze the account. The public-key makes sure that the new bank card number isn't transmitted over the communication line.
Create an extremely simple ATA over Ethernet controller that fits on a small board that can be plugged directly into a drive. Power should come from Power over Ethernet. This would allow a SAN to be assembled from a switch and a stack of drives without any real fanciness.
Put RFID tags on items of clothing and make a washing machine that can scan its drum and determine incompatibilites and the optimal cycle to put the chlothes on.
To satisfy my hate of web apps, create a Java Swing-based UI that allows you to securely log into a server which provides applications to the user. The UI for the applications get shoved down the pipe and then the UI communicates through some kind of RPC mechanism with servers on the far end. Authentication is divided into domains so at UW the CECS department can maintain JobMine and choose whether or not I see it based on their databases and the E&CE department can push their lab sign up system. For actual interface, picture something like Outlook, Kontact or Evolution. Each module in the application should be able to provide a short summary and new information and reminders so an overview-type page can be constructed.
Monitor oxygen staturation, nitrogen content, ammonia and other such aquarium distrupting materials to help people not kill fish.
People are starting to build super-computers out of FPGAs. So, build a RAID-like system for FPGAs. Make a back plane bus (probably FireWire) to which a cluster of computers can connect. Then, put a bunch of FPGAs on a card and connect the cards to the bus. The cards have a controller that signals availability to the computer. The computer downloads jobs to the cards and the cards can send messages over the bus to each other or the computer and eventually trigger a reset. Cards can be halted so when the job finishes, they don't be come available and can be removed and new cards can plug into the bus.
Expanded upon in the AAGAARD page.
Write the VHDL for my BrainFuck processor and then some kind of compiler to take a human paresable language and Fuck it up.
I already know vee-haich-dee-ell...so build a Java virtual machine in it to suck in raw byte code and execute it. Memory management might be horrific.
Create a rotating shaft with a chain around it in a tank of magneto-resistive fluid. Then use a computer to put various magnetic fields through the fluid acting sort of like a soft gear shift mechanism. Instead of shifting the change from one gear to another on a sproket like a bike, change the diameter of the gear that the chain lives in.
Some kind of device to tell cell phones not to ring for use in lecture halls and movie theatres. It has to be extremely specific (i.e., just the square space inside a room, no dead spots and no bleed out into the hall ways and can't require turning the room into a big Faraday cage.
KVMs are irritating when you have too many computers connected since invariably two people need to work on two computers on the same console. So, create a KVM network where each console can plug into a switch
, each console plugs into the switch and switches can be uplinked. It has to be as good as a real connection. Some computers have network-based controllers that can display crappy 8-bit screen with jittery mouse movement that gets weird when you switch resolutions. If I change resolutions, the monitor should change scan rate.
Make some kind of ultra-portable Linux driver that boot and shares the internal harddisk on FireWire. Mac notebooks used to do this on SCSI and still do it on FireWire.
Make a machine with a paper tape that can read by a sensor. The sensor can then interpret the symbol and use and eraser to remove the symbol and pencil to write a new one. Give something all awful and physical for the computer scientists to use.
Create a file system where machines ``mount'' a shared file system that exists only in memory. Each machine keeps a copy of the entire file system in memory and uses multicast to maintain quorum so that all the systems can update files and prevent file corruption. When a node comes online, it should be able to get a copy of the filesystem and if a node crashes, it should not disrupt the others (like any clustered file-systems). Weirdness might happen if four or more systems were together and then severed in half and then re-joined--that would cause massive quorum unrest.
Create a pooling file system, that is, a way to enslave other mounted filesystem to a single file system. So, if you had 3 disks that were 2TB (Linux's maximum block device size), you could format each of them, and them pool them to create a mount point that appears to be 6TB and the system will write the different files to different filesystems.
Make a back-end for GCC so you can compile C and well...Fortran, Ada, Pascal, Java, Shakespeare, C++ and Objective C code for the PIC microcontrollers. See the GNU PIC Utils for an assembler.
The basic idea is to write each caracter in the Unicode character set as a collection of pen movements with descriptions of how and why lines intertersect (or don't) and the angles. Then, translations can be invented that convert the pen movements into shapes. If the description of the pen movements and the transformation is sophisticated enough it should be possible to describe all the characters in the world and then have the computer generate many fonts from a collection of translations. So, once all the Unicode characters are entered, creating new fonts (just the translation) will provide all the characters in all languages. Old Book Klingon? Times New Egyptian?
Create a network protocol with variable-length address so that network can grow infinitely. The network is divided into segments. Each computer on the segment select a single byte address unique on that segment. If the machine has multiple interfaces, each interface on a machine must have a unqiue address. Each machine has the interaface 0 representing that machine. An address is the string of interface address that represent a path through the system. So 0:1:2:3:4:0 means from this computer, go out through interface 1 and go into computer 2, go out through interface 3 and to computer 4 and that is the destination. The address of the originiator from the perspective of the destination is the reverse string. If any cycles exist in the network (and they will), then a computer could have multiple addresses (paths). A complicated name resolution system would be necessary. It should be able to co-ordinate with the routers to track the multiple paths. It would have to steal some spanning tree ideas. The real problem is getting a handle on the graph theory necessary to do this efficiently.
System logs are great, but they can't actually prove anything since they can be tampered with using a text editor. Temporal encryption is the idea that a token server passes out information that gets combined with the clock and the log entry to encrypt it in such a way that can be verified after the fact but not duplicated, even if the token stream is recorded and played back. The clock skew and ping delays would proabably need to be used.
| Mon, 8 Dec 2008 22:26:15 -0500 |
|