.NET is 20 years old this month. I can remember when I first encountered .NET and C# and found it a great step forward from Visual Basic and the C++ and Java I had learned at university. However, what really changed things for me was due to some very chance encounters I had ended up working with mobile phones (remember WAP browsers?) and in the process had come across the Pocket PC. I began working with embedded Visual Basic (eVB) and I found I could create applications that you could carry around in your pocket. I bought myself a chunky Compaq iPaq with an add on sleeve for a Compact Flash memory card – plenty of space for an app or three.
When the .NET Compact Framework Beta came around this was a game changer – a subset of the .NET Framework with the same Visual Studio tools including a drag and drop designer for the subset of WinForms and an “emulator”. Because .NETCF code was retargetable you could use your .NETCF dll on the desktop and share code across platforms.
Of course the Compact Framework didn’t hit RTM until later in 2002 but I was soon hooked. Although v1.0 was very basic (the base class library was quite small and there was no COM interop) the ability to interop with native code via P/Invoke meant it was possible to add functionality using a C++ wrapper. My first commercial library for .NET CF was an interop layer for ADOCE – the COM based data API around the built-in “Pocket Access” database engine. This replicated the ADO.NET System.Data APIs with the built-in database rather than adding the more complex SQLCE database engine saving a few megabytes of space and making use of ActiveSync’s Pocket Access sync engine. I went on to create a library around Pocket Outlook to access Calendar, Contacts and Tasks (and later Email) in a similar way. It wasn’t until several years later with Windows Mobile 5.0 that Microsoft provided a .NET API for this functionality.
The first Microsoft Mobility Developer Conference after the release of .NETCF 1.0 was in March 2003 in New Orleans and was closely followed by the European version at Disneyland Paris of all places. The event continued annually for a number of years, morphing into the Mobile and Embedded Developer Conference (MEDC) covering .NETCF, Windows CE, Pocket PC, Windows Mobile and the .NET Framework’s even smaller relation – the .NET Micro Framework.
The .NET Compact Framework got me into being an MVP too. I created a number of open source libraries, one of these (32feet.NET) has continued forward to this day adding in functionality and modernising (but still supporting Infrared data transfer!). Many others were part of a suite created by a group of like-minded MVPs called OpenNETCF. We created APIs to fill in many of the gaps in the .NET Compact Framework as well as add functionality relevant to mobile developers.
I had the opportunity to write a book, The Microsoft Mobile Development Handbook, with two fellow MVPs – Daniel Moth and Andy Wigley. It was released in 2007 and covered all aspects of developing mobile apps using .NET.
The .NET Compact Framework continued along for some time behind the scenes – it was used in Windows Phone (Versions 7 and 8 were based on Windows CE) although because of the stricter sandbox you couldn’t access the underlying APIs as before. Windows Phone 8.1 was re-worked to use the desktop OS and introduced the strange world of two different app models – Silverlight from Windows Phone 7 and the Windows 8 (WinRT) model which has developed into what we see in Windows 10 and 11 today.
In order to build for Android and iOS, we had Xamarin using the Mono framework to provide a comparable .NET runtime. Again we have the ability to share .NET code across multiple platforms and with Xamarin Forms/MAUI and Uno we have the ability to share UI too.
While a lot has changed in the last 20 years, the ability to create apps across mobile and desktop platforms is still recognisable even though what we have now is much more powerful. I still believe that having had to design code for tiny processors, dodgy networks and limited pixels has been immensely helpful in how to approach any mobile development today.
There will be a live broadcast on 14th February to celebrate the special occasion.