I think that the best, and maybe the only, thing to do to get better as a programmer is to program, i.e. to create new stuff, build new apps, solve new problems.

But during our daily jobs we (well I can only speak for myself :)) usually do a lot of maintainance programming, debugging, support and other work that could be categorized as "not so fun".

So I'm looking for some interesting ideas to keep my fingers fast and my mind sharp. It could be anything: a desktop app, a web app or just some cool feature added to an existing product you once thought would be really useful.

So what's your favourite non-implemented programming project idea?

Thanks for all your answers!


I'd love to design and implement a real-time strategy video game. It's a good way of drawing quite a few computer science concepts into one neat, vast project. Plus, it's really easy to see the entire project come together, and you can celebrate by having a LAN party. :)


In college we wrote a parser for a very simple programming language. From that time I've always wanted to write a full compiler for a real language. I've thought about writing one for a language that doesn't yet have a compiler for the JVM, but I'm not sure if there are any of those left. Any suggestions?


A TextMate clone for GNOME.

EDIT: And a good download manager.

EDIT 2: And an e-Book organizer.


A Home organizer that will

  • Manage lights and heating
  • Know where everyone is in the house
  • Have a remote access voice interface
  • Keep track of schedule for the family

I have always wanted to write my own programmers editor. I wrote a small one during college for class. I've tried many editors and they all have things I don't like. But, while I'd love to do it, its not a good use of time. While there is someting in every editor that bugs me, the two I use regularly are just fine.


I suggest reading Michal Zalewski's STUPID_IDEAS.txt for inspiration.



I'd like to write a program to help parents with homeschooling their children. It would be a system that learned the child's individual learning patterns, areas of interest, and mental levels to better tailor the experience to the individual child.

It would include, of course, the accepted standards for education in whatever state the student lived, but would also allow the student to follow their passion more to the extent that a public school education could never do.

It's much more complicated than that, and I've planned out a vast majority of the technologies behind it. I guess it's one of those "if I retire and there's nothing like it already" kind of programs.

An insane amount of work and time would go into bringing this vision into practice, hence why I'll never finish it.


This sounds like an extremely clever ploy to steal peoples great ideas!

All kidding aside, I've always wanted to write a really great automated backup utility, since I've never really been satisfied with the freebies I have found online.

I've just never had the time/motivation to learn all the special OS interaction stuff for such a utility.

Also I'd like to write nice RISK-style game that could be played online or against a computer.


A feed reader with Bayesian filtering capabilities, GUI interface, capable of deleting/marking read feed items based on certain user defined criteria.


I want to write a web-based service/webpage that I can serve up my music and maybe vids from my media center/webserver to anywhere in the world that has a browser.

I know that there are things like WebGuide that can do this, but this is quite buggy/unreliable and also going out of date (latest patches break it). Also, if you had a WCF based service alongside the webpage you could also write clients for win mobile or maybe iphone that you could serve your music collection to without having to store your music collection actually on your phone!

Any volunteers!?


A file managing tool, with features like:

  • Show all files in c:\importantfiles that do not exist anywhere in d:\backup. In other words, it will not show c:\importantfiles\Allan\project.zip if there exists an identical file d:\backups\old\2007\memstick\projectForAllan.zip

  • De-duping, scanning a directory and deleting all duplicate files based on a few user-selectable criteria like "delete the dupe with the longer pathname" or "Prefer files in this subdir".

  • Compare files on parts of the content. (Two photos that are identical except one is tagged "London" should (optionally of course) be shown as identical)

  • Store keywords for files that don't support metadata and integrate these with any desktop search engine

  • Store metadata and CRC's for files on removale storage, (Yes you can delete this directory because all of the files in it are on portable drive "Samsung2" or dvds "BackupJan01", "backupJan04" and "backupJan06")

(I still hope MS will release winFS one day)


I am currently playing with the idea of doing a good bookmark manager. Yes, another one.

One that is browser agnostic, relying heavily on tags, using XML as storage format (easy to reuse), updating, in real time or at a command, a version on a Web server, either by FTP (no need of server-side script) or some HTTP. But being independent of any site or vendor, since these can disappear suddenly... So I can have the same bookmarks at work, at home, or at a friends' place.

There is a Firefox plugin doing something similar, but I wasn't convinced by it (might reconsider). FF's bookmark manager is just awful, FF3 didn't improved it significantly. And no share option there...


I've been wanting to develop a nice mp3 collection catalog. I've never found one that pleased me. Actually it is almost done, it just needs a GUI, and some tweaks in the core code. But time is very short, so it's advancing very slowly.


See also What do you want to develop?


I always wanted to write a role playing game that sort of played like the old King's Quest games.

I started it by writing a basic logic and story engine and got is somewhat working with text based inputs but then school started again and I forgot about it.


First I must say that joining an open source project is always a fun experience and allows you to work on a large scale project without having to do a real large amount of work to get it started ( you can find open source projects which are already started ). This can be both fun and motivating.

The apps I want to write are usually beyond my capabilities. ie What a I would really like to make is a open source game engine for linux similar to UE3 or Valve's source engine and have level editors and built in scripting languages for it as well.

Since that would take a extremely long amount of time to create (since it is on my spare time) the best I can do is try to help out with existing projects which are similar, such as Ogre3D and irrlicht.


I have always really enjoyed n-gram based text generation, in fact I built a chatbot based on it years ago in Java that would learn as people talked to it. I have always thought since machines are much more powerful know you could do really cool and large n-gram based music or art generation programs.

