I’m not writing this story on my beautiful, ginormous 27-inch iMac. Those of you who read my previous post already know why: mostly because I’m terribly disappointed by the recent decrease in Apple’s products quality and because I simply don’t want to endorse its monopolistic aspirations to become the new Microsoft.
A disclaimer first, though: I am absolutely not advising anyone to ditch Apple; on the contrary, I’m a bit annoyed whenever I see people evangelizing about how their solution is the best and should be generally adopted by everyone, heretics and believers alike. No. If you’re happy with Apple, use Apple. If Windows is the thing for you, keep using it. But, in both cases, make sure to read the EULAs at some point, just so you know what you’re signing up for ;-).
That being out of the way, if you’re still reading this, you’re probably interested in switching, for your own reasons. And you probably know there are just 2 major Apple alternatives around: the Windows ecosystem, and a plethora of (way too many) Linux distributions. Another niche and legally problematic alternative has been suggested by some readers, namely the use of Hackintosh. I’ll try to summarize the pros and cons of each one and to rationalize my decision-making process, from the perspective of a full-stack JS/web developer, power user and occasional gamer. The perspective is important — and yours might be different than mine — because you always want to base your decision on your actual needs, and because you want to use, not fight, technology.
As I said, I’m currently a full-stack JS/web developer and occasional gamer. I’m also a power user, in the sense that I’m quite tech-savvy. I’ve used computers since primary school (Spectrum was the rage back then), know a lot about how they work internally and came in contact with all the OSes mentioned above, plus a couple others that don’t exist anymore. Years ago, before switching to OSX, I used to work almost exclusively on Windows, as part of a team writing in C#/.NET one of the best insurance solutions in the world, so I believe I’m quite OS-impartial and knowledgeable enough to base my decisions on reason, not marketing hype of fanboyism (Is that a word? I’m not a native English speaker, so please correct me where necessary :-).
So, what am I doing exactly, besides rambling about tech stuff, and what software do I use?
- Write a lot of server-side and client-side code: JS/Node.js, CSS, HTML, and recently Frankenstein-ish hybrids like JSX. A few years ago I was using Sublime Text, then tried Visual Studio Code and now I’m completely sold to Atom. Luckily, all these are working on every possible OS.
- Recently started delving into React-Native for building native mobile apps. Yeah, I know, there’s already an app for everything, yet people still want more. You can write React-Native everywhere (after all, it’s mainly JS/JSX and some native bindings). You have to occasionally use Android Studio or you can use Expo XDE, but those two are multi-platform, and you can deploy on Google Play from macOS, Windows or Linux. There’s a different story with Apple’s XCode and App Store — I wrote about that in the previous article — you need macOS. That’s a potential pain point.
- Work with relational and non-relational databases: PostgreSQL, MongoDB, some Redis and recently Firebase. I need to use good database clients and I’ve found DBeaver and Studio 3T (former MongoChef) to satisfy most of my needs. They’re both multi-platform, so no pain here.
- Write and execute various shell scripts to automate my workflow (building, packaging, deploying, etc.). Bash, actually. That’s another potential problem, as Windows NTFS is not POSIX-compliant and PowerShell is totally different, not widely used outside Microsoft ecosystem and certainly not something I’m looking forward to learn.
- Run Vagrant with VirtualBox to virtualize server environments on my development machine. Both are able to run on any host OS.
- Occasionally design UIs for websites and web & mobile apps. Here’s actually a longer story to tell and the major pain point in switching to another platform, hence the dedicated section below.
- And lastly, play games like World of Warships once in a while. Not much to tell here; you simply have to boot Windows on your machine for that. If you’re on a mac, make sure to use a separate partition, not VMware/Parallels, because you absolutely want performance. But even so, be aware that an iMac or MacBook will make a severely under-powered yet outrageously expensive gaming rig. Unless you’re using the newest Mac Pro in its top configuration, in which case you’re the fortunate owner of an obscenely expensive, average-performing gaming machine.
So, onto the major pain point now: web/UI design.
Web/UI design — a brief history.
Many years ago, I remember using an exceptional piece of software called Macromedia Fireworks. Somehow, the developers at Macromedia managed to find the right balance between bitmaps and vectors and package it in a perfect solution: Fireworks. Powerful enough, yet with a relatively simple interface.
Adobe acquired Macromedia in 2005 and, in a surprising move (and arguably one of the worst decisions in the history of the company), 7 years later publicly announced its discontinuation. The product itself was absolutely loved by web designers because not everyone doing web design was willing to learn and pay for something as complex, complicated and unfit for simple web design as Photoshop. To cut a long story short, Adobe was the “big old company” type whose management breathe a thinner air than us mere mortals do, so they don’t feel the need to listen to small or “niche” customers. Even if that niche represents the future.
Sketch — the current de-facto standard, mac-only.
When Bohemian Coding launched Sketch in 2010, nobody paid much attention; Adobe certainly didn’t, but a few years later, after winning an Apple Design Award in 2012, everybody and their dogs were using Sketch for doing UI and web design on their macs. And for good reason: Sketch was everything Fireworks used to be and more, for a fraction of Adobe CS price. It’s needless to say that I fell in love with it as soon as I’ve tried it, like almost everyone else, and with time it became a sort of a reflex: whenever I needed to design something, a web mockup or even something as simple as a plain logo, I was instinctively reaching for the golden diamond shape in the app launcher.
There is one problem, though: Sketch is a mac-only application and, after being repeatedly asked on their forum, the developers made it clear that it will remain mac-only for the foreseeable future, for perfectly understandable technical reasons.
Affinity Designer — a ray of hope for Windows users?
So the non-mac professional users had little to hope for, but some of them were partially redeemed from the depths of Adobe hell when Serif Software launched Affinity Designer on Windows in 2016. Feature and UI-wise, Affinity Designer is somewhere between Photoshop and Sketch, so don’t hesitate to give it a try if you’re on Windows and feel miserable using Photoshop for web design.
Affinity Designer is available for both macOS and Windows, I’ve given it a try and I could envision myself using it instead of Sketch. But after doing most of my work on a mac for 7 years, I could not envision myself switching back entirely to Windows. It just felt wrong, for reasons I’ll explain later.
GIMP plus Inkscape — not really a solution.
The Linux community had GIMP for bitmap image processing and Inkscape for truly SVG standard compliant vector design. Those two had been around since the last millennium and are well-known in the linux users community, but since they’re free and multi-platform, there are people using them on Windows and macOS too. They’re both excellent programs built and maintained by extraordinary people, yet are totally unsuited for UI design. I attempted to use them and failed miserably, like most others who did, no matter how stubborn. Yes, you can definitely design vectors in Inkscape and yes, you can absolutely use GIMP for everything bitmap related. But UI design is different than just the sum of the two — you need something that strikes the right balance between vectors and bitmaps and has a simple, intuitive and uncluttered interface. Macromedia got that right years ago, Bohemian Coding nailed it even better, but mac-only, in 2010. So, not much hope for linux rebels. Or is there?…
Gravit Designer changes everything. Like iPhone did, but for free, for everyone and for real.
I found out about Gravit Designer a couple years ago while I was looking for potential alternatives to Sketch. Back then, Gravit advertised itself like this: “create and share beautiful designs with the power, flexibility and speed of a free, lightweight and easy-to-use tool, right in your browser”. Interesting, I thought. Right in my browser? You mean, I can use it on both my iMac and my inexpensive Windows/Linux laptop? So, I gave it a try. And I was simply amazed. It was almost everything Sketch was. A bit slower, especially for documents with lots of layers and effects, since it was a browser-based application. It had one potential drawback, though: you could only save your documents in a private online account. It was free but not open-source, I didn’t know much about the team behind it or their business model (if any), so I was a bit concerned with what could happen with my design sources, should they one day be forced to pull the plug. We’ve seen this happening before, even to projects endorsed by giants like Adobe, Microsoft or Google. But Gravit was looking so damn promising that I decided to keep an eye on it. The team behind was maintaining a community support forum, and when users raised questions and concerns about its future, they made statements implying that Gravit will always be free and that they also had bigger plans, culminating with this teaser in August 2016: Gravit’s New Direction. Wow! A free browser and native design application available on every platform? You mean, a small team of developers would do what Adobe couldn’t, or wouldn’t do, for like, a decade or two? That sounded too good to be true.
“Too good to be true” became reality in the beginning of 2017. Yes, it’s free, truly cross-platform and incredibly intuitive to use. You can give it a try in your browser or install it no matter what OS you’re using (there’s even an AppImage for linux), or have a look at what you can do with it on their Medium blog.
Of course it’s much faster now, and you can save your documents locally, so you’re not forced to use a certain cloud anymore.
Export jpegs, pngs and svgs for multiple pixel densities? Sure. The exported svgs are truly WYSIWYG and incredibly clean — just pass them through svgo and they’re “web ready”. Anyone who worked long enough with Illustrator, Affinity and even Sketch knows what I’m talking about: not every effect you apply can be easily translated to SVG format, so at times you’ll either end up with huge files embedding bitmaps (Illustrator, Affinity Designer), or your most exotic gradients will simply not be exported (Sketch).
Of course, bugs are still being ironed out. But for a free product that has been publicly released less than a couple months ago, it’s damn good.
While yearning for a cross-platform alternative to Sketch, I never hoped to get a professional-grade solution for free. So, a big kudos for the team behind Gravit Designer. In technology, some names are meant to change the world and create history. I think Gravit Designer is one of them. Well done, keep up the good work and please don’t sell your souls to Adobe ;-).
Now that the major pain point is solved, back to the actual OS alternatives. If you’ve read so far, you probably anticipate what my choice is, but I’ll try to cover some of the pros and cons of all of them nevertheless.
As I’ve mentioned, a few readers suggested Hackintosh as an alternative. Since I’m not a lawyer, I won’t venture to comment on the legal aspects; I know that legally speaking, installing hackintosh is not a crime per se, because violating an EULA is not automatically “illegal”. Lots of people have been doing it for a while, some are happy with the results and I can understand the practical benefits and the morally vindictive idea of getting all the good things that come with macOS without paying a premium price for a not-so-premium-anymore hardware product. However, considering the reasoning in my previous article, I’m not really interested in the hackintosh way. The technical challenge is, of course, interesting… but spending countless hours to trick the OS into believing it’s actually running on Apple hardware?… That hardly sounds productive. And hardly addresses one of the other concerns I wrote about — too many developers are becoming more and more ignorant of the fact that the vast majority of users world-wide are not on iOS or macOS.
So, I like the idea of building a mac clone twice as powerful as the most powerful Mac Pro for half the price, but hackintosh is not an option for me.
I’ve been using Windows in the past as my main OS and I still use it to see how my work looks like to the vast majority of users, and also as a gaming platform. I kind of like its current slick and flat UI; if you customize Windows 10 with a dark theme it hardly resembles the old dusty XP anymore. Atom is running well on Windows and so do all the aforementioned database clients, Android Studio and Expo XDE. No XCode, of course. For UI design you can choose between Affinity Designer and Gravit Designer. The guys behind Node.js made outstanding efforts to make it work on Windows and once you install Git for Windows you’ll end up with an acceptable bash ecosystem. But the OS itself is not POSIX-compliant and sooner or later you’ll run into problems due to npm module x or y not being tested on Windows. Also be advised that installing tens of npm dependencies usually takes forever, because Windows Defender is no doubt suspicious in regards to so many JS files being downloaded/copied on your file system at such an alarming rate.
There’s another huge issue: if you fear Apple or Google might have uncanny plans regarding the data you willingly or unwillingly share with them, then it means you haven’t read Microsoft’s EULAs or the amount of data Windows collects. Things have recently became more transparent, I agree, but most users aren’t aware of the devil in the technical details. Even I sometimes feel like I don’t truly own my computer, for instance when Microsoft decides an overnight update-and-restart is more important than a long-running process I’ve left working. And if you think Apple has a too blatant “vendor lock-in” strategy, you probably haven’t heard about Windows 10S — the OS version that works exclusively with apps from the Windows Store… pitched for professionals and education. On which you can install “any web browser from the store”.
There’s a lot more to say on the subject, but the bottom line is this: as a tech-savvy individual I simply don’t want to use it for my work if I have a choice, nor can I recommend it to fellow developers and keep a clean conscience.
Ah, yes, linux. The desktop OS for the free people, geeky rebels, hackers and recently Mr. Robot fans.
Over the last 10 years I’ve made a point of testing a linux flavor or two once every few months. I’m a curious geek and I couldn’t help it. DistroWatch and WebUpd8 are two of the websites I check regularly. I’m constantly amazed by the infinite number of choices we have, courtesy of countless selfless developers who dedicate million of hours of their time to the idea that the Internet and the things that power it should be not just open-source (and therefore open to public scrutiny), but also free for everyone to use. I’ve watched Debian and Ubuntu and tens of their derivatives grow, looked at Fedora, openSUSE, Arch, Antergos and many others, and mused at people waging almost-religious wars on “which one is the best”.
From the pragmatic point of view of a JS developer, there’s a problem with having an infinite number of choices: you’re already confronted with the so-called “JS-fatigue”, so a “distro-fatigue” is probably the last thing you need.
From a designer’s point of view, there’s another problem: if you’ve worked for years on a mac, you’re kind of accustomed to a beautiful, streamlined and consistent UI. Most linux distros simply don’t offer it by default and I don’t understand why. I mean yes, beauty of design is a subjective thing, but there are commonly accepted denominators out there. Some distros come with old default themes that look as if they were drawn when Kirk was still captaining the Enterprise. On the other hand others seem to have acknowledged the problem: Ubuntu, Mint, elementaryOS, maybe Antergos, Manjaro, etc. And the Arc Theme looks fabulous.
From the pragmatic point of view of most users there’s also the problem of hardware compatibility issues. Nobody likes to deal with them, you have none of that as a mac user and seldom meet them as a Windows user. Mice, webcams, powerful dedicated video cards, you want all of those to “just work” and it’s not always the case with linux. So be prepared to run into a few issues if you’re planning to switch. But if you are a developer and generally a tech-savvy person you’ll find your way around most of them, especially since lots of community contributors have started to produce content even on YouTube.
So feel free to study two or three distros based on your own needs, pick one, stick with it for a while and see how well it suits you.
The verdict — Linux Mint
For me Linux Mint does the job. Rumors say it’s going to appear in the next season of Mr. Robot, but that’s not why I chose it. I chose it because it’s based on Debian/Ubuntu, most cross-platform software providers offer *.deb packages and since I’m a lazy person I like having PPAs. It’s also working perfectly on my inexpensive Acer Aspire laptop, without any hardware compatibility issues. It comes with a decent theme out of the box, but I’ve installed and customized Arc just for fun.
Atom works perfectly on it, so does Sublime Text and you can even use Visual Studio Code if you like it. There’s no need for Homebrew; npm and yarn are faster than on macOS and way, way faster than on Windows. Now I’m pretty sure I own my own data… and now with the release of Gravit Designer as an AppImage I can also do design. I’m using Trimage instead of ImageOptim for JPGs and PNGs (you do optimize your bitmap web assets, don’t you?) and svgo to cut the size of vectors before deployment. SimpleScreenRecorder is the de-facto standard if you’re into producing tutorials or screencasts. If Google Docs is not for you and you need an offline office suite, there’s Libre or WPS, to name just two of the free ones. There’s even Skype for Linux if you want to install that. Also no need to use Android File Transfer to access the files on a non-apple phone or tablet.
As a web developer I haven’t yet come across something I can’t do on the system I’ve configured.
There’s only one issue left — deploying a mobile app on the AppStore. Luckily I don’t have to deal with it at the moment, but I’ve heard the guys behind Expo might be on to something interesting.
There’s simply too much to say on the subject. There’s an infinity of choices for every taste and every pocket. Few of them are as beautifully-designed as the MacBooks or iMacs are, though I’m sure we’re soon going to see more and more devices like Xiaomi’s first laptop. And if raw computing power is what you’re looking for, you’re sure to get a lot more bang for your buck outside the Apple world.
As for my old crippled iMac, I’m going to keep it for as long as possible, but I’m probably going to use it less and less and most likely my next desktop won’t bear the fruit logo. I’ll do a custom build, twice-as-powerful for half the price.
Again, I’m not advising you to ditch your mac. What works for me might not work for you. If Apple suits you, keep using it. If it doesn’t and you’re willing to try something else, I hope the above will help a bit in your quest. There’s life outside the Apple ecosystem and it’s good to be aware of that. And as a developer please, please don’t forget that 80% of your potential customers don’t run iOS.