4. Using spam filters to find HIV vaccines
"The underlying structure of life is information technology," says Rashid, "Your DNA looks a lot like a string. The technologies we developed to manipulate and match strings and do database analysis can be applied. The holy grail notion is ultimately to figure out how to treat individuals. Today it's one size fits all and you don't know if a drug is going to work. The side effect warnings are because on people with a certain genetic makeup it works great, on others it's going to kill them." Rashid predicts that we'll be able to scan someone's entire genome for $1,000 within two years or even next year.
The HIV virus mutates rapidly, but not at random; it creates decoys to waste the time of your immune system so it can't prevent infection (which may be why we don't yet have an HIV vaccine that works). Microsoft researcher David Heckerman is using the same machine knowledge that learns what emails are spam to look at the virus and find what's a decoy and what's real, so the vaccine targets the right thing.
5. Getting kids programming
Boku is a programming tool for children that you drive with an Xbox controller. They can create landscapes and characters, design behaviours - and play the game they create.
Programs are made up of rules and behaviours like finding fruit and shooting coloured smoke missiles. It's fun, but it also teaches the basics of programming - and you'll be able to play with it yourself next year.
6. Drive the Mars rover
Microsoft Research is running the RoboChamps competition with NASA - program a virtual Mars rover and find better ways of controlling robots for space exploration.
7. Beating programming bugs
Why can't we have tools that stop developers creating bugs in the first place? The Vista Static Driver Verifier proves mathematically whether a driver is well written; now it can handle millions of lines of code. The whole Windows kernel has been through the verifier and Microsoft is using the latest version on Windows 7 code. The Terminator project can prove whether a program will run and should your code lock some memory it will determine whether it will eventually unlock it or hang. This doesn't work on everything, but it works for what Rashid calls "a very large class of programs." Enough tools like this and software just won't crash any more.