Returning To Windows: The search for the holy shell.

Eligio Taveras
Tapad Engineering
Published in
7 min readSep 10, 2019

--

So, I am super stoked because I just made myself a new PC. As an aspiring game creator, and full-time full-stack developer, you can imagine how excited I am about getting a long-needed upgrade for my main computer system at home. In case you are wondering what parts I went with, they are listed below (I also have a few SSDs from my old machine that will be moved over):

be quiet! Dark Power Pro 11 1200W ATX 12V 80 Plus Platinum Modular Power Supply — Silent Wings 3 Fans

GIGABYTE GeForce RTX 2070 Super GAMING OC 8G Graphics Card, 3 x WINDFORCE Fans, 8GB 256-Bit GDDR6, GV-N207SGAMING OC-8GC …

CORSAIR Hydro Series, H115i RGB PLATINUM, 280mm, 2 x ML PRO 140mm RGB PWM Fans, Advanced RGB Lighting & Fan Control w/ …

SAMSUNG 970 EVO M.2 2280 1TB PCIe Gen3. X4, NVMe 1.3 64L V-NAND 3-bit MLC Internal Solid State Drive (SSD) MZ-V7E1T0BW

ASRock X399 Taichi sTR4 AMD X399 SATA 6Gb/s ATX AMD Motherboard

G.SKILL Trident Z Neo (For AMD Ryzen) Series 64GB (4 x 16GB) 288-Pin RGB DDR4 SDRAM DDR4 3600 (PC4 28800) Desktop Memory …

ASUS PCE-AC68 PCI Express Dual-band Wireless-AC1900 Adapter

I put this system together and it is pretty awesome. Boot-up times are fast, it’s pushing graphics to 3 monitors with ease, and it’s all sorts of rainbow prettiness in my case.

Image credit: Eligio Taveras

Getting started

I install Windows and Office and the usual, and then I decide I want to install my development utilities.

I start by downloading Visual Studio Community 2019, and quickly discover that the on-board wireless is too slow for any human to accept in this day and age (hence the addition of the Asus wireless card).

The point of installing VS is to prepare to write games in C# using Unity, and the Google Cloud Platform. However, at this very moment, I am too lazy to turn off the PC to install the faster wireless card. VS is still downloading and is about halfway through (it’s only been, like, 10 hours 😜).

This leads me to the thought that I should just start downloading and installing the tools I usually use at work, which I have grown quite accustomed to, despite being an MS-Dev throughout my early career. Of course, all of the easy install package manager-y goodness offered up in the usual Linux distros is gone because it’s Windows, and if you have Windows, why would you ever want to type?

Since I like making things harder for myself, I start trying to hunt down a reasonable command line application that can replicate and allow me to use the bash shell in a way that more closely resembles what I am used to.

Of course, I remember from back in my Windows days that I had a fond love of Powershell. I start by seeing if I want to use Powershell, since it is already installed on my machine. I type ls and to my surprise, I get a list of files. Then I try to open a new tab ctrl+t, and I get an escaped tab character. Awesome! Since I have no patience and no new tab, Powershell is out!

I find the following native-to-Windows options, which do not require any real craziness — just install and go:

I open ConEmu, and it’s pretty damn hideous.

It really looks like it came out of the 90s. It also has crazy weird behaviors, like always being at the top of my screen and I can’t move it with my mouse. It does not seem to have an intuitive command sequence for creating a new tab, either. ConEmu is out as well. I just can’t!

Installing Cmder, it tells me to stick applications I want in the bin directory as that directory is going to get added to path for me. Now, I find this to be a little un-intuitive, since on Windows, everything by default installs into program files. I am not planning on installing crap into this directory just to get that benefit.

I decide to try and place a shortcut in the bin directory to an application, and that did not appear to work since it didn’t auto-complete in Cmder. I move on, ignoring that issue, and start trying out Cmder.

First, it has a color scheme that I would say is nice, and not a blatant attack on the rods and cones. It is built on ConEmu, so the nice parts of that dinosaur are maintained, like choosing console type, and easily toggling buffer height. The tabs are on the bottom, which I personally don’t like, but still looks much better. I think I like this one, and yes — it is largely because it looks pretty.

Visual Studio Install is still only at 63% downloaded and 45% installed. The network card is all the way downstairs in a box, and so the wait continues.

Next, I want to try and install applications like I do on MacOS or Linux, with the use of Homebrew.

As expected, this is Windows, and brew is not available for it, so I start looking for an equivalent and stumble upon Chocolatey.

Reading the page, it sounds like exactly what I am looking for. Start by using a command like:

choco search ‘intellij’ — order-by-popularity

The first item that returns is:

intellijidea-community 2019.2.1 [Approved] Downloads cached for licensed users

…not bad. This is actually working out nicely.

So now, thanks to my lack of desire to go grab that faster wireless card from downstairs, I have another large download going.

IntelliJ is at 1% and VS is still chugging along at 74% downloaded and 45% percent installed. Thank goodness, I can just create more tabs and make this machine do even more work 😜.

I am realizing now that Cmder is nice and all, but I really want my bash commands. I am simply kind of used to them. Google says I want to do this:

Following these steps, I can get to the point where it tells me to install Ubuntu or Debian in order to get the command line applications that I am used to. Unfortunately, I went a little too fast and installed Ubuntu, and enabled the WSL according to those instructions. So this next point I am not 100% sure about, but I believe that once WSL is enabled, irrespective of whether you install a Linux distro or not, you get bash. This means you can open Cmder and tell it to open a bash console instead of a Cmd or Powershell one.

At this point, I do have the ability to open a bash console in Cmder and available to me are all the basic linux commands like wc, grep, cat, diff, etc. Chocolatey is a decent replacement for brew, allowing me to install utilities in a simple way. However, it does miss some packages.

IntelliJ - 31% Visual Studio - 87% downloaded.

Trying to install brew on WSL keeps failing with a symlink error.

This appears to be happening while brew is attempting to install Ruby. Luckily, it appears that Chocolatey is helping me cannibalize it because it has a Ruby download. I reinstall Ruby through Chocolatey, and it changes a series of environment variables that breaks everything even further.

In order to get Cmder starting up with the correct variables set, I end up having to rebuild its start-up tasks. Luckily, that is pretty simple in ConEmu\Cmder. Simply go to Settings → Startup → Tasks, remove all the tasks, and re-create using add/refresh default tasks. Once that was done I was able to make a bash shell and run Homebrew install and successfully complete it. Next, just follow instructions to add it to your .profile and environment var and brew starts working as expected.

Great… Brew requires GCC and guess what GCC is not installed either! Installing gcc using the provided commands ended up not working because it was missing dependencies. In my case, it was complaining about not having patchelf. And so now we have to take another adventure. In order to get patchelf I had to install binutils. Running the following commands did the trick in this case.

sudo apt-get update

sudo apt-get install binutils

brew install gcc

Finally, it appears that brew install is working as expected.

I was then able to install other utilities I normally use that require building locally. Welp! That was a nightmare, but I got my tools working, and while I still prefer iterm2, this Cmder shell is working out to be a decent substitute. I managed to get brew working and I can also say goodbye to Chocolatey for installing non-windows specific applications\tools.

Overall, a fairly successfully, but incredibly messy process.

IntelliJ — failed Visual Studio — 100% downloaded. 100% installed.

I really need to install that network card. 😞

Eli Taveras is a Senior Software Engineer at Tapad. Follow Tapad Engineering on Medium and Twitter.

--

--