Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Linux (PC) vs. MBP: A Developer's Perspective

DZone's Guide to

Linux (PC) vs. MBP: A Developer's Perspective

With some not-so-amazing improvements to the MacBook Pro line, a Zone Leader considered the idea of switching to a PC running Pop! Linux. Is now the time to switch?

· Web Dev Zone ·
Free Resource

A true open source, API-first CMS — giving you the power to think outside the webpage. Try it for free.

The year 2015 was a pretty amazing year for me. It was not only the year Nicole and I were married by a pretty amazing Elvis impersonator at Elvis Chapel in Las Vegas, but it was also the year I met a guy named Russell (@RussellScheerer).

Image title

Russell was part of the Enterprise Architecture group when we both worked at the same privately-held corporation. He worked at a desk in my team's scrum room, sitting about ten feet away from me. During that period of time, I got to know and appreciate a technologist who has a vast understanding of Information Technology from a developer's perspective.

Russell is the kind of person that makes a developer's job much easier, simply by following the patterns and methodologies he has employed. He is the type of person who thinks two or three steps ahead of the current needs.

Fast-Forward to Today

While we both eventually left that corporation, our paths crossed again late last year when I was honored to have him join our consulting team at CleanSlate Technology Group. Within a few days of coming on board, Russell was placed on the same project as me — nearly four years to the day we first met.

At that old job, we had started to wonder if continuing to standardize on Mac systems for development was still the right decision. While the newest MacBook Pro systems from Apple had some improvements, they did not seem as impressive as the hardware updates taking place on other platforms. More than once, our eyes seemed to gravitate to hardware being sold by hardware solution vendors like system76. Unfortunately, our old corporation admitted they were not ready to support devices running Linux — other than what is running on a MacBook Pro.

However, CleanSlate allows our team to spec out the kind of system they wish to use over a three-year time period. After using a MacBook Pro for several years, Russell made the decision to purchase a system76 machine, running Pop! Linux. The biggest benefit to this system is the ability to utilize 32 GB of RAM. A MacBook Pro with the same specification was nearly twice the cost.

We discovered that our particular project tends to favor MacBook Pro devices over Windows-based machines or even Linux machines. Russell tried to use his native Pop! Linux system first, but then installed a Windows partition as well. Neither fared well early in the project.

Unexpectedly, I was able to procure a MacBook Pro with 32 GB of RAM and set up Russell to A:B compare his Linux/Windows machine to the MacBook Pro. In doing so, I thought I would structure Russell's findings in an article to communicate to DZone readers considering a migration away from an Apple device.

Comparison - Specs

Below, is a summary of the two systems that Russell is currently utilizing:

system76

i7 @ 2.2 GHz
32 GB RAM
GeForce GTX 1060

Operating Systems:
Pop! Linux (18.04 LTS)
Windows 10 partition (running on a not-so-fast USB disk)

MacBook Pro

i7 @ 2.6 GHz
32 GB RAM
Radeon Pro 560X

Operating Systems:
MacOS Mojave (10.14.2)
Windows 10 partition (via Bootcamp)

Comparison - Performance

Using Basemark Web 3.0 (https://web.basemark.com/) and Chrome, the following results were returned:

        system76 (Pop!) | system76 (Win) | MacBook Pro (Mojave) | MacBook (Win)
        -----------------------------------------------------------------------
Results   827.39        |   617.36       |       790.91         |  934.23
Diff     (106.84) 11.4% | (316.87) 33.9% |     (143.32) 15.3%   | ------

While these scores center on only one performance test, it is interesting to note the range in results. As expected, the Windows test on the system76 was the slowest, since a USB-disk was utilized to store the Windows operating system.

What was also interesting is how much better Windows performed during this test over the MacOS (Mojave 10.14.2) which was designed for this hardware.

The goal here was to find a common test that would run on all configurations and provide a number that can be used for analysis.

Findings - On the Job

With both systems ready for use on the project, some challenges were encountered during the A:B comparison:

  • Client VPN - a Linux-based option does not exist for the client's selected security provider. This caused Russell to switch to use the Windows partition on his system76 device.

  • Windows in a Mac World - with all the other development focused on using Mac Book Pro devices, the biggest challenge here is the CR/LF issues that are different between Windows machines and MacBook Pro systems. One solution is to work entirely out of the Windows Subsystem for Linux (WSL) but that requires using an xwindows server to launch VS Code/IntelliJ from the Linux side. However, that solution leads to a slower experience with daily tasks.

  • MacBook Pro and External monitors - when the latest-generation was plugged into a secondary monitor, the clarity on the monitor was lackluster compared to the native monitor on the MacBook Pro. A colleague found this link, which helped resolve the situation.

  • Docker usage - one of the first things Russell accomplished was to provide a standardized and efficient Docker implementation to handle the nine containers required for our project. Docker performed well on both systems but seemed to perform exceptionally better on the Linux system — since a virtualization layer is required on the MacBook Pro and Windows systems.

  • Development tools - across the board, all the systems worked well using IntelliJ IDEA, VS Code, Slack, and, of course, our browser-based applications. This included the use of npm and Node Version Manager (nvm) too — with Russell using WSL on Windows, allowing the Windows systems to act as a Linux device.

Aside from the client VPN issue, Russell found a solution for all of the differences that were presented during this comparison. That VPN issue is not a concern when working on-site at the client or for a majority of our tasks which do not warrant a secure/private connection to the client's network. We saw documentation for using a command-line interface by the VPN provider, but still have not tried employing this approach on the Pop! Linux system.

What About Gaming?

Let's face it, a significant percentage of developers enjoy an occasional gaming session during off-hours. Russell, having an account on Twitch (@rwscheerer) certainly falls into this category. So I asked what his response was after spending some time gaming on both machines.

Below, are his takeaways:

  • The system76 is pretty good on Windows (even with USB-based boot). The slower drive simply takes longer for the games to load.

  • Gaming on the system76 is better than the Alienware PC that is currently utilized for his computer-based gaming.

  • Native MacOS games exist, but the Windows partition is required for games like (Overwatch and Sea of Thieves).

  • The GPU on the MacOS scores 43% lower than the system76 GPU using average 3DMark 11 comparisons.

Occasional gaming (like an office gaming event) might be tolerable using the MacBook Pro. Most likely, avid gamers are going to have a dedicated system to meet their gaming needs.

Making a Decision

Talking with Russell after doing the A:B comparison, I asked which system he would pick if he had to select only one system.

He indicated he would remain using the MacBook Pro with 32 GB at this point, stating "due to the overall compatibility and flexibility of the machine." When I asked about using Windows, Russell indicated:

"Windows just isn't close enough for prime time development in my opinion. Forced Windows updates is an issue as well - which ended up crashing my machine." - Russell

Back at that company where I first met Russell, the internal support team had concerns with being able to manage and secure Linux-based machines, since the current tooling in place was not designed to handle machines running an OS other than MacOS or Windows. At the time, they also noted concerns with being able to encrypt the local hard drives in the same manner that MacOS and Windows systems were centrally managed. We did not reach the point to see if any other challenges exist.

If you are at the point where consideration of a new hardware platform is a priority, my hope is that you found Russell's findings helpful.

Have a really great day!

The New Standard for a Hybrid CMS: GraphQL Support, Scripting as a Service, SPA Support. Watch on-demand now.

Topics:
macbook ,pc ,system76 ,web dev ,development machine

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}