While reading the "The Technology of a 3D Engine" series over at Beyond3D, I had an idea: Create a PC game and optimize it for a specific set of hardware. This would be similar to writing a game for a console, and could be useful for setting the system requirements for a game. This idea is more of a learning tool though; creating a game and optimizing it for one set of hardware is probably easier than doing the same for a general set of hardware. You could use this to gain experience with game development, and test it on other hardware to see how you could expand it to work with a wider range of systems.
The "The Technology of a 3D Engine" series brought up a rather interesting way of looking at memory: Treat RAM as a cache for the storage drive. When data needs to be accessed, RAM is checked first. If the data isn't in RAM, it is fetched from the storage drive and placed in the least accessed spot in RAM. I'm not entirely sure how you would perform this check without causing significant overhead though... The article probably mentioned (or implied) the solution, but I am not familiar enough with memory managers to pick it out.
While reading through the Solid Angle blog (this post in particular) I started wondering if it is possible to have all procedural animation be physics-based. One advantage to this is that it would look smoother with less effort (assuming the physics simulator is working fine), but I can see that you would run into problems. Tile-based movement could become tricky for example, rather than being a very simple way of handling movement. I'll investigate this when I get into the "experience" phase of the research I am doing.
One last thing: I am planning on making use of profiling more than I have in the past. I've tested out the Very Sleepy profiler, but I haven't done any serious optimizing with it. In addition to the profiling software, I will probably use timers to check how fast particular parts of the code are executing. Keeping everything within its own time budget should be interesting.