Dan McClung

Embedded Linux

My path to Linux

My path to Linux

When I first started working in software I developed under Windows. I went to all the Windows Developer Conferences and eagerly awaited the next great toolset from Microsoft. Then something happened. My Windows server kept getting hacked or infected, and I was constantly reimaging it.

To alleviate the issues I was having with the server, I migrated it over to Linux. I quickly began to see the value in the platform and migrated my desktop machine at home.

Fast forward several years and we started planning out next platform at work. Our previous platforms ran on Phar Lap and we were looking to modernize. I started advocating for Linux

I was a minority in that regard. We were going to go with Windows.

So we started down the path of Windows Embedded XP. We quickly were mired in problems, including memory leaks in key API's that Microsoft was not planning on fixing. In one meeting where braistorming what to do, I pointed out that if we were using an open source platform we could fix these issues ourselves.

So we switched gears and tried out Linux about 6 months into the project.

While it was not a perfectly smooth transition (every platform has its issues) we built up a semi-custom Linux OS based loosely on Slackware and launched a very successful product. We used Linux as our primary OS for nearly a decade, and as predicted we did end up making several modifications to the kernel, drivers, and open source libraries that would have never been possible under a Microsoft platform.

While I still develop on the Microsoft platform for PC applications and do support some embedded systems running Microsoft operating systems (from Windows CE to Windows Embedded Standard), I remain passionate about Linux and open source software in general.

Linux Skills

Linux Skills

Platform Building

Porting Linux to custom hardware,
Building custom Linux tailored to platform needs

Application Software

Building applications to run on Linux

See Software Page

Driver Development

Developing/updating drivers for custom hardware

Linux Administration

Experienced setting up and administering Linux servers and networks