Don’t Fear the Linux

My entire professional career has been spent in the Windows world – both as a developer (Visual Studio, SQL Server, etc.) and as a consumer (Microsoft Office, Sharepoint, and so on). I know Windows.

About a year ago, though, I decided to take the plunge and set up a new system for development, specifically for working with microcontrollers, FPGAs, and machine learning. My criteria:

  • Small form factor, as this was going to sit on my electronics table which is already pretty cluttered with the usual benchtop paraphernalia.
  • Compatibility and ease of setting up microcontroller and FPGA toolchains
  • Optimized IO for cross-compiling and place-and-route activities
  • Low-ish cost

After doing some research, I settled on the Intel NUC – which is a tiny PC that is available in kit or fully-assembled flavors. I chose the kit, along with the following components:

  • 8th Gen Core i5
  • 16GB DDR4 memory
  • 500 GB PCle NVMe storage

By skipping Windows, I could save some money and develop some expertise on a new operating system. All the toolchains I wanted to use had Linux versions available. Some of them were considerably eaiser to setup up on Linux than Windows, so I decided to go with Ubuntu via Pop!_OS.

NUC hardware setup was simple and took less than 30 minutes. OS setup took a bit longer, but was still fairly painless. However, if you’d rather have someone else do this work for you, System 76 offers some really nice ready-to-go setups – including NUC-based systems.

The toolchains/development tools I installed were:

  • VS Code (easy)
  • ArduindoID (easy)
  • ESP-IDF (easy)
  • STM32CubeMX/IDE (a couple Java issues)
  • Xilinx Vivado (this was mildly painful)
  • KiCad (easy)

Even though Vivado took some effort to get running, the improvements in synthesis/implementation time compared to my i7 Windows systems were phenomenal. The cross-compilation times for microcontrollers were also reduced, though not quite as dramatically.

There are a few apps that aren’t available on Linux and make me keep my Windows system handy:

  • Visual Studio – VS Code is great for a wide variety of languages and applications, but it does lack many of the features of Visual Studio that I use in my day job.
  • STM32 TouchGFX – For generating LCD user interfaces. Windows-only.
  • Microsoft OneNote – I was unimpressed with the Linux notetaking apps that I found. Most of the time now I use Evernote in the web browser.
  • Paint.NET – I use GIMP when I must, but Paint.NET is my hands-down favorite drawing and image manipulation program.

Admittedly, that’s a pretty short list. Bottom line is that if you’re a developer considering a move to Linux – go for it. You’ll be pleasantly surprised.

Back to Top