tags:

views:

1198

answers:

20

I'm looking for a personal project. One of the sort that "every programmer"* makes. The reasoning is that most developers have a tendency to work on personal projects that have particular traits interesting to all other developers. Software like:

  • Bug trackers (made one)
  • CMS (made one)
  • Blog Engines (Haven't made one; don't want to)
  • UI 'libraries' and graphics 'engines' (often for the game development crowd)
  • Password management programs

I'm looking to make something

  • fun
  • interesting
  • not particularly challenging (my work is difficult - or obscure enough)
  • doesn't have to be original by any means
  • preferably an application (ie. not a website)
  • not a hardcore learning experience, this is entirely for fun away from work

That being said, I find that the terms 'interesting' and 'challenging' don't necessarily carry the same meaning for developers as they do for other people (and often-times are interchangeable - I'm not looking for something easy or trivial). Ditto with the 'learning' part, I like and want to solve problems, but I'm not going to be getting into design methodologies or learning entirely new APIs and Languages to do this.

I ask because I think that certain projects, or types of projects, appeal to developers for particular reasons. I don't claim to know what those reasons are, nor do I care, but I do understand that they exist and that being a developer, there is a strong likelihood that the projects that are suggested will appeal to me.

If it helps, my background or preferred medium, without reciting my resume, is c# development for windows/tablet pcs; xna; db design/programming;

*by "every", I mean, "lots of".

+16  A: 

You have XNA experience, and DB experience.

Develop a visualization tool for databases which is visually attractive and makes mining data easier.

This can start as a simple browsing tool and eventually grow to a full-fledged DB management application.

Ben S
This sounds sexy actually.
SnOrfus
I made one of these in OpenGL for a specific database. They impress the hell out of people. (People like UIs that they've seen on TV and movies)
geofftnz
+1  A: 

Each and every developer is different. About three years ago I asked exactly your question on some other site. It brought nothing because we all have different interests.

Maybe to make a website with focus on what you like? Like a small community within a university or your other fellows?

User
+1  A: 

In order to learn Ruby, I just recently made a mini DSL/XML generator for a custom XML based language I use in a program of mine. I simply turn some real text into its XML representation. It was just a fun little side project that didn't provide much benefit in the long run but helped me to learn the language.

So... I suggest trying to create a DSL. The experience could actually prove invaluable as DSL's are pretty damn useful.

kgrad
+7  A: 

Graphics are always fun to play around with, try writing a program to draw a Sierpiński triangle. It's a fairly simple fractal to generate. I once made a screensaver that drew them in random places and colors on the screen.

If you are looking for something more practical, try writing an email or RSS client. Learning to interact with SMTP/POP3 at low level is pretty interesting. Same thing with RSS, it will expose you to network, GUI, and XML design at a minimum.

DMKing
+1. Both are good ideas; unfortunately I've done both :) and had a great time doing it.
SnOrfus
Sierpinski isn't really interesting: for(x = 0; x < 512; x++) for(y = 0; y < 512; y++) if(x else put(x, y, black);
Jasper Bekkers
+1  A: 

Write a 3D environment populated by artificially intelligent virtual beings, implemented on a public server, that we can all access using a WPF-based client.

Daniel Earwicker
+1  A: 

Personally 'interesting' strongly overlaps 'difficult', so I'm kind of at a loss ...

... but perhaps you should take a non-programming interest you may have and try to solve a simple problem in that space.

A friend of mine once built a model railway database so people could track the trains they had. He was trying to sell it, that didn't go so well, but it was simple and fun.

John MacIntyre
+3  A: 

A Sudoku game (or Connect Four, Clue, etc.). Something that relies mostly on logic, and not artificial intelligence (like chess).

mbeckish
Sudoku, Connect Four and Clue could all be solved with simple AI. AI and logic are not disjoint.
Ben S
A: 

Some kind of GPS tracker? I never made one but I believe that of lot of devs do.

tuinstoel
+4  A: 

Write a character generator for the pen-and-paper rpg of your choice.

It should be able to be used in 2 modes: Build-A-Character (which will let you build a character from scratch) and Generate-An-NPC (which, given some guidelines, will generate a decent NPC).

This is actually a project I've been working on for a while, and I've found it fun. YMMV, especially if you don't game regularly.

Edit - figured I'd give some reasons I find it fun.

  1. It's something I and my friends will actually use
  2. It helps me understand the game better, knowing what decisions make a good character
  3. There's some (limited) AI in the random character generation(mainly a simple decision tree with some random jumps)
  4. It's overall fairly simple, a reasonable project for a one-man development team.
Jeff
+8  A: 

If you haven't written one, knocking together an implementation of Conway's Game of Life is always an interesting challenge. It's also the sort of project that once you get it done leads to seemingly endless tinkering ("I'll just add one more feature...")

Electrons_Ahoy
go for hashlife :)
Tetha
+1  A: 

