/ Technology

A Developer's Dream Machine

A Little Backstory

When I first got into web development, Linux was readily making the transition from server to the desktop and a few brave souls I knew readily converted their machines to be their "development daily drivers". Of course this was great for working on things usually found on the server-side (Apache, MySQL, Postgres, etc.) but became a nightmare to use lesser-then office suites and basic media playback was a whole other brand of hell.

Today and most of the web developers I run into are found happily hiding behind the Apple logo on shiny metal laptops working in "virtual offices" (read: Coffee Shops). It's no secret why most web developers choose Apple hardware to setup shop - the hardware is solid (albeit heavily overpriced), the warranty is sound, and you can happily dual-boot it to Microsoft Windows if you need to experience life on the other side. The Mac OS is closely related to Linux, and the majority of things that need a bash shell run happily on the Mac.

The biggest drawback? The financial outlay for low performing hardware.

Something Old, Something New

A couple months ago I replaced my laptop with the intent of building a portable development machine. I had a DELL XPS 13" ultrabook, but its pitiful 4GB of RAM didn't have an upgrade path - and I was starting to use Docker more and more. It was time for something new.

Realizing that I didn't have the budget to go the Apple route this time 'round, I started looking at lesser known alternatives. I had been toying with products from Xiaomi (a well known Chinese brand not sold in North America), known for their build quality and low price points. I'd been suitably impressed with Xiaomi's budget fitness tracker (it outperformed a FitBit at 4x the price), and my RedMi phone was feature-packed for its paltry $160 CDN outlay. Xiaomi had just ventured into the laptop market with a Windows 10-powered ultrabook heavily influenced by the MacBook air hardware series, but more squared in appearance and less visual branding. I held my breath and ordered the Xiaomi Mi Air 13" laptop from Gear Best, an online source for Chinese-only hardware.

When the laptop arrived I quickly wiped the Chinese-licensed Windows OS that was preinstalled on it and replaced it with my Windows key - to my surprise Windows update had all the drivers required for the hardware, and the conversion was a cinch. The machine was equipped with a 250GB solid state drive, with a second open slot for expansion - I added an additional 500GB drive to it adding up to an impressive 750GB storage for a 13" laptop, room to breathe!

I used this Windows 10 configuration for a couple months but soon missed having the Mac OS terminal at my bekon. Powershell and some of the Microsoft tools just weren't for me - luckily Microsoft added Windows Subsystem for Linux (WSL) and allowed me to intall and access Ubuntu Linux and Windows simultaneously on the same machine. While this was initially quite hard to wrap my head around, it eventually felt quite natural to run Docker in Windows and access the containers via my Ubuntu Linux user, on the same machine, at the same time (and without much of the typical sluggishness associated with a VM).

I paid $700USD for the Xiaomi Mi Air 13" laptop initially, and while I felt like I was getting twice the performance for the money - I couldnt' shake being homesick for Mac OS - this is how I discovered the whacky world that is today's Hackintosh.

Important Considerations

Mac OS is licensed only for Apple-supplied hardware, but it runs quite nicely on hardware that closely mirrors the original contents of Apple's fruit crate. What is your Mac but an Intel processor, and a series of generic components that can be made to recognize Mac OS? As a purely academic exercise I explored if my hardware could eagerly accept an Apple operating system in addition to the native Windows and weirdly emulated Ubuntu installs I had on my main drive.

After about a month of digging and reading myriad forum posts I had a general approach in mind to add High Sierra to the technology mix on my portable development machine. I figured a Windows / Linux / Mac OS combo would be ready for pretty much any web development task thrown at it, with compatibility a long lost concern and Docker containers ready for anything it wouldn't do natively. Through a bunch of "almost boot" efforts I was able to make a create a special USB key prepped for the Xiaomi hardware and I was up and running with an "almost" factory feel (and polished dual-boot screen).

dual_boot-1 The EFI bootloader looks pretty slick!

The experience is far from perfect however - bluetooth doesn't work at all (so there goes Apple Airdrop and wireless mice support) and wireless networking works via additional hardware, a USB network adaptor that replaces the internal network components (the chipset isn't compatible with Mac OS).

The result is a great proof-of-concept though, three operating systems and Docker containers handle most any local development task without littering your machine with dependancies and OS-level incompatibiliy. You can work on Microsoft's Umbraco CMS in IIS and SQL Server in the morning, a Sketch UI prototype in the afternoon, and round out the day working on a Ghost install with NGINX, MySQL and Node all runing smoothly (and quickly!).

In my performance testing, the hardware runs equivalent or faster than a 13" Macbook Pro (running around $1,499 USD) - at half the cost, and that's the true winner here, I don't personally recommend you install Mac OS on non-Apple hardware - you never truly "own" Mac OS, only license it, and you agreed to certain things in the End User Licensing Agreement (EULA) although if you're like millions of others, you've never really read it.

A Developer's Dream Machine
Share this

Subscribe to Michael Warf