Web Development on Linux vs Mac
Over the past year I’ve had the ability to try out web development in both Linux and Mac. I started last year on a 2014 MacBook Air then switched to a Lenovo Thinkpad T430 running Arch Linux. Later came a Thinkpad T460 running Arch Linux and then a 2016 MacBook Pro 15 Touch Bar. I’m currently writing this on a 2017 MacBook Pro 13 Non-Touch Bar and I still own the Lenovo Thinkpad T430 running Arch Linux. I do however find myself looking at the Thinkpad T460 series, T470 series, and T25 Anniversary Edition though. Honestly I think if I could have iMessage and iCloud on Arch Linux, this wouldn’t be a conversation. I don’t mean for this to turn into a Mac vs Thinkpad article, but I can’t ignore the hardware being a major part of my decision either.
A short backstory is in order to set the stage. I have long been a fan of open source and Linux and hadn’t used Windows since XP. My career over the years though had left me with little choice other than a MacBook. September of last year I found web development and I was hooked. I took a lot of tutorials on the MacBook Air but started to wonder if developing on Linux would be a better idea (closer to the server). So begins the story
First the bright side of Linux/Thinkpads and how it is better than my MacBook Pro. I do have a fair amount of experience with Linux, but it had been years since using it. I did some tutorials to renew my Linux chops. Arch Linux isn’t like Windows or MacOS or even Ubuntu Linux. You don’t put in the install media, click a few prompts and its installed. The reason I use Arch Linux is two fold. 1) It makes you build it from scratch, thereby giving you a better understanding of Linux. 2) You only install what you need, so the operating system stays very lean and very fast. My 2012 T430 in 2017 boots from complete shutdown in 12 seconds. That said, I don’t run a desktop environment like Gnome, KDE, etc. I use a window manager called i3 and LightDM for a graphical login. When logged the system typically sits around 300Mbs of RAM usage. If I open about a dozen Chrome tabs, VS Code, Slack, Gitter, and a some terminals (I run urxvt in daemon mode) I get to just under 4Gbs of RAM usage. The same open programs on my MacBook Pro use just under 7Gbs of RAM. On the T460 with 16GB of RAM everything was instant. i3 makes my productivity fly through the roof. I never have to take my hands off the keyboard and on the off chance that I do need the mouse, the Thinkpads have the TrackPoint. An option I thought I would never use, until I started using it. Now I get frustrated without it. Working on the MacBook Pro I have been able to get close to i3 in certain aspects by using everything in fullscreen mode. I just three finger swipe back and forth. When I do use the split full screen, I do have a lot of issues with window focus. I will start typing in the wrong application. I have experimented with a few tiling managers in MacOS, but nothing has stood out. The other major issue with the MacBook Pro is the absolutely atrocious keyboard. It makes key sequences hard, I’m constantly lost and have to lift my hands to realign. There are a few people who love the keyboard, others that say it takes time to get used too, and others who think the keyboard is the worst keyboard they’ve ever typed on. I’m the latter, especially coming from the best keyboard on a laptop. I’ve spent a fair amount of time on the new MacBook keyboard and it is truly horrible. You can read reviews about it, but just go to an Apple store and try it for yourself. I can say that I did have a slight revelation though actually due to my wife’s MacBook. She had the MacBook with the original (somehow even worse) keyboard. But the size of her computer helped my typing on it greatly. Now when I originally bought the 2016 MacBook Pro 15, I didn’t realize that the ginormous and largely wasteful for a developer trackpad caused the keyboard to be way further up in the body of the laptop. I always felt like I was reaching for the keyboard. Also if you don’t come at the keyboard at the perfect angle you mistype a lot. All of this combined I decided to try the 2017 MacBook Pro 13. I am much less irritated with the keyboard on the 13. Unfortunately my 2016 MacBook Pro 15 Touch Bar wouldn’t even sell to cover the cost of the 2017 MacBook Pro 13 Non-Touch Bar. I’ve never seen so much drop in resale value on a MacBook Pro line in recent history as I have with the 2016 and 2017 models. That makes the exorbitant cost even harder to swallow. At least years prior you could justify the high cost of Mac by the high resale value that followed.
Now before this article becomes all about what I don’t like about the MacBook Pro, lets look at what is great about it about. The main reason as to why I currently use a MacBook Pro is MacOS or more so the availability of software on MacOS. As far as web development software, with Electron apps that gap has greatly diminished. But the apps I’m more worried about are Apple products. I have an iPhone so having the ability to send text messages and take calls from my computer is great. Furthermore, I use Mail, Calendar, and Contacts and their integration with iCloud immensely. Also, not that I use XCode, but if it ever strikes me to develop iOS apps, you know the rest. The only other piece of software that I would be halfway concerned about would be Sketch. Having the ability to open Sketch files from designers would be great, but from my understanding Figma is quickly closing that issue as well. Now there isn’t much in terms of the the hardware of the MacBook Pro that I believe is worth the price, but the things I do like are key components. When you hold the T430 next to the 2017 MacBook Pro 13, the screens are not even close. I would say the difference is like that of a professional tool and a consumer grade tool, but the T430’s screen is more like on my of 4 year old’s toys. Granted the MacBook Pro is 5 year newer tech, but it even looks a good bit better than T460’s Full HD screen. I know that I’m not comparing equal resolutions, but I’m more concerned with contrast and brightness. I love the default profile on VS Code and it’s nearly unusable on my T430 with the HD+ screen. The speakers on the new MacBooks are wonderful. I have been an audio engineer for 15 years and both the 15 and 13 are very surprising in sound quality. I watch a lot of tutorial videos so the speakers mean a lot to me. I would be quick to place a bet that you will not be able to find ANY laptop of similar that sounds as good. And finally the size of the 13 is nice as well. Nothing really compares except the Dell XPS 13. Unfortunately (like the iPhone) the beauty and small size of the MacBook is lost in the adding a case to protect the easily scratched and dented metal body.
In conclusion (TLDR), the MacOS/MacBook vs Linux/Thinkpad decision weighs a lot more on hardware these days then previously. The question is whether it’s enough. The fact remains my work flow is clearly faster and more efficient on Linux on a Thinkpad when using an external monitor. On the other hand the MacBook Pro’s horrible keyboard and mouse/trackpad centric OS play a large part to my lower productivity. But also I stated earlier that if I had iMessage and iCloud on Linux, this may not be a conversation. But then again those may be distractions on MacOS and could translate to the same on Linux. As a learning, part-time, freelance web developer, making the most of my time developing is imperative. This leads me to lean towards using a newer Thinkpad again for developing. The other fact that I didn’t speak about was the suggestion of Mac over, well everything. I can clearly see the reasons of using Mac over Windows for web development. I can also clearly see why people would choose Mac over Linux. But even more so when you first start out learning web development, almost every podcast, meet-up, and tutorial tell you that web development should be done on Mac. I know Linux though, and to me, MacOS is slow and bulky (probably how Mac users view Windows). For me being further in my career, and knowing more of what I do now as a web developer, I think I’m going to make the switch back to Linux. I’d love to see your comments on your workflows. Also if anyone has any suggestions of web development problems that can’t be solved on Linux I would appreciate it. Thanks for reading my first post!