My 99.44% Pure Java(TM)
I have been writing Java since June 1995 which was only a few months after Sun introduced it to the public and when the word "Java" still made most people think of coffee. From the very beginning I have been prolific about writing Java. This page gathers together some of the Java which I have written in the past couple of years and it provides links to the excellent programming tools which others have written and which I have used to create my programs.
Note: I am loosely defining "Major Projects" as projects that I have worked on for a month or more. For the most part, these have also been my "work" projects.
- My current project is the development of peer to peer backup software called Magic Mirror Backup(tm) for my company Pensamos Digital(tm). The software lets you backup your data automatically every day without messing with tapes or CDs and for much less money than what you would pay for a typical backup service. Download a copy and make your data more reliable today.
- I worked on two major projects that used Java extensively during my work at Pharmatrak. The first project was a statistical analysis package for pharmaceuticals. The second project was an innovative variation on the search engine theme also targeted at pharmaceuticals. You can read more about these projects in the Pharmatrak section of my resume.
- The Global School District was a project designed to leverage the internet as a distance learning solution. I wrote a large amount of the code (around 95%) for its original incarnation, including an email/messaging package, an SMTP server, and other client server modules written entirely in Java. You can read more about my involvement in the Global School District section of my resume.
- Cosmic Encounter is a popular board game which was created back in 1977. I have written a network based adaptation of this game which you can play here.
- I worked on a Java based search engine for Infoseek for awhile. You can read more about that on the Infoseek section of my resume.
- Unearthed was one of the first mud-esque Java applets ever. I wrote it in a month at the beginning of 1996 while I was still going to school full time. The server that it was hosted on is unfortunately no longer available.
- While working at Dimension X I did a lot of the Java programming for the early stages of Willisville, a new virtual reality community. I worked on this project with Grammy award winner Allee Willis and two-time Emmy winner Prudence Fenton.
A lot of the Java that I've written has been written for my own entertainment. I also have the tendency to work Java into projects that would otherwise lack it. Some examples are listed below.
- Here's a little applet I threw together to run battle simulations for Axis and Allies. You can specify the units that each side has and then it will continuously run battle simulations in order to calculate the probabilities of the various outcomes. It was designed to also run on J2ME/MIDP devices (e.g., cell phones).
- I wrote a puzzle called the Scrambler Applet for people to use on their own web pages with their own images. It's a simple applet that I wrote during two plane flights between Boston and California in 1997 and 1998 (although I didn't release it until fall of 2001 when I finally had a chance to make a web page for it).
- In the winter of 1995 I developed a 3D stereo pair modeler in Java which generates three dimensional models from stereo photographs. This program was developed as part of one of my classes at the Massachusetts Institute of Technology.
- In the summer of 1997 I wrote a book on search engines and as part of the book I wrote a chapter on how to write your own search engine. For demonstration purposes I wrote a search engine, entirely in Java. My search engine included a spider and a custom web server and it was developed in about half a week.
- There has been a bug in Sun's JDK for several years now that severely impedes the development of a robust web crawler in Java. The short of it is that the Sun's HttpURLConnection.disconnect() method does not work under certain circumstances, which ends up making it impossible to timeout a URLConnection without resorting to some gross hack. I have released a detailed description of the problem along with the gross hack that I use to work around it.
- I took a publicly available implementation of the MD5 hashing algorithm written in Java and optimized it for speed. The resulting code is six times as fast as the original code and twice as fast as the MD5 algorithm provided with Sun's JDK. View the fast MD5 web page.
- The second applet that I ever wrote was a flying heads applet which has been at the top of my homepage ever since. I wrote this in August 1995 so this applet actually works in the alpha version of HotJava 1.0 if you're lucky to have a copy of that still hanging around!
- While working at Dimension X I also worked on a lot of projects that are no longer available (or never were available) online. These include:
- The Dnx Cafe (Probably the first commercial quality chat applet ever).
- The coloring book applet used on the Winnie the Pooh Coloring Book Page on the official Disney site. It was for a Christmas video promotion back in 1995 so it's not up anymore.
- Some other stuff I'm not allowed to tell you about.
- UberChat is a chat applet that I threw together which can actually be customized to look good. It allows for such luxuries as a background image inside the chat applet which other chat applets very rarely (if ever) offer.
- UberMap is an imagemap applet that I wrote in a day which takes standard imagemaps and turns them into active imagemaps without any alteration and while maintaining backward compatibility with browsers that don't support Java. I'm willing to GPL UberMap if there is any demand for it.
- I wrote a bouncing/snaking heads applet for my chapter in certain editions of Java Unleashed.
- I also wrote a really stupid skiing game from my chapter in the many versions of Java Unleashed.
- I have written plenty of little Java tools for my personal use which I haven't released (yet). You can peruse some of these project in the R&D section of my website. If you see something there that is of interest to you, let me know and there's a good chance I'll work on polishing it up for a release.
- Of course, the detour that takes the cake is my age detector...
Java Age DetectorMy age detector applet is probably the Java applet that took me the least amount of time to write (about an hour) and at the same time it has become far more popular than all of my other applets and programs combined. I attribute its success to its hormonal appeal, its humorous appeal, and a lot of luck.
Java Tools For Developers
Download My Code
I intend to gradually release bits and pieces of code that I've written (and which I maintain ownership of) in hopes that others will find it useful. The links below are the beginning of this endeavor and there is much more that I intend to release as time permits. Most of the software is licensed under an open source license - please check each download for specific licensing details, or contact me if you would like to purchase a different license for your own use.
- Code for appropriately timing out a URLConnection - There has been a bug in Sun's JDK for several years now that severely impedes the development of a robust web crawler in Java. The short of it is that the Sun's HttpURLConnection.disconnect() method does not work under certain circumstances, which ends up making it impossible to timeout a URLConnection without resorting to some gross hack. I have released a detailed description of the problem along with the gross hack that I use to work around it.
- Fast MD5 algorithm - I took a publicly available implementation of the MD5 hashing algorithm written in Java and optimized it for speed. The resulting code is six times as fast as the original code and twice as fast as the MD5 algorithm provided with Sun's JDK. View the fast MD5 web page.
A lot of people ask me questions about how I learned Java and what tools I use to create my programs presumably because this information will help them learn Java and create Java programs. I'm a little dubious about how much this information will really help anyone else because a lot of the programming experience I have was gained well before Java was ever public, and by the time Java was released it was just another language that I picked up fairly quickly. However, if you think it will help you I have no reason to hide how I've learned Java and how I create my programs.
As far as learning Java goes, I learned pretty much everything from the Java Tutorial and the Java 1.0 API both of which were (and still are) available from Sun's Javasoft site. I also used the Java Language Specification, which is also available at Javasoft, to a lesser extent. No, I did not use any books because there were none out at the time, so I can't honestly recommend any Java books.
Here are the resources that I use to create my Java programs. I heartily endorse all of these products.
- The JDK (Java Development Kit) is a must have for Java Developers. It is the standard when it comes to Java implementations. The JDK is available from Javasoft.
- Emacs completely blows away every other code editor in existence. If you are using UNIX or Linux, you already knew this. However, if you are using Windows you should be sure to check out NTEmacs - but don't let the name fool you, it works in Windows95 too.
- If you are using Emacs, then you will definitely want to check out The JDE. The JDE adds a bunch of very useful features for working with Java to Emacs, and I recommended it highly.
- Netscape's Navigator is a must-have for anybody developing Java applets. Navigator is of particular interest to Java developers because it is the only widely used browser which properly supports Java.
- RetroGuard is an exceptional bytecode obfuscater that will help protect your code from decompilation.
- OptimizeIt is a profiler that has served me very well. You will need some sort of profiler to make your Java programs perform well and OptimizeIt is excellent.
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
All Pages, Images, and Other Content Copyright © 1997 - 2013 Timothy W Macinta , except where noted. All Rights Reserved. The "Tim Macinta Now" button may be used on web pages that are external to this site to provide a link back to this page. For usage guidelines on KMFMS artwork please see http://www.kmfms.com/usage-guide.html.