A general browser-based implementation of Rudy Rucker's fractal text idea. Technologically trivial and nothing new, but it is more of a paradigm shift. (Why fractal? Tim Berners-Lee on the fractal nature of the Web.) Realizing Rucker's lifebox/life fractal idea is as simple as doing a "Fractal In" search in a blog. One can also imagine adding to the Knowledge Fractal some URLs to blog-specific search engines, thesauruses or even Google Scholar/News. The knowledge fractal is exquisitely rich in its intricacy. How to use the Knowledge Fractal:

Directly install the extension from either:
My gracious thanks to the Mozdev group, Mozilla Update and The Extensions Mirror for the mirrors.
February 9, 2005: KF has been discontinued. For Firefox 1.1 and above, I strongly recommend using Conquery and writing your own simple plugins with the tips below. Thanks for all the support. You may also find a paper on KF here.
December 10, 2004: Version 2.1.0, which is pretty decent and works for Firefox 1.0. Supports 10 search engines, including Google (even the define operator), Yahoo! and Dogpile by default (so it overrides all user settings from previous versions). Completed error handling. The license in the XPI file says I'm not responsible for usage of the software ;)
If you want the MPL-covered source code, just open the XPI file with a zip utility. I'm greatly indebted to Jaap A. Haitsma for his work on Dictionary Search, of which my work is only a modification; please see 'license.txt' in the XPI file for details.
(Preferably only for those who won't hold me responsible for every risk they take!)
Modifying these tips & tricks for use with Conquery should be obvious with some reading up of its documentation.
So walking back from lunch, I was thinking about how to detect groups, given a set of points within a boundary. You know, like how I can roughly say: this group of people ahead of me is distinct from that group across the street. So I set about working on a simple Java algorithm to perform grouping based on no other information other than a radius of neighbourhood (although you could add other information as well, like social interaction). Along the way, I simplified the problem to 2 dimensions (although it should be generalizable to more) and added the concepts of metagroups (groups of groups), metametagroups (groups of (groups of groups))...somewhat like the notion of galaxies, clusters, superclusters and so on in astronomy. It is perhaps embarassing to say that despite ~24 hours of (non-continuous) work and some embarassing bugs, I've come up with a grouping algorithm that seems to work well for small scales but doesn't do so efficiently for large scales. I suspect people must have found better algorithms already (say, via statistical clustering, perhaps) in the field of pattern recognition, so the problem doesn't seem worth the trouble.
(For programmers only!) JAR (with MIT-License-governed Java 5.0 source code and application inside).
java -jar Grouping.jar <numofPoints> <XBound>
<YBound> <radiusOfGroup>
December 18, 2004: Just look at the source code and run the application
for a while and you'll soon get the point of it. Hijack the printing to
System.out or redirect it to check results. Most importantly,
devise a better algorithm! You can easily imagine how a
MetaGroup is just like a Point (with its
<x,y> being the average of all the points in the Group)
and so on; take advantage of this for maximum object oriented programming
effect. In any case, I'm mentally exhausted and grouping has been distracting
me too much from my main research project (terrads), so I'm not gonna work on
it anymore for a while. I haven't proven that the algorithm is correct, so
feel free to find any mistakes and kindly tell me about it.
You probably already know about the earthquake by now. I set about creating a Java program called QuakeAlert, which will process information about the most recently detected quakes from the Internet and try to predict whether or not you're probably at risk. Such a program will enable anyone, anywhere to get early enough warnings — provided that the information online is issued in a timely manner — from the Internet, which is designed to be robust enough to stand the effects of wars and natural disasters. I am not sure how useful the program will be but I hope it will help people somehow. There's absolutely nothing new about this program: for the moment, it's just got a different user interface than most other monitors, that's all; to be unique, it must have predictive capabilities and other new calculations with the RSS feeds.
QuakeAlert is dedicated to the tragedy of the tragic earthquake series of December 26, 2004 and the sheer ingenuity of the people at the USGS who are changing the changing world for the better.
The Java Applet, which is self-signed, so your browser is most likely going to ask you whether you trust it (say yes to get useful results, but remember: the choice is entirely your responsibility). Don't worry, I've written no malicious code and the signature is only valid for the next 6 months. (Programmers: Download the JAR with the MIT-License-governed source code and acknowledgements). You will need at least JRE 5.0 Update 1.
Proof-of-concept released on December 28, 2004. GUI added on December 29, 2004. HTML support and Earthquake Travel Times added on December 30, 2004. Cosmetic changes and Realtime Tsunami Bulletins added on January 11, 2005.
By default, the program's latitude and longitude is set to that of Galle, Sri Lanka and searches for earthquakes up to 2,000 km away. The program works by comparing the distances between your preferred latitude and longitude points and those of the most recently detected earthquakes with data available from the USGS. I am not saying that this is the best way to infer information from known earthquakes, but I intentionally used to this rough heuristic just to show proof of concept. You can, of course, do more complex data-processing, such as calculating whether an earthquake at a given latitude, longitude might create tsunamis that will affect you.
Once, my friend, Leena Devi, showed me tonnes of her pictures and it reminded me of some hitherto dormant ideas of cameras I had. One of them was "surround video": simply an extension of surround audio, where multiple cameras record different viewpoints of the same event simultaneously. Later, you'd playback and see the event from any recorded viewpoint you wish. The collective viewpoints could be arranged as a circle, box, sphere or some other valid geometrical shape. Actually, this idea has already been developed independently, albeit with different, better implementations by other people. So, enjoy the following trivial implementation.

For programmers only!
java -jar SurroundVideo.jar
If something doesn't work, change the parameters in the source file (to fit the path to the video files, for example) and recompile or write any other Java tricks you like. Preferably, the videos should be of the same length, of course. I think the reports of "corrupt JPEG data" are thanks to the way the camera made the movies.
January 4, 2005: Just look at the source code and run the application for a while and you'll soon get the point of it. This is most likely the first and final version of my SurroundVideo.
Just when I thought I couldn't possibly create another useless application, I went about and did it again! NoisyMIDI is simply a trivial Java program that uses noise to play with MIDI. At the moment of writing, it uses two noise streams: one is the typical random number generator and the other is the intriguing Perlin noise. Regarding the former, well, it didn't kick much for me, but it did confirm my earlier belief that playing random notes with random velocities on random instruments can deliver ghostly/bewildering effects. Regarding the latter, well, I just wanted to hear what it sounded like. In any case, using Perlin noise delivers the usual, handsome properties about it, including getting the same noise output for the same input parameters. Also, it sure is interesting to listen to Perlin noise, just like listening to cellular automata evolutions!

(For programmers only!) JAR (with Java 5.0 source code and application inside).
java -jar NoisyMIDI.jar
January 28, 2005: Just look at the source code and run the application for a while and you'll soon get the point of it. I'm pretty sure that good imagination as well as a musical background will produce some very interesting applications of music with Perlin noise: however, I lack both, so I leave it to the curious reader to go on from here.

(For programmers only!) Zipped JAR & JAD (Java 5.0).
February 22, 2005: This is a really childish version 0.0.1. I've only had the time to write one simple rule for WiseGuy (scan continuously for superordinates so that profiles may be switched). I don't know how to switch phone profiles (Silent, Discreet, General, etc.) with CLDC 1.1 and MIDP 2.0, so I leave it to the curious reader to develop WiseGuy into a more, shall we say, refined application.

(For programmers only!) JAR with MIT License (for Java 5.0).
I would have liked to write this directly as a plugin for some standard instant messenger — unfortunately, there isn't any quite yet. Although there's the pretty cool Jabber, there are a great number of nonstandard clients for it. Besides, this program is just a rough, trivial hack (and I really am getting sick of writing insignificant, tiny programs), so I'm not really interested in writing it for any particular instant messenger. You can pick it up from here if you like.

(For programmers only! And with Java 5.0!)
It's a little buggy! So the MIT License should save my butt from any trouble. But seriously, Sparx was made out of sheer boredom and curiosity and I've kind of run out of the latter. Some outstanding bugs:
State[][][] is colored depending on state. This
should be easy thanks to JavaView.PuInteger panels show up automagically on
Animation Dialog? I think I've gotta write that Information Panel.Prerequisites:
Download:
Compiling and uploading to the RCX bot:
cd rcxlejosc -source 1.2 BoidCam.javalejos -verbose BoidCamCompiling and running the PC-side "server" for receiving camera commands:
cd pcjavac PcCamera.javajava PcCameraFirst run PcCamera on the PC, then get BoidCam
running on the RCX.
May 31, 2005: Boids code seems okay; owner/leader is imaginary at the
moment; vision code seems to work (Vision.snapshot()
seems to do nothing to save any pictures on my PC).
Vector.hashCode() may be a little buggy, related to memory
perhaps.

Prerequisities:
Download
Usage
java GvY <Google License Key> <Yahoo! Application ID>
<number of queries to try>Just read this. And download this.
Just read this. And download:
Output sample: rss.xml
For MSCS thesis, built with Ada 2005 a Promela compiler (Pomegranate) for Erigone, a SPIN-like model checker. Wrote parser with homegrown FIRST/FOLLOW set computer. Compiled Promela programs, which model distributed systems, to NFA. Designed a stack VM, inspired by JVM, to simulate NFA.
03-02-2006 - 19:57