One presentation I found very exciting yesterday was on the new
Monad technology. Although it isn't quite correct to say this, it is the easiest to understand - Monad is the replacement for the Windows command line interface, or shell. In truth, the Monad engine is hosted by a command line window (MSH) and can be hosted in other systems (as it is in the new MMC system), but most people see Monad and the shell as one. We'll stick with that for now.
It can be hard to fully understand the power behind Monad - I've seen it before but it wasn't until the presentation that I really began to understand the power of this thing.
The simple description is that Monad allows command line access to the .NET framework and other .NET libraries. If you have ever created or used command line interfaces (ls, cat, grep, etc.) before to create scripts, you've probably experienced the pain of trying to parse the text output of one tool correctly to feed it into the next tool (usually lots of perl and regex). Monad eliminates this because the output of any command is an object - and thus "piping" the output of one command into the next is really just handing objects around. The efficiency and reliability improvement is profound.
You can begin to imagine the ability to interact with just about any system on Windows via the command line, with standardized parsing, documentation and response.
On the developer side, this is also a major win. I've spent most of my career creating APIs for different things (devices, server applications, etc). But once you have the API, you still need to go off and create an executable that can take command line arguments to pass parameters and select methods. This means creating your own parser for APIs over and over again. I've heard Unix command tools described as an example of a thousand crappy parsers. It isn't far from the truth (although the tools themselves are quite good).
By creating small wrappers around your .NET API (called Cmdlets) you can expose your API in a nice OO manner and all parser work is handled centrally by Monad. This should really lower the bar for more software to provide command line interfaces. And once that happens, the users are empowered because they can now interactively work with the software to "try things out", as well as create scripts to automate common tasks, such as deployments, configuration, diagnostics, etc.
So, what do you wish you could do with NI products and a command line/script interface? Let me hear from you.