Learning and Maintaining a Large Inherited Codebase?
I wouldn't try too hard with a codebase as small as 30-40k lines, but for an actually large codebase, there are a bunch of different things that can help:
- examine a class or function hierarchy and call graph. If you have tools to do so and the codebase is set up for it, go ahead. If not, set up the tools and codebase to be processed for this - you'll learn stuff about the code just by hooking these tools up.
- pick medium-level routines in the code base that you are interested and run the applicaiton in the debugger with breakpoints set on them. Take a look at the callstacks, step through the callers, look at the arguments, etc.
- you can also get a bunch of knowlege of the structure of the app by single stepping in the debugger - "step over" to see the high level control flow, and "step into" subsystems you want to explore.
- documenting the existing code using a tool such as doxygen can help you learn it while at the same time providing useful documentation for other team members.
Simple, Cost-Effective, Multiroom Audio?
I'd unhesitatingly recommend sonos. Its one of the few electronic products that I own that I am completely satisfied with.
It should pass the wife test - the controller is very pleasant to use (though controlling it with the iphone is pretty nice as well), and its hassle free. You don't need to do anything on the computer at all to use it or even to set it up.
They have 3 solutions for audio output - a bare module which outputs line-level audio and so requires an amplifier + speakers, a module with a built in amplifier (so just hook it up to speakers), and a system similar to an ipod dock which includes
The whole house control is excellent, allowing you to arbitrarily link any units together for synchronized audio, or play differnet audio on any unit.
There integration with internet streaming is excellent, and their rhapsody implementation is particularly good - songs streamed from rhapsody are usable in playlists as if they were on your local nas. You get a free rhapsody streaming demo account
with it, and chance are after it expires, you're going to end up subscribing.
Wolfram Promises Computing That Answers Questions
FOSS Multicast Document Sharing?
I'd try google docs first. You can share live copies of documents (word processing files + spreadsheets), including keeping revision history and simultaneous live edits.