So over the course of my short? career I have worked and played with a number of programming languages which I will list just for fun.

  • Basic
  • Borland Turbo Pascal 3.0, 4.0, 5.0 (Yay Anders Hejlsberg!)
  • Borland Delphi 
  • C
  • Microsoft Access Basic 1.0, 20
  • Microsoft Excel and Project Visual Basic for Applications
  • Embedded Visual Basic on the Microsoft Windows CE Platform
  • C#
  • C# on the .Net Compact Framework

So as you can see I spent a number of years programming in Borland Pascal compilers and just about avoided working in C. With the release of C# though my interest was peaked. Could I transition from at that time primarily working on VBA and VB and become a real programmer by adopting a new C like language (curly braces) like C#?

I have to say the transition to C# was fast and in a few weeks I was writing code which could do something useful. Since then I have always liked the idea of C# everywhere. Imagine if you could program any system or device using the same language. Imagine if you could write a server side system using the same language you use on a mobile device. Of course you can do that today with C# on the server and also C# on Windows Mobile. I still remember the buzz I got when I realised I could write embedded Visual Basic apps for an HP Windows CE device, how cool was that?. Even cooler was that I could use my newly learned C# development skills and write applications for the Windows Mobile platform using the .NET Compact Framework. Where does this take us today though?

I thought it was fun being able to write C# applications on a Windows Mobile device but could you go smaller?. Could I use C# to write devices for micro controller type boards which literally are pretty much just a circuit board with a single micro controller and some inputs that you can wire other devices to. In short can I now become a embedded developer for the smallest devices possible. Of course with the release of the .NET Micro Framework this is now possible. It it perhaps amazing to realise that you can now use C# to write applications that can run on the smallest devices possible (single chip circuit boards) all the way through desktops, servers and yes even supercomputers using MPI.NET

When you realise that the entire personal computer industry really started with a bunch of people who were into micro electronics getting together to build very basic computers it is interesting to see almost a return to the those days when it was cool to be into electronics. Except now you can build half of your circuit by writing code for a micro controller in C#! (hey beats all that soldering! :-)

So where does this leave us, with a great new competition called Microsoft Dare to Dream Different Challenge This competition is designed to get you thinking about what devices you could build on the .NET Micro Framework. Remember we are now talking about electronics joined with software. So you could for instance, build a device that detects the level of sunlight in a room and automatically closes your window blinds when it gets too bright. What about a device that sends you an email when the dogs water bowl is empty (your canine pal will thank you for this). In my house we have a air conditioning / heating controller on the wall. The idea is you have to decide whether you want the system to either cool or heat the house. And of course in some cases you get it wrong and leave the system on cool and watch the temperature drop through the night. I have often thought it would be interesting to see if you could wire in a device that check the temperature and switched the system to heat or cool automatically. Of course I guess I could simply pay for a more advanced control system but where's the fun in that!

So as you can see now you can learn to code in C# on the desktop and end up building a cool little electronic widget that will....well you decide what YOU will build :-)

Have fun

John O'Donnell
Microsoft Dynamics ISV Architect Evangelist
Microsoft Corporation
 (b) http://blogs.msdn.com/jodonnell

 (b) http://blogs.msdn.com/usisvde

 (w) http://channel9.msdn.com/Wiki/DynamicsCRM/HomePage/