They say that penguins are pretty smart. They live in the harsh environment of Antarctica, and they can’t really afford silliness. They mostly bundle up together, they travel well beaten paths across the continent, and they try to repeat what others do to keep themselves alive. From the systems thinking perspective, I’d say that’s pretty smart indeed.
At the same time, once in a while, there happen to appear weird penguins. In the middle of a migration, they will just stop and stand there, starring at the herd of his fellow penguins going in a line from one place to anther. They look at where they came from, and they look at where they are going. And then they turn 90 degrees to the beaten path and walk out alone into the wilderness.
How did I get here
The first computer that I could call my own had windows 95 on it. It wasn’t a great operating system, but that was what everyone around me used. And so, I threaded the beaten path up to windows XP. Then, around 2002, I become pretty serious about software development, and linux was the place where all cool kids were back in the day, and so I had migrated to linux for 6 years. Then, in late 2008 I bought my first mac. Because I was into Ruby on Rails at the time, and all the rails folks were on mac. Okay and maybe because Ryan Bates made all those pretty videos about Rails on mac too.
Migrating to mac in 2008 was amazing. Mr. Jobs was at his best, they had just released iphone 3S, and the first generation of aluminium macbooks was rolling out. The new laptops were epic: lightweight and slim; they had best in class keyboards and screens; they had all the latest hardware; and they were extendable. In the nut shell, they were top shelf pc-like laptops, with a slick UNIX based OS. I still preferred linux as my OS as I was a power user by that time and I could control what is going on inside of the system. But, top notch hardware and civilised access to desktop apps like office and photoshop won me over.
And so, after that, I stayed with mac for 11 years. And, just as many of you, I found myself by now owning everything apple: laptop, phone, tablet, watch, network drive, wifi router, keyboard, mouse and headphones. I’d buy all my software at their application store, I’d buy my movies in their media content store, and so on. Fantastic, right?
Yes, well, you see, when I was growing up as a kid in soviet russia, we also had only a hand full of models of everything; made by the same government essentially. But, at least they came with free world class education and medical care; and life long job security guarantee. Can’t say I’m getting a similar deal with Apple…
Ether you agree with the parallel or not, I guess we can all agree that mono-cultures are great, util they are not. And apple has been dropping the ball a lot in the last 5–8 years. Their laptops are actually terrible now. Dated unupgradeable hardware, glossy screens, terrible keyboards, and don’t even let me start on the whole ports thing. They look great in the ads featuring young people and photoshopped san francisco backdrops. But, they don’t actually fit professional’s work that great anymore. Literally all software engineers I work with those days use a full set of peripherals to make macs usable.
And the worst thing is that we’re stuck in their ecosystem. Year after year we just pray that they are going to fix this and that, and nothing happens. The reality of it is that we are stuck between the casual market demands and the fear of the alternatives. As software developers we are not going to win this.
And, so, the thought is crawling through my mind: maybe I am that not-smart type of a penguin; maybe I should just wait it out and keep with the crowd. But then again, with age, you don’t become smarter, you just become less stupid. If I wanted limited options, I’d stay in Soviet Russia. I like options, I like messy humans who can’t agree on anything. And that is not what apple ecosystem is about. And so I made the leap of faith and I bought a windows laptop as my work horse.
The new hardware
My new laptop is the new thinkpad, the quintessential corporate black square brick. Fingerprints all over it. Eww, right? I think my wife, a designer by trade, still feels a bit betrayed by my choice of hardware.
From my perspective though, this is easily _the best_ laptop I ever had. It is few millimetres thicker than a macbook pro, and you’d think it would feel bulkier; it’s quite the opposite actually, this laptop almost half a kilo lighter than 13" MBP and feels way nicer in hands. It is not aluminium either, it’s durable plastic with soft touch coating. Yes it leaves fingerprints, but who cares?! It’s a work tool, not a fashion model accessory. It is lightweight, it is weirdly pleasant to touch, and it doesn’t try to jump out of my hands like a cold slippery fish all the time. Turned out, all this aluminium unibody talk is just advertisement junk. After trying a good plastic laptop, I’m never going back to aluminium.
But, wait, it gets better! There is a really nice 14" anti-glare widescreen. Big enough to do the work, and small enough to open it up comfortably in transport. There are ports for everything. There is an IR camera to unlock the laptop with my face. There is a very decent dolby atmos audio system. There is latest hardware inside, including NVMe SSD and two (!) M .2 slots for upgrades. There is a CPU that’s not thermal throttled every time I run
npm install. And on top of that, there is literally the best keyboard I ever worked on. I’m trying really hard to find some analogy to describe it that doesn’t involve sex, and I’m failing. It is that good. And the crazy thing is, it costs like an average spec 13" macbook pro.
Forget my fetish for thinkpads though. If you want a macbook like laptop, there are plenty to choose from too. There are matebook, and hp spectre. You want a more gamy laptop, there are razer shadow blades. You want more businesy/designy things there are microsoft surface stuff. There are options, myriads of them, and you don’t have to be stuck with one of them forever either.
From the hardware perspective, the competition is miles ahead of apple at the moment. Moreover you have options, you can pick the type of hardware that suits your work and preferences best, and you have fierce competition between vendors that ensures very reasonable prices. For once in a while I don’t have to be that moron who buys overpriced hardware from apple and then complains about it endlessly on twitter.
Okay, now that I, hopefully, exhaustively answered the question you had at the beginning of this article, as of why oh why have I all of the sudden decided to migrate to a PC. Lets turn to the actual software side.
So, what is it like to be a developer on windows?
Oh windows, the citadel of evil! The grand central of open-source haters! The birth place of all the glitchy and ugly software! The cloaca of viruses and malware! The dirty pit of ever-broken drivers! The dingy den of shifty backslashers (see what i did there?)! The realm of never working anything web! If I had a dollar for every time I ridiculed someone in the past for trying to be a web-developer on a windows machine, I would easily have 3 or 5 dollars by now.
Seriously though, I think we all can agree that windows caught a lot of bad press in the past, especially around open-source and web. Any fans of Internet Explorer? No hands? No one?… I thought so. For the past decade, windows was the scare goat of web development. That is a lot to live with.
But then turn around. We all use TypeScript, built by microsoft. Most of us use VS code, built by microsoft. Electron is heavily sponsored by them. And it gets better. IE (Edge) now runs on top of V8. There are react native bindings for windows built by microsoft. And the most interestingly, you can now run a full fledged Linux right on the hypervisor in windows. And it is fully supported by MS and it does not suck! Actually installing Ubuntu and VS code on windows was one of the easiest dev environment setups I have ever done in my life.
The problem is that we often tend to think about the world in static terms. Windows sucks, OSX rocks. And then we do this little silly extrapolation in our heads and start expecting that the world will remain the same in the future. In reality everything changes all the time, everything fights for resources, mutates and adopts.
The thing is that there is literally no difference now between mac os and windows from the developer experience perspective. I have a terminal that runs
zsh, I go around using normal unix commands, I type
code ., it opes up VS code, i work on code, i hit save and it saves. I open up chrome, go to
localhost and see the result of my work. The terminal has all the same features, you can set your favourite colours and fonts, it supports tabs and panels. And so does the editor.
Actually, I would go as far as to claim that it is better than mac, because you don’t have a weird UNIX like proprietary system. You have pretty much real, fully functional Ubuntu. You can
apt-get anything on it, including docker. Microsoft did a mindbogglingly good job at integrating the two systems together so that you didn’t feel the seams. All ports, disks and resources are stitched together automatically, you literally don’t have to do anything to get it working. It just works. Unlike mac though, it is an isolated system, you can just close your terminal and it all goes to sleep. You can completely destroy it by accident too without damaging your main OS.
Okay, to be fair, it took quite a bit of googling and frustration for me initially, but that’s because I am windows challenged; I didn’t touch the thing in nearly 20 years. In the end though, 90% of my dev environment setup was in basically gzipping my dotfiles and project folders on mac and then ungzipping them in WSL. The other 10% were around apt-getting things into Ubuntu and choosing a colour scheme for the terminal app.
Outside of software development
The thing is that a lot of my programming those days happens in MS Word and Power Point. Yeah, I know, I know. But, here is where having windows at your side really shines. The office suite looks amazing on windows. It is lightning fast and stable and fully integrated into the OS. It feels almost like a different product if you compare it to the MS Office on Mac. Having voice recognition built into an office suite is god sent!
There are quality of life things too for a salary man like me. Mail, calendar and the todos are usefully integrated together. UI is no nonsense and crisp, there is nothing distracting in there. Notifications are configurable in depth. There is the “I will be late” button for calendar notifications, etc. Windows snap to screen edges and to each other. There are key bindings for everything too! You can tell, that this whole thing was made to make you focus on work instead of dazzling you with pretty UIs.
Frankly, my biggest fear going into windows was that I will hate the UI and the workflows. I didn’t. In fact, a month later I had opened my old macbook to copy some passwords I forgot in the keychain, and now macos seems like a weird lunapark made for a 20 years old. For the life of me I don’t understand how I could focus on anything in there.
The biggest annoyance in the whole windows UI was actually the ClearType font renderer. It took me 5 minutes though to install a MacType, that basically runs FreeType service and makes fonts render the same as Mac. I could probably install better system fonts too, but I can’t be bothered.
About the struggles
Well, you didn’t expect that everything in windows smells of ice cream, did you? And so, to at lest have a pretence of being fair, I should probably write about the struggles too.
I have mentioned the ClearType and fonts rendering. Honestly, I have no idea why the damn thing still exists. Frankly it is a bit of a punch in the face to go from really nice and clean fonts on mac to that sore in eye they call fonts on windows. MacType helps somewhat in the modern apps, yet it remains a pain in the butt in old apps, or apps that call the old system APIs here and there.
The problem actually goes much further. The problem is with scaling in general, and it is not an entirely resolved matters in windows, due to all the random hardware it’s being run on and the swarm of legacy software that runs on it. Apple somewhat sidestepped the problem by having control over their hardware and doubling the DPI on every turn. Windows unfortunately has to do this the hard way.
Don’t get me wrong here. It is not hideous by any means. All the modern apps work more or less fine, but now and then I run into a dinosaur that looks blurry. Apparently its better on 4k screens as you can set sharp 200% scaling factor in there. But it can feel frustrating coming from mac where it is a non issue through and through.
Anther problem is that Windows is still Windows, it is still hard to tell what is going on the inside of it. You don’t really mess with the registry by hands anymore. Most of the settings are very decently configurable through the settings panel much like mac’s preferences. But, when things go wrong it can be a very frustrating experience trying to find out what’s happening. I broke something while uninstalling prepackaged apps and messing with the background services, and the built in Mail app stopped syncing. All the help you get online for the problem boils down to resetting the app. No ideas of why this happens and what actually needs fixing. Which is highly upsetting for a software engineer.
Speaking of the pre-installed software, there is a lot of it that came with the system. It took a bit of work to uninstall everything. I think I broke something by doing so as well. Those might be just me though, I am a bit paranoid about having software in the system that I don’t use. I want it all thoroughly evicted. It’s definitely possible, but takes effort and skill with the system which I lack here and there.
And finally I’d like to notice uselessness of MS app store at the moment. It seems terribly filtered towards MS own interest. You wont find apps by google there for example. And no competition to their core apps either. Moreover the prices for apps are often 30–40% higher than in other stores. This doesn’t make a whole lot of sense to me. Considering how much resources and market penetration MS has, and considering the very greedy margins other app stores operate on, MS could build the mother of all the app stores. They could be bigger than android I reckon. Yet it is nearly useless. The only stuff I have off the app store are a bunch of the free heavy hitters like spotify or slack. Everything else has to still be downloaded from the internet. Which feels pretty weird in 2019.
Well, it was a weird moth for me, switching back to windows. But, it did not start there, I began to ponder the idea probably 6 months ago, or even earlier. It started with a frustration over discontinuation of 12" macbooks, my favourite ones. I felt annoyed and betrayed by the company actions. I was passionately waiting for them to fix problems with the existing line of laptops, make them professional faced again. Instead they brought back the airs.
I am sure Apple had their reasons, there are a lot of smart people working in there. This story is not really about Apple, and how bad things were in the past few years though. This story is about me, because I hate being the type of a person who buys overpriced fashionable hardware and then complains about it bitterly on twitter. And at some point I realised that unless I move myself out of this context, the story will keep repeating itself. I wanted to give myself options and so I did.
The amazing thing that happened during this period though is the realisation of just how little differences there is in user and developer experience between the two systems those days. Just as different types of trees in a forest max out at a certain height, competing operating ecosystems are bound to copy each other almost to the pixel. The majority of the “drastic differences” that we were told about are merely advertisement inventions at this point.
I’m not sure where apple goes with their business those days, I truly hope they find their footing again. But I think I’ll stick with windows for a while. Because it gives me way more options and flexibility in hardware and dev environment than apple does. However contradictory this might sound to the past actions of MS. People can change, and so can companies. Some change for the better and some change for the worse. And such is life.
PS: choices and decisions
I’ve made a number of choices to set my life on windows, those are my personal choices that I made at this point of time. Don’t take them for anything more than that. But they might be useful to someone else so I’ll post them in here:
WSL 2 — requires, windows insider program enabled
Ubuntu — the most common distro, because there is everything for it. All my dev setup runs inside of that.
Docker inside the WSL/Ubuntu, rather than docker for windows. because that’s how I want my docker. Nice and simple.
Terminal app for the terminal. It has all I need, tabs, panels, and its open-source. There are plenty of options of those though.
I decided not to use chocolate, I want to keep all my dev setup cleanly in WSL/Linux
VS Code for editor, obviously.
Browsers: Chrome for dev, FF for personal/general browsing, because privacy
The built in Mail and Calendar app for, well, mail and calendar. They are not super feature rich, but they have nice UI and all the features I need. Also highly integrated into the system.
Slack/Spotify/1pass/Dropbox are all available on MS app store.
Music is on Spotify, movies I buy on YouTube, books on Amazon.
I use the built in backup app and a USB stick for backups at the moment. Tried google backups thing, hated it. Maybe I can mount google drive as a disk some day instead, or something like that.
PPS: Why not linux?
I get this question sometimes. Well, I do use linux actually, in WSL ;)
Linux was my backup plan in the attempt to beak away from Apple. Linux UI is kind of dead to me though. It is okay, but it didn’t go anywhere in well over a decade, there is no MS office, no Fusion 360, or anything else to that matter. And windows is completely useful, so the choice is obvious.