Jonathan Goes Windows
It's "official", I have switched to Windows! Some may call me crazy (and maybe I am) but I've actually been enjoying the web dev experience on Windoze. Like those brave soles before me, I have decided that it's time to combat the Mac monoculture and try something different.
It's strange to me that the web is all about open technologies and inclusiveness and then we all use Mac and preach our technology choices hard from the rooftops. I started off using Windows for photography in 2005 on a severely under powered machine, switched over to Mac around 2007 and then became a semi-hardcore Linux user from about 2013 to 2018. I've come to learn that it really doesn't matter which machine the web developer is using, as long as they get the job done at the end of the day.
Tools That Made the Switch Easier
Obviously, I couldn't give up the tools that I need to do my job. I was curious if there would be useful alternatives on Windows. Turns out, things are quite well supported.
.dotfiles
Dotfiles are super cool. They hold all of the configuration and setup information for your computer and are generally source controlled. I have been using my own set of dotfiles for a least a couple of years now. Problem was, I had 0 Windows-based configurations. I didn't even know if dotfiles would be possible on my new Windows system.
Luckily, I found a great little Windows dotfiles repo on GitHub just FULL of handy ideas.
Before I knew it I was scripting in PowerShell like a beast. Now, if I want to setup a new Windows computer, I just need to clone down my dotfiles repo and run my new-computer.ps1
PowerShell script.
Git Bash
Being an ex-Linux user, I have come to love Bash. Although the syntax can be awkward at times, I love how you can count on it being installed on just about any system and how common it really is. Of course, it's not installed on Windows.
To get Bash running on Windows and have common Bash commands available to you from the command line, I recommend installing Git Bash. Since I use Git anyways, this was the easiest choice for me.
You can also install Cygwin which makes a entire UNIX-like environment available to you from the command line. For my purposes this was overkill.
For real Linux geeks out there wanting to try Windows again, you should know that Windows 10 has the Linux Sub System for Windows baked into the OS!
Hyper
The other thing that I was worried about when making the switch was finding a shell to use with (Git) Bash on Windows. The standard Windows command prompt is so 1995. It hurts.
I'd like a shell with a few more features (like ability to copy and paste). Luckily, there is Hyper.
Hyper is a terminal built on web technologies and is fully themable.
Unfortunately, you can't use PowerShell inside Hyper, well, not yet anyway. You can however use GitBash with Hyper which suits me just dandy.
Chocolatey
I hadn't heard about Chocolatey before I decided to go Windows. It's super cool. You know how in Linux Land you have package managers like apt
that handle the installation of all your software? Oh.... you don't know about that?? Ah, you use a Mac - well, maybe you know about Homebrew?? You do!? Oh OK, good! Well Chocolatey is just like apt-get
or brew
but for Windows!
This makes installing software (or writing a script that installs software) a breeze! Just: choco install <package-name>
Checkout all of the possible software packages at https://chocolatey.org/packages.
Pain Points
Switching to Windows was not without some friction.
Bash
I do miss native Bash. There are certain commands that are not available in Git Bash. While you can write scripts for Bash and run them with Git Bash, I just never really feel confident that they will work all the time. If you call a command that Git Bash doesn't know about or that isn't install on your Windows system, the command will fail (obviously).
The biggest crux was getting SSH to work while respecting my ~/.ssh/config
file. This still hasn't really happened yet. Or rather, I haven't found a good way to go about it. My config
file works if I am using Git Bash interactively as a normal shell. However if I run a script that uses ssh
from something like cron, then the script will fail because it cannot read the config
file.
Cool Factor
This is a small point, but people tend to expect a web developer to own and use a Mac. Heading to meetings with my 2014 IBM Thinkpad throws people off. It's strange, but I feel like they may be taking me less seriously simply because I am not rocking a Mac laptop. My computer does have a lot of stickers on it though. I think this contributes to my credibility.
Cost Savings
Credibility aside, I have noticed that my Windows machine can do everything my past Mac machines could do. As a web developer you are basically just editing text files (which any modern computer could do, really). You don't need a lot of processing power to run a browser and a text editor and with my new SSD installed, my Windows rig boots up faster than any computer I've ever owned!