views:

665

answers:

9

What are your favorite personal projects? What I mean is a project that you designed and worked on without getting paid for it - but had fun developing. If you had a team of other people working on it as well, that is OK too. This can be in any language; or a program you wrote that did something another one did.

Multiple posts are welcome - but please keep it down to a sane count (three or four) as I bet many of you guys have a bunch of projects like these you have built.

Anything qualifies: apps, scripts, games, or sites on any platform; even if you developed your own embedded hardware.

Please include:

  • Purpose of program and why it was a good idea
  • Language written in
  • (if possible) a link to it (if it's an online site that's even better :))
  • What you and/or your team learned when developing it
  • What happened to it? Did it grow into something bigger; or is it still in use today?
+2  A: 

I have only small things i am currently doing as a hobby, just mainly for home and my wife.

My wife is a graphic designer, So I have built an online font viewer for her, shows her all the fonts we have from anywhere over the web, plus a sample of how it looks with whatever text she wants. It renders the font as an image for fast viewing.

Another is my home movie catalog. I basically paste in the IMDB link and it scrapes the info as best it can and populates the database.

I used to work on a botting system for Diablo II a while back, which i stopped doing, but it seems someone revived the website, although i dont know the status of the project. It was a botting automation engine written in .net that allowed others to build bots as a .net assembly and load it into the game. it's called botNET, a play on dotNET. not a botnet though.

It was written in C/ManagedC++/Assembly as it had to bridge Diablo II (written in C) with .NET and managed code.

This was a great learning experience at the time because i learned a lot about reverse engineering which I later used on a professional project where i needed to extend functionality of a legacy app by intercepting calls and extending it. Also learned a boatload about Managed C++, making fastcalls with assembly stubs (Managed C++ at the time, and maybe still now didnt/doesnt support fastcall)

mattlant
Hehe, I wrote a chat application front-end in C++/CLI (Managed C++ after .net 2.0) and a back end of some net code I was playing with in C++. I can relate completely to the "learned a boatload about Managed C++" comment ;)
nlaq
indeed. A lot of fun it was. The only pain was at the time it was MC++ pre 2.0. So the keywords and the way you create managed classes and whatnot was ugly. They changed all that in 2.0
mattlant
+1  A: 

My favorite personal project is IronBabel.

IB started out as an experiment to see if it was possible to get high-performance emulation by recompiling machine code to run on .NET. It was originally built on IronPython but moved to Nemerle early on when I learned how much custom syntax could decrease turnaround time.

I've likely learned more from this project than any other. Since it started as a proof of concept, obviously I learned the answer to that (which, surprisingly, turned out that you could), but developed new techniques for efficient caching of recompiled code (recompilation is expensive in IB), how to define terse syntax for defining instructions, etc.

IB is still ongoing and is part of a commercial project by one of my companies. It's got a long future in front of it and there's still a lot to learn.

Cody Brocious
A: 

I wrote an application I called "InputSender" (I'm bad with names).

I have my desktop's two monitors on my desk and then to the left I have my laptop (with the broken o key :p). I wanted an application where I could simply move my mouse over to the left edge of my screen - then I would start controlling my laptop with my desktop's keyboard/mouse. I actually got the thing to work! It had problems and was a proof-of-concept so I had plans to re-write it with a nice GUI and a bunch of nice features (multiple monitors... having the cursor be hidden on the host machine when you are controlling a client...). I was even planning on making drag+drop work too - I had it all planned out in my head...

And then I found out about Synergy and lost my motivation :( Sadly I still actually use Synergy and now my InputSender code is hidden in some deep SVN repository somewhere all by itself...

On a side note: the person who wrote Synergy has some really neat code. If you are bored and want to see a good example of good code - then check it out.

PS: I thought this question would have more replies! (thanks to those who did reply BTW)

nlaq
+1  A: 

About the most complicated thing I've written(and am still developing) is a simple AI experiment - spawn a specified number of "droids", and they go after food on a map, competing both by which gets their first, and then if they arrive at the same time, fighting. There are a number of algorithmical challenges involved(especially since it's AI), hence why it's an ongoing project.

junkforce
+2  A: 

I challenged myself to write a game in 24 hours. A OpenGL/GLUT program emerged, by the name of Bowling For Geeks. That was fun.

Paul Nathan
why is nobody posting links ?
RSabet
+1  A: 

Currently, I have a prototype of some general virtual machine around.

The idea resulted from the programming languages institute at our university: They wanted a p-machine with visualization they can use in their courses, because, you know, being able to look at a screen with arrows moving around and numbers getting written is more interesting than just hearing "the stack does this, that and something else.". So I started thinking about it -- and I thought well. I basically arrived at the ability to simulate arbitrary machines with registers and a memory. There are plans to extend this to registers, register-arrays, multiple named memories and self-modifying code. Furthermore, if I have some time, I want to look at implementing a symbolic optimization of programs if the programs are just executed and not visualized. :)

Currently, it is just a tiny prototype, because I don't really have time and I have another little pet-project (a platformer involving squares and circles, making fun of a zombie-apokalypse (even though its more of a square-apokalypse)).

Tetha
+1  A: 

The most successful project I have ever had by far is AIMFix which will always remain one of my favorite projects. Thanks to working on that I was able to help millions of people remove irritating malicious software, and it ended up pushing me into all sorts of interesting directions. I even met my wife because of it! (helped her remove an IM worm and started talking and the next thing you know, we were dating).

Aside from that the most fun I've had has been mostly small projects, and oddly I find the ones you make on a total whim can be the most rewarding. The software project I work on in my day job has a Perl API, and just for the heck of it one weekend I sat down and reimplemented the entire API in Python. It will probably never be used by anyone but me, and it wasn't for any particular reason other than to see if I could do it and to learn something new in the process. Despite that, it ended up being a really fun project.

I've had similarly enjoyable experiences finding little mathematical nuggets online that I don't understand (e.g. http://stackoverflow.com/questions/185781/) and trying to solve them in code. I think favorite projects, at least for me, are just ones that tickle my brain, or a problem that needs fixing bad enough to get me motivated to write code for it.

Jay
+1  A: 

ORAPig -- The Oracle Python Interface Generator

This program generates Python wrappers for Oracle stored procedures. It was interesting to write, and I learned a lot about introspecting databases via the data dictionary.

It turns out to be quite useful, and expands database access to our Python programmers without them having to know any of the underlying database api or syntax.

I was given permission to release it as open source, and got several nice features from people... all in all, a very nice little project!

http://code.google.com/p/orapig

Mark Harrison
+7  A: 

MLISP -- Meeting Lisp

This was a lisp interpreter written in C that I hacked on intermittently over the period of a couple of years at my old job.

The Rules:

  • I could only work on it during meetings.
  • The source had to fit on one 66-line by 80-column page. (So I could work on it discreetly in meetings!)
  • The code had to compile cleanly.
  • No debugging at the computer. Bugs had to be diagnosed and fixed at the next meeting.
  • This include compilation errors.
  • It had an "include" command, so parts of the library were in lisp and didn't count against the page limit.

I learned a lot and it was a great way to pass the time in boring meetings!

Mark Harrison
Finally something useful coming out of a meeting.
Brad Gilbert