Here’s a list of projects I’ve considered writing.
I doubt I’ll ever have enough time to do even a small percentage of them. However, if you’re interested in any of them, or know of an existing project that looks like it may work well, please let me know.
.Net encryption library
This would include the standard functions you need to manage accounts on a website. Creating an account (and saving the password with a unique, salted hash), password strength requirements, a “forgot password” function to send out an e-mail to the account’s e-mail address (with a time-limited link), etc. This library would not have its own encryption functions. It would be based on existing, proven encryption methods. Its purpose is just to make it easier for developers to implement good encryption practices in their websites.
You could point this program at a Visual Studio solution, and it would extract all strings into resources files. It would also include a library you could include in your projects with functions that would make it easier to internationalize other aspects of your application.
When developing a new application, it would be nice to have a standardized spec writer. That way, when I’m discussing validation rules with the users, I can be sure I wouldn’t leave anything out. This would be like an enforced checklist.
It would also hold program-wide error messages. So you don’t end up with a validation message that says, “The field ‘Client Name’ is required” on one screen, and “‘Name’ cannot be empty” on another.
.Net split testing library
A library you could add to .Net websites, to let you easily add in A/B and split tests. It would track each visitors’ path through the site, the options they saw for the split tests, and results.
Lightweight .Net reporting library
I haven’t found a simple reporting tool for .Net. I’d like to have something that can easily output table-like data, with page breaks/headers/footers/etc., and PDF capability.
Encrypted e-mail program
A simple end-to-end PGP/GPG based e-mail client. Nothing fancy, but something that doesn’t need a bunch of plug-ins or manual configuration.
Understand Spanish audio training
This would be an online site of people from different Spanish-speaking countries saying common phrases. As someone who moved to South America, the hardest thing for me to learn was understanding what other people are saying, in their different accents. I think this might help students learn faster.
Perfect pitch audio training
This program would play notes through your headphones, while listening to you sing the notes back through your microphone. It would display the sound waves on screen, in real time, helping you become better at singing on key.
Twitter client with filtering capabilities
If you have people you’re following on Twitter, but you really don’t care about their tweets that come from automated programs (like what song their listening to), you could have this client app filter out tweets with certain content (URLs or hashtags).
Personal information aggregator
Every day, I go through several manual tasks that could probably be automated – check a few blogs and forums, see some daily web comic sites, check the weather for the day, etc. I’d like to build something that could do all that for me in one step. It would be even better if it could learn what I do every day, and start adding these other regular tasks.
.Net ORM comparison
E-book, with code samples of different .NET ORM libraries. I would come up with a simple project, and write the data access with each different ORM. This would also include a report of performance under load.
Space colonization game
You’re on a transport ship, delivering a load of terraforming equipment to a colony on a far-off planet. Something goes wrong, and your ship is breaking apart. You eject in a pod that contains life-support equipment, a limited supply of food, and some terraforming equipment. Eventually, you land on a planet (or maybe an asteroid) and need to start building things to let you continue living, and maybe even get back home.
The gameplay would be similar to Civilization, but have an online, persistent, shared world. You’d be able to trade and build shared resources with other players.