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!

+5  A: 

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.

+2  A: 

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...

Netacape used to have a things called "remote bookmarks" that did just that. Now I just use Foxmarks for that, but haven't bothered to try it with anything other than Firefox.
brian d foy
Foxmarks isn't browser agnostic.
Martin Doms is everything you describe except the non-site based part, but they do allow exporting into FF, so you still have some vendor portability
@Martin Doms: Foxmarks is now called "Xmarks" and supports multiple (though not all) browsers. There are currently add-ons for Firefox, IE, and Safari.
Michael Carman
+2  A: 

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.

I made one in Java (swing), and I'm trying to rewrite it in Scala. It requires organizing the files in a specific way by hand. It was done in layers, so theoretically the UI or storage could be changed.It delegates actual playing to winamp or whatever player was set up.
Tried MediaMonkey?
CAD bloke
@CAD bloke no, I'm not much of a windows user, and mediamonkey is windows only, but it seems pretty interesting and functional. But my project is supposed to be just for one purpose and not a player/manager/recorder etc... it does only one thing, but does it great.
"it just needs a GUI". Love it!Me too am pondering about this for about a year now. I want some of the catalogue features from MM and the ease of playback from winamp.Also I would try to find a way to make the auto catalogue work better. Furthermore I would use the "comment" tag to keep the previous tags I find so there's always an undo, no matter where the files go.
+2  A: 

See also What do you want to develop?

Ed Guiness
thanks for the link, but I'm looking for some more practical ideas then "the app that saves the world" :)
Mr. Brownstone

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).

Ya might want to take a look at these you can help.
+7  A: 

A TextMate clone for GNOME.

EDIT: And a good download manager.

EDIT 2: And an e-Book organizer.

Can Berk Güder
textmate clone for gnome would be perfect!
...and this ashtray ... and this lamp ... and the paddle-ball game, but not one thing else!
Bill the Lizard
Why don't we form a team to work on textmate clone for gnome?
Actually I started writing some code for a TextMate clone right after I posted this answer. =)
Can Berk Güder
dowload manager will be good, also TextMate clone ;)
i'm in for the textmate clone for gnome.
I've created a new repository at GitHub. The code I checked in doesn't do anything at all, but it at least it reminds me that I've started the project. =)
Can Berk Güder
I don't know TextMate, but it seems to be a powerful Texteditor for Programmers. You may want to take a look at Geany:
+3  A: 

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


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.

have you tried notepad2?
Mr. Brownstone
Notepad++ seems pretty swift. I even use the portable version from a thumbdrive on a usb 1.1 port and it loads quickly.
I second Notepad2: it is small, no frills, and use a powerful component. For a more barebone editor, there is Sc1, the all in one version of SciTE (same editor component). For a super small one, try TheGun...

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.

The ideal case would be fun to write and useful when done, but if I had to choose I'd pick the fun writing part
Mr. Brownstone
+10  A: 

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?

Bill the Lizard
Why not work on a 'real' language of your own complete with parser/compiler?
Dalin Seivewright
I wouldn't rule out making my own grammar. I'd target the JVM because it would be (presumably) easier than targeting a specific set of hardware. Also, it's everywhere.
Bill the Lizard
I would target Parrot, personally, but that may just be because I don't like Java. Or I would write it as a front-end to GCC so I don't have to worry about the hardware, but can still have compiled code. But GCC's internals are supposed to be hell.
Chris Lutz
Create a variant of Java that adds the features of Scala to Java (type inference, first class functions) in a forward-compatible way (the new language should be able to compile Java code without issues)
Seun Osewa
+1  A: 

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

Ali A
Try Dillo:
Dillo is nice, but misses some serious features: Javascript, tabs, anti-aliased fonts. Yes I believe you can have all these in a fast browser. Maybe I am dreaming.
Ali A
Customize your Opera
+14  A: 

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. :)

What keeps me from creating my own game is I can never come up with that killer feature my game needs to have to differ from all those already out there..
@boris: Don't let that stop you! Your goal doesn't have to be "so popular it displaces the best games out there", it can just be "lets me have fun, gives me pride of ownership, garners compliments from friends who try it out". If you've got the inclination to make a game, even if it's something that only you and your friends will ever see, the experience can be life-changing. Maybe it would even be enough to get you a job at a real game company. :)
Adam V
+1  A: 

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.

+1  A: 

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.

+3  A: 

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.

Why not start an open source project and publish your ideas?
Ed Guiness
I do have my ideas published on my blog, and have thought about starting an open source project, but at this point, I don't have any disposable time. I didn't want to link to my blog here, as I thought it would be unethical.
+1  A: 

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.

+1  A: 

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 write all the other little programs I don't have the time for.

+2  A: 

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.

You know what they say about clever ideas and opinions...
Ed Guiness
we're all here to "steal" other peoples knowledge aren't we :)
Mr. Brownstone
Only please to call it "research" -- Tom Lehrer, "Lobachevsky"
Adam Liss

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

It would be an extension that lets OOo work like SubEthaEdit

+1  A: 

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 ;)

+1  A: 

A game bot for a strategy board game.

Specifically, I'm a huge Risk fan, and there's this website ( ) 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.

Marcos Lara
+3  A: 

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

Zsolt Botykai
I considered this too, but couldn't go at it alone.
Seun Osewa
+2  A: 

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.

Lee Kowalkowski
And then a month later your favourite changes...
Ed Guiness
I'll buy 7!! I really want that program
Josh Smeaton
@edg: yeah, or your collection grows, then you have to re-sort, perhaps subsequent searches won't take as long.
Lee Kowalkowski
Something I would first implement is a system wide hotkey combination to delete without asking questions. It would be something you really can't do by accident (3xhift, scroll lock for example). So if I'm playing some warcraft 3 I no longer have to think "I should really delete this song".
+1  A: 

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!

Lee Kowalkowski

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.


please make it free and open source :)
Mr. Brownstone
That's one big project :P
Aiden Bell
+3  A: 

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!?

I did this using a well-structured file system and a Gopher server once! Little programming involved and little functionality but it was fun to see gopher still alive.
T Pops
Doesn't winamp have this?

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


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.

Anton Babushkin
+6  A: 

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
If it can tell me where my keys are, I'll help you look for investors!
Adam Liss
It would also improve your handy-man skills :p
+2  A: 

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\ if there exists an identical file d:\backups\old\2007\memstick\

  • 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)

Have you checked out SyncToy? Does the first one for sure... useful tool for backing stuff up.

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!

Aiden Bell

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. :)

Adam V
+1  A: 

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.


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

Something similar exists, only not in 3d. If only I remembered what it's called.
Reminds me of CoreWar. :)
Adam V

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?