Operating System “Ecology”

Back in my days of playing AD&D, each month, Dragon Magazine would feature an “The Ecology of…” some mythical beast. The article would read like a National Geographic treatment of what the creature eats, what places they inhabited, and so on. (The one that sticks with me was about the beholder, which is a uniquely characteristic example.) I still think about the word, “ecology,” a lot, because it neatly captures the immediate surroundings of a particular thing. I suppose talking about the “ecology” of an operating system is taking things a bit too far, but hear me out.

As I type this, I’m cloning a spinning-media hard drive to a solid-state hard drive. It’s already 33% done, so I’m going to have to hurry. To do this, I searched for “clone hdd to ssd”, and read the results. The first several, including a prominent LifeHacker article, talked about using EaseUS Backup to do the job.

Fine. I download software, and install it, and try to use it. Along the way, I’m prompted five times to upgrade to the paid version. Each time, I sidestep the upsell, because LifeHacker has assured me that the free edition is all I need. When I finally get to the actual button that does the thing, I see that this is no longer true.

Fine. Times change, and they felt the need to start charging for this. I get it. I don’t begrudge them. If all else fails, I’ll find a way to do this with Linux, because it’s always possible to do things like this with Linux, and do it for free, if you’re willing to learn the flags of some arcane commands.

But I take another look at the search results, and there’s another possibility: Macrium Reflect. Ah! That’s right. I did this for another computer over a year ago, and that’s what I used, I now recall.

Fine. I download this new program. I have to sign up with an email address to get the downloader. Fine. I register. I get my email. I download the downloader. I run the downloader. I enter my email. I get the downloader running. It downloads the program, installs it, and I’m copying the drive right now. The UI is very efficient, and there’s no annoying upsell come-ons. But I’ve had to click about 25 times to get to the point of doing the thing.

People who’ve never actually lived in macOS, and think that Windows is just great (thank you very much) never see it from our side. In the ecology of Macs, if you want some software, it’s usually quite clear that what you want is either free or paid, and installing consists of downloading a file, opening it, and dragging an icon. That’s it. The difference in the two operating system “ecologies,” in terms of friction and user-hostility, is pretty stark. Window users who have never tried Mac: you have no idea how much nicer life can be.

Aaand the clone is done. Let’s see how much faster Civ V starts up now…

DHH “not yet feeling the awesome” of WSL

This has been one of my all-time favorite Twitter threads. David Heinemeier Hansson, creator of Rails, is trying to “live” in Windows, and set it up to do Rails work. He’s blogging the “experience,” and it’s not going very smoothly. Everyone is telling him to use Windows Services for Linux for this, but he’s “not yet feeling the awesome.” I’ve tried using WSL several times for doing development on Rails applications. I, too, am not feeling the awesome, despite the cheerleading by Windows thought leader Scott Hanselman. Despite my personal experiences with it, given how vociferously people recommend WSL for Rails work on Windows, I kept wondering if I were missing something. I’ll take this as final confirmation that I’m not missing anything, and delete the mental bookmark to go back and try this again when it becomes WSL 3.

Ruby on Rails on Windows is not just possible, it’s fabulous using WSL2 and VS Code – Scott Hanselman

I’ve been trying on and off to enjoy Ruby on Rails development on Windows for many years. I was doing Ruby on Windows as long as 13 years ago. There’s been many valiant efforts to make Rails on Windows a good experience. However, given that Windows 10 can run Linux with WSL (Windows Subsystem for Linux) and now Windows runs Linux at near-native speeds with an actual shipping Linux Kernel using WSL2, Ruby on Rails folks using Windows should do their work in WSL2.

Source: Ruby on Rails on Windows is not just possible, it’s fabulous using WSL2 and VS Code – Scott Hanselman

I’ve been doing Rails for about 13 years as well, and I’ve been following Scott for probably about that long. Heck, being a tech evangelist for Microsoft, it was probably him that alerted me to the fact that WSL was being put into Windows to begin with. And using it for Ruby on Rails development is precisely why I wanted it. So when it was first released in Windows 10 Insiders Edition, I hastily upgraded my gaming rig to try it out.

There were literal, show-stopping bugs that prevented doing the “normal”  kind of Rails development, where you install a Ruby version manager, then install the bundle gem, then install Rails, then bootstrap your site.

I keep wanting to say “emerge” when I mean “install.” I guess using Gentoo broke my brain, but, really, that’s what’s going on. When you’re doing this sort of thing, you’re installing software that’s dependent on your environment, which is exactly why portage was created.

I filed some bugs, and watched and waited. A couple of them were fixed pretty quickly. But then other problems became apparent, and they weren’t going to be fixed any time soon, so I gave up.

Then they announced the release of a big upgrade to the system. So I tried again. And, again, I found problems that prevented me from being able to develop with Rails. So I gave up, and stopped watching this space.

Now Microsoft has been evangelizing a total rewrite of WSL, and how they’ve made it “native,” and how this fixes compatibility problems and speed issues. But all they’ve done is make the tool a total virtualization of the environment, when the whole point of WSL was that it was not a virtualized environment!

WSL was supposed to bring “open source” development (like Rails, and Node) out of the dark ages on Windows, and make it a first-class workflow on the platform. This was easy to believe, because Microsoft was really lagging in these popular development scenarios, and it could be expected that they were motivated to create a bridge to get back on equal footing with Mac as the platform of choice for working with modern web technologies.