Why not rolling your own

  1. Web MVC framework or
  2. Web templating system or
  3. Persistence framework (+1 if you make an OR-mapper) or
  4. Interceptor-based aspect-oriented framework

But oh, those were the sins of early 2000's.

Something cloudish then? :)

Magnus
OMG I COULD MAKE A CLOUD TO STORE ALL MI FILZ!
SnOrfus
+2  A: 

How about a ray tracer? It can be very simple if you do everything by brute force. They are very fun to write and can lead to many interesting problems. Writing a ray tracer meets all your criteria =)

bigmonachus
A: 

Write an touch screen game for a Windows mobile device that competes with the iPhone. Maybe like,'Squash the Bug' or something. Chicks dig that kind of stuff.

asp316
A: 

Search for a good flash puzzle game and implement a solver for it :)

Tetha
A: 

Personally, it based on your own preferences. For me, it was a grade book program. Since I always had teacher friends, they always wanted me to update it. So I first wrote it in Pascal, then wanted to learn C, so I wrote a C version, then a C++ version and so on.

My daughter was playing basketball, so I wanted to keep score and I had a PocketPC at the time, so I wrote a little app for it.

My $.02

Dan Vallejo
+1  A: 

I had fun programming an audio player (like winamp / WMP) to learn .NET before I started my current job. There are free libraries to read MP3 files (and other audio formats), so that gets the complicated part out of the way ;)

An audio player is not too complicated and is good for learning threads, UI, and working with the file system.

Meta-Knight
I like this idea. I've always made my own alarm clocks, but they always invoked media player or winamp in the past and I've always thought that it'd be nice to have it play the music itself. The mp3 libraries would also be a nice reference point to coding the playing part myself.
SnOrfus
+5  A: 

Maybe write a compiler? I think every artist/craftsman should, at some point, learn how to build the tools of their art or craft.

Rodrick Chapman
+1, even though I think that is a ridiculously complicated idea. (Though I admit, I'm working on a pseudo-Scheme interpreter myself)
Christopher W. Allen-Poole
+1  A: 

I've always had fun trying to play with compilers/interpreters. I started out making pathetic attempts at my own Javascript interactive shell (I had no prior experience or knowledge of compilers/interpreters and just tried to wing it). And now I'm about to start working on writing my own lexer/parser from scratch.

Personally, I find compilers and interpreters interesting. You can use them, or their components as a start of other project ideas too if you wanted. Also, you can play with them in any language of your choice, so it might not be a bad side project if you want to learn or use a new language and aren't sure what to focus on to do it.

Pete
+1  A: 

I've always enjoyed writing a little physics simulator or the canonical mandlebrot / julia set generator (parallel extensions anyone :)

PaulB
+4  A: 

I'm looking for a personal project. One of the sort that "every programmer"* makes.

How about writing your own scripting language interpreter? That's a very common thing to do, which is usually not only a highly educational experience, but also fun and interesting.

Once you are finished with something working, you'll start thinking completely differently about programming, it will change your way of thinking!

none