Technology Blog

FoodDays meets the Penguin

"The 'nix is here"

I've done well from Bill's version of CP/M. I moved over to the US to support a company running a Windows Server based financial system in a banking world dominated by big compute; IBM, HP, Sun, etc. Our little startup, GAIN Capital, was trading Foreign Exchange on Margin on software running on Windows Server and I spent a lot of time in meetings with partners extolling the virtues of Windows and how much is was underestimated.

As a true Microsoft man – I had qualifications and Microsoft magazine articles featuring me – I did, like many techies get a bit focused on that world to the exclusion of everything else, so much so that, on reflection, I was getting a bit blinkered even.

Driving to work though, I couldn't help enjoying a British podcast called LugRadio - Jono Bacon, Stuart Langridge, Chris Procter, Adam Sweet, and Ade Bradshaw would talk about the free and open source world of software development and poke fun at each other and at the establishment, i.e. my world. They genuinely felt that one day, Linux would take over the world and displace Microsoft on the desktop... well, certainly in the server space anyway.

I started to tinker with Linux, just to see and, I had some success hacking my TiVo to create a home media server. But then one day I found myself pondering the big question:

Why is it that if you ask a Windows user to work on Mac OS they'll grumble yet if you ask a Mac OS user to try Windows they'll stick pins in your eyes?

To answer the question, I picked up an old Mac Laptop, swapped out the mechanical hard disk for a 20GB (yes, tiny) solid state drive that I was experimenting with and, closed my windows laptop for a day - one day, how bad could it be?...

...It was bad. Work that I could do quickly on Windows became a painful googling on Mac OS however, like any good game, a series of small wins kept allowing me to 'level up'. Puzzles like "Google, what's the best SSH client for Mac OS?" yielded no answers because, it's built in - duh! "How do I edit text files?"– TextEdit, it's in the name! "Google, what's the best program to snip parts of the screen?" Command-Shift-4. "Google, where are the drivers for the network laser printer?" – Oh, it's just there when I do File/Print... And so on and so forth.

The big reveal happened when I noticed that the command prompt (terminal) used the same commands as my TiVo and, Linux. Was there a connection? I feel an idiot looking back but, yes, there's a connection, 1970's American universities, the place where computers were baked and where the core of macOS, iOS, Linux, Android, and even TiVO was developed. So this was a revelation, if everything from my fridge to a Cray super-computer running UNICOS was based on the same basic OS principles... was Windows actually the weird outlier?

Thinking back to the LugRadio podcast, they had presented an interesting episode on a project called MONO - it was a bold attempt by Miguel de Icaza to reverse engineer the Windows .NET runtime environment to run on Linux, this he posted on his Mono-Project website and, by the time I'd caught on, there was a highly functioning framework as well as a Mac Native clone of the Visual Studio development environment. I was staggered to find that I could not only open the FoodDays project but run it... on my Mac!

Over the next few weeks I tinkered with MONO and even set up a server to run the FoodDays School Lunch Program on Linux. I figured out MySQL on Linux and switched from Microsoft Internet Security and Acceleration Server (ISA Server) to VyOS - a dedicated linux distribution firewall. Within a few more weeks I was able to launch the latest update to FoodDays on Linux using free and open-source software. Not only was it bug free but faster and more responsive than ever as well as, fully licensed.

Tech deep dive:

Developing .NET applications on macOS to run on Linux has had it's fair share of bumps along the way however, it's evolved to a pinnacle today that rivals any development on Windows.

In the early days, I used the Debian Linux distro to run Mono 3.x. on my virtualized infrastructure. Development was on macOS X using the MonoDevelop IDE. At the time, it was a 100% community project that enjoyed sponsorship from a company formed by the founder, Miguel de Icaza called Xamarin. The aim of the company was to leverage the cross-platform nature of the solution to create a .NET friendly coding environment for mobile targets like iOS and Android. The result was a XAML based UI with C# behind that would compile to native iOS with the help of Xcode and Android Studio. However, for me, it meant the continued refinement of the IDE adding Mac-native features like smooth scrolling, – remember line-by-line clunky scrolling on Windows? – and the further development of the Mono framework.

On March 18, 2016, Microsoft acquired Xamarin and I feared the worst. However, rather than locking up and limiting Mono, Microsoft did the reverse, they opened it up in a landmark move – Microsoft went Open-Source and it worked!

I started my career in the closed-source world of Microsoft, I escaped in the 'naughties but Microsoft joined me a decade later. Today I develop the FoodDays platform, on my ARM64 Mac, but today I use JetBrains Rider to do the development work. I could use the great-great-great grandchild of MonoDevelop - Visual Studio for Mac or even the upstart refresh that is Visual Studio Code but, despite working with the team at Microsoft, I feel that Visual Studio is a little bit of a step-child to the Windows version and that Visual Studio Code is still learning to be an IDE. JetBrains Rider is the smarter, well-educated best friend of them both.