I finished the Big Semester Project for my CS class Tuesday night. We had to build a buffered IO system consisting of a simple file table and our own versions of getc, putc, and flush. Of course we weren't allowed to use the real getc and putc functions; we could only use the open, read, write, and close system calls. Part one of the project was easy because we did it all in C. For the second part, we used the file handling code from the first part, but rewrote getc, putc, and flush in . It was interesting and, thankfully, not as soul-wrenchingly terrible as I fully expected it would be.
It's strange, but this semester I have had only two programming projects, neither of which I found particularly hard. I was thinking about this when I realized I haven't done any fun programming for a long time, either. Sure I've done some website maintenance, but that hardly counts. I want to create something interesting and useful for the fun of it.
I think Marc may have helped prompt this feeling. He's told me about two of his personal projects he's had going in the background this semester.
One is a PHP/MySQL database app that stores information about creatures, areas, and items he's found in a MMORPG called Horizons. The app is still in development, but he has already uploaded 79 monsters, most with pictures, descriptions, and cross references to the 93 areas where they reside. He also plans to add the hundreds of items, spells, and quests on top of all that. Impressive. I'll be sure to link to it when it goes live.
Marc's second project is a Java application for his father's investment business. His father wants to use it to calculate the most efficient investment portfolio for a client's desired risk and return. The program first plots a handful of basic portfolios containing, say, all bonds or all stocks. Then, by combining these portfolios in various ways using some matrix math invented by a guy named , it calculates and plots the most efficient frontier of all possible portfolios. The user can then drag the mouse along the frontier, and the program draws a nifty little pie graph showing how much of each type of investment that particular portfolio contains. I was impressed when he showed it to me; it's a nice little program.
So then what will my next project be? That's the question I've been pondering for the past few days. My first idea was to write an IM chatbot that could act as like an interactive away message. People would IM me, and the bot would answer questions like where I was or what I was doing. It would be fun to write, but it's before and with .
Then I started thinking about , but I haven't hit upon a good idea of what yet. Perhaps a class assignment app. It would have a simple interface with a dropdown menu of classes, a space to write in a description of the assignment, and a date field. It would display the outstanding assignments in on a simple list that would echo the built-in todo list. If I wanted to go even further, I could add grade tracking and test reminders, but even with that addition it seems awfully mundane.
Instead of writing something of my own from the ground up, I also thought about contributing to an open source project. I don't have the faintest idea of what I would do, but writing for an OSS project would certainly propel me into a whole new level of geekdom.
None of those ideas have really struck me, though. They don't seem to have that spark that would really make people sit up and say, "Now that's cool."Anyone out there have any ideas?