However, the situation on Windows is now worse than ever. It used to be such a hassle to do this kind of work on Windows that you’d install VirtualBox, create a VM, map your VM’s drive onto a Windows mount point, and run your development tools on the files in the mounted drive. Now, WSL2 is basically doing that for you, and not even giving you the courtesy of a GUI to manage the virtualization settings. I guess the positive way of looking it is that they’ve created a VirtualBox-type Linux VM with all the file-system mapping pre-configured.

It’s telling that the workflow that Scott is proposing is to use Visual Studio Code with a plugin for remote development.

Whatever. It’s a hard pass for me, dawg. If I needed this, I’d just install VirtualBox, and be explicit about what I’m doing.

As a side note, I’ve been using RubyInstaller for years now, on my work laptop, and it “just works.” I mean, sure, you’re limited to a specific version of Ruby, but I just make that my base, and “emerge” that one on my Mac and the Linux host server, and everything lines up. So my need for any sort of virtualized Linux environment on Windows has already been satisfied.

Making Windows Tolerable

I got a new job a couple months ago. I suspect that IT departments of monstrously-large, international corporations are all reading from the same playbook in how to setup and administrate their networks, users, applications, and computers. The IT overhead was pretty overbearing at the previous place, and the only changes at the new place are purely cosmetic. (I hear of places which are worse than both of them, so it can be worse.)

Perfect example: the wifi is locked down, just the same, in both places. I don’t know how they do this. It must be either certificate-based authentication, or RADIUS. The end result is that you simply cannot put a personal device on the wifi network. If a customer were to demand it, they can make an exception, but for only a week. I guess that’s better than the old place, which only gave out single-day exceptions, but both organizations are demonstrating a cutting-off-you-nose-to-spite-your-face approach to the problem. As before, I can plug a computer into the wired network, and carry on just fine, thank you very much, so what did the policy do for them or for me? The answer is: inconvenience us both. So, first tip, for free, is:

Get a cellular plan with a provider which has good coverage at your office

I switched from AT&T to Verizon, because AT&T coverage around Columbus is famously bad, and AT&T has been telling people for a decade that they are going to put up more towers, but they never do.

Next? Proxies. OMG, proxies. What gives? The old place had a single proxy everything had to go through, and it needed authentication via the domain credentials. If you didn’t use it, or didn’t authenticate, you weren’t getting to the internet. Period. The new place has a world-wide conglomeration of about 20 proxies, depending on office location, and you get passed between them depending on what you need to get to. And they, too, need authentication via domain credentials. However, unlike before, these proxies can just be bypassed! If you use one of the proxies, you can’t reach about half the internet, like YouTube or Reddit, but if you simply do not configure your connection to use a proxy, you can get to everything just fine! And faster! So, second tip, to make Windows usable, in this situation is:

Use Firefox as your main browser, and install the FoxyProxy plugin

I just configure the plugin to use the local proxy to get to the couple of corporate machines I actually need to access, and it all works out great. I had to do this sort of thing at a different previous company, so I was prepared for this particular annoyance.

Next: Working with Linux. For many years, I’ve watched Windows Services for Linux take shape, and was secretly hopeful about it, even despite my general distrust and dislike for Microsoft and Windows. After it came out, I tried using it to develop with Ruby on Rails. It failed in about 3 different ways before I gave up. I’ve continued to try it, and it continues to fail in obscure ways because it’s not, in fact, “real” Linux, no matter what the paid advocates say (nor how cool they may be). So, third tip, to develop with practical web application stacks:

Avoid WSL, and keep using VirtualBox

The second half of this tip is, of course, what to do about a terminal and SSH. I thought I had it figured out at the previous company with Cmder and PuTTY. However, at this new company, people use MobaXterm, and OMG how have I not found this before? It’s seriously great. So, third tip, part deux:

Use MobaXterm

Windows 10. Ug. I’m actually glad that Microsoft is… Microsoft, at this point, and allows companies to do unspeakable things to the registry and policies on the system that they will not expose to plebeian end users. Corporations have reined in the worst of the Windows 10 abuses. At least the playbook that big companies are using includes things like preventing the installation of game demos and requiring centralized approval of updates, which prevents a lot of day-1 update fiascos.

Unfortunately, at the end of the day, Windows is still Windows, and you still have to use it all day long. One thing I really have come to despise is the Windows Explorer. As time goes on, it becomes a bigger and bigger sore point to me, because it’s so jarring after using Apple’s Finder all day long. About 15 years ago, a coworker introduced me to Directory Opus. It’s not cheap, but it’s an incredible replacement for the native application. I’ve bitten the bullet, and bought it again. Fourth!

Buy Directory Opus

Seriously. Just spend the money.

The rest is a laundry list:

  • Use RubyInstaller to do Rails development. Everything else is broken.
  • Buy Sublime Text 3.
  • Install the Droid Sans Mono font. Other fonts may look a little nicer for coding and terminal work, but it works really well with the Windows anti-aliasing hinting system.
  • Buy Tower for a git client. You could use Sourcetree, which is free, but Tower is waaay faster.
  • Avoid the use of Skype wherever and whenever possible. It was great before Microsoft bought it, and now it’s just a “corporatized” trash fire. At least we get to save conversations at this company!
  • Go ahead and use OneNote, but please do not share the notebooks with your team. That way lies madness.