I’m not sure how much I can put here because of my contract with the Laboratory. Technically, all projects that I work on belong to the lab, including home projects, so you won’t see code or Intellectual Property here. Sorry. I wish I could give out some of this stuff, especially since I work on it on my own time for fun.
I have a projector at home that’s connected to a computer. Using a web camera mounted near the projector, I can detect a laser pointer on the projected screen. I can then use the laser pointer as an input device. For example, I have an application that uses the laser pointer to control the mouse. This way, I can sit on my couch and surf the web using just my pointer, but it has wider applications, too. You could use it to control a presentation, or a home entertainment system, or you could even build games off of it. I’ve got a dartboard game and missile command right now, and I have plans to implement more games. It is as easy to write software that uses the laser pointer as an input device as it is to use a mouse thanks to the architecture of my system, and because of the mouse emulator application, all existing software is already compatible with the laser setup.
Video of the laser pointer in action (Requires Quicktime, no audio)
When I was studying for the GRE, I wanted a way to improve my vocabulary for the test. Carrying flashcards was nice, but not enough. I was able to capture dictionary.com’s word of the day for as long as they had one. Then I created a database and created a web application that would quiz me on the definitions by providing one correct and 3 incorrect definitions. I could also print out a random list of words for the day and for an entire summer I would print off the list each day and throughout the day work on those words. It was a great tool for me.
My coworkers and I often play the card game Wizard during our lunch breaks. I have automated scorekeeping by creating a web site tailored to mobile devices. This site allows us to keep track of the score of the game and develops statistics about each player, including their average accuracy, number of wins and losses, etc. To start a game, select the number of players and click start game, and you will be redirected to the new game. Remember, it is built with mobile devices in mind.
I also have statistics generated for each person and each game:
I was frustrated with my cell reception, and the Verizon map of coverage said I shouldn’t be. I pulled the publicly available database from the FCC of registered antenna structures, and combined that with Google Maps to create a mashup that shows the location of towers in the United States. This helped explain my reception problems. Of course, now there are a few sites that do it, but I’m proud to say mine was before theirs.
My friends and I often take pictures of our activities, and we needed an easy way to share the photos. I created an automated photo gallery tool that allows us to FTP into the gallery, create a folder, and copy the images to the folder. The software automatically saves those images to an originals folder, creates thumbnails of the pictures, and resizes them for better web viewing. The gallery also has the ability to add descriptions to galleries, captions to pictures, and comments to pictures, galleries can have sub-galleries to any depth, a search feature makes finding pictures easy, and all of the data is easily accessible to download.
Wiki Work - I really like the idea of the DokuWiki. I like it so much I made it the basis for bobbaddeley.com. I had a tough time doing it because I am a web designer and I thought it might be hypocritical to use a wiki for my own site, but I still think I have the freedom to modify it to meet my needs, and it’s easier to keep updated. Plus, I get to test out my improvements to the DokuWiki software. See some of the stuff I’m working on in here.
Conway’s game of life–A while ago I took Java II, and the game of life was the first program we had to write. I went above and beyond the assignment, but it was fun, so I didn’t mind.
An odd idea–If you’re familiar with the Heisenberg uncertainty principle, you know that the act of measuring something affects its value, so a measurement is never perfect. I thought about this idea a bit and specifically about the granularity of measurements and how that affects a graph of them. The idea is that we may have a good idea about how the universe operates, but we can measure at specific intervals. If the universe was represented as an equation, we would be able to graph the universe with some interval along the time axis. But the equation we think matches the universe might be incorrect because we can’t measure with a finer granularity. There may be all kinds of things happening in between when we measure. I made a little Java applet to describe my idea. It’s a graph of x*sin(x), but you can change the interval at which you plot the graph, resulting in many different representations of the graph. Imagine that we are looking at the universe at Step 44, and we have an equation that represents that line, but if we change the rate at which we observe our universe we may end up with a fundamentally different graph.
Mastermind–Programming games is a great way to learn a language. I put together a little game called mastermind when I was learning Flash. The idea is that you guess a pattern of colors and get told how many colors are correct and how many locations are correct. At the next iteration, you use that information to make a better guess. The goal is to figure out the randomly generated pattern. Play the game in java.Play the Flash Version (much better)