I know there are a few examples of people using n-grams to generate music out there but I haven't seen anything super impressive yet. I think if you broke the problem up correctly and fed the system a good data set n-grams could make some truly amazing and unique music.


A program to exhaustively interrogate me about my music collection, like an annoying friend, asking me to choose between two songs, until it has worked out which of the songs is my all-time favourite all the way down to the songs I really ought to delete, because I have no idea.

Perhaps it'd work for photo albums and movie collections too.


A source control system that understands the structure and content of what is being checked in. It would parse code for major languages and enable fine grained checkin/checkout, for example method level checkin/checkout. It would also be able to identify code dependencies and flag the developer to check in dependencies as needed.


Really want to write a fast, lean, web browser.


A Chess program with a heuristic based AI. I wanted to try 5 variations of chess strategies, mixed and matched (e.g. give the different approaches different weights) and then see how such a combination did against other AI opponents.


A tool that lets you write graph algorithms in pseudocodes and runs the algorithms on sample graphs.

I remember the cool algorithm class I took when in college where I learnt about djikstra, gale-shapley, kruskal, flow network etc and I always wish that there is a tool that let me show how those algorithms run step-by-step.

The tool would have its own pseudocode language where I can:

while exists x in list1 where x.pair is null:
    quicksort x.candidates
    x.pair := remove from x.candidates

And provide a sample graph data with all the vertices and edges etc, and when I press "Run" it would execute the pseudocode to perform the algorithm on the sample data. There should be an option where I can slow down the execution so that I can watch how the algorithm moves the vertices and edges around to get the final result.

With my limited knowledge on code parsing, compiler and all, it's next to impossible for me ... :( ... I wish someone would take up this cool idea ;)


A game bot for a strategy board game.

Specifically, I'm a huge Risk fan, and there's this website ( http://warfish.net ) which has made available an API for getting the board state.

The guy has added a bunch of additional rules to Risk that make it even more interesting to play and more challenging to create a bot.


A real-time voice changing impersonation tool.

You speak into the microphone, the software changes your voice into the voice of a particular somebody else (e.g. a celebrity).

Focussing on acoustic qualities at first (pitch, tone). Bonus points if the user doesn't have to do their accent or speech impediments.

The user would still have to do the dialect though, and I'm sure the program would need to analyse new voices before they were available.

Ha ha, I said real-time, as if it was trivial to do in batch... Batch would do be a good start!


I started writing a multi-player game during my time at University for mobile devices (over the Bluetooth channel), but never got it finished due to all the other projects you get given.

I would really like to finish it off, especially if I can make it real-time with interpolation, etc.


Wanted to make a 3d tank war game, where you can program your tank and send it to battle.


I'd like to write a fast TOAD clone (TOAD is an Oracle database tool for executing queries, stored procedures, ecc.) that would be free. Yeah, SQL Developer and all that java slowness suck, IMHO.

What discourages me is lack of time/motivation and some things that wouldn't be so easy (like syntax coloring).


An enhanced note pad. I find other notepad offerings add too much functionality which crowds the ui and take just too long to load for me to use them regularly.


I'm not sure of which question you are asking - what application would you develop because it's interesting, or what application would you develop because you could really use it.

I guess the difference comes down to your motivation to write the app, and do you want to have fun using it, or do you want to have fun writing it.

My own personal project list is split 80% apps I want to write, 20% apps I want to use.


My dream app is in something I have no experience in.

It would be an OpenOffice.org extension that lets OOo work like SubEthaEdit


A River-raid clone.


A multiplayer Stargate RTS. Someday...


I've always wanted to write an operating system that is faster, better and cooler than windows and still can run all the programs that windows does. Since I have alot to do in school right now I will have to wait until the Christmas vacation. I'll keep you posted.



an xml based IDE that gave us rich markup of code so that we could be freed from ascii forever....


I have a compiler and framework that is stuck in the repo ....

It is the project that always gets left, even though I really like it.

One day I will finish it!


When I was young, I played a Sega Genesis game called "Shadowrun". There was a SNES game of the same name, and recently (a year or two ago) a new version was released for PC & XBox 360. However, from what I've seen, none of the other versions felt the way the Genesis game did to me. So I've always wanted to build an updated version for myself, with more areas to explore, a longer storyline, and more graduated levels of runs to take on.

It's too big of a project for me, though (at least for now). I don't have the graphics experience, and I'd be hard-pressed to even get the game mechanics correct. But if I get to retire before CTS takes my hands, I've told myself I'll devote at least a couple of months to the project to decide whether I want to try to finish it. :)


A port of Tyrian. It would be the exact same game except it could handle recent hardware (like better screens etc), would work over network and not have that stupid "glue your ships together when you're both firing and happen to fly over each other so you loose half your firing power"-feature. Actually, I have a rather large chunk of the engine done, but I can't get myself to writing a good map/ship editor.

Anyone interested?


sorry for a bit too late.

  • I would like to build a graphics program with free-defined and user-definable designs of houses which will allow user to post his/her own photos on the walls. I think it is very easy and interesting.

  • Besides this, i am thinking for a long time for a program which will allow user to easily tag photos (by selecting already defined tags via mouse clicking, and enter new tags via keyboard) and then perform search in the photos on the system via selecting(ya, selecting by mouse, not entering from keyboard) tags and related tags(related means the tags which have common photos).

  • An ANN program which will read photos of people from a database and train the ANN for the face detection and gender recognition.

I am hopeful that soon(which i don't know how soon) i will build all these programs.


A program to write all the other little programs I don't have the time for.