Windows NT vs. Unix: A design comparison

Over the years, I’ve repeatedly heard that Windows NT is a very advanced operating system and, being a Unix person myself, it has bothered me to not know why. I’ve been meaning to answer this question for years and I can do so now, which means I want to present you my findings. My desire to know about NT’s internals started in 2006 when I applied to the Google Summer of Code program to develop Boost.Process. I needed such a library for ATF, but I also saw the project as a chance to learn something about the Win32 API. This journey then continued in 2020 with me choosing to join Microsoft after a long stint at Google and me buying the Windows Internals 5th edition book in 2021 (which I never fully read due to its incredible detail and length). None of these made me learn what I wanted though: the ways in which NT fundamentally differs from Unix, if at all.

September 9, 2024 · Tags: <a href="/tags/blogsystem5">blogsystem5</a>, <a href="/tags/unix">unix</a>, <a href="/tags/windows">windows</a>
Continue reading (about 23 minutes)

A CLI text editor? In my Windows?

It’s more likely than you think! In a surprising twist of events, Microsoft is exploring the addition of a command-line (CLI) text editor to Windows. If you ask me, not having a CLI text editor on Windows is mind-boggling: you can access a Windows machine via SSH these days, so not having an editor that works in the console is a big handicap for remote system administration. So, should Windows bundle a CLI text editor? Of course it should.

December 8, 2023 · Tags: <a href="/tags/history">history</a>, <a href="/tags/windows">windows</a>
Continue reading (about 7 minutes)

Windows NT: Peeking into the cradle

It's strange... but I've been able to finish reading a book cover-to-cover that's not a book for my kids. It's hard for me to get hooked into books and find the time to read them. I think the one I finished before this might have been 10 PRINT, and that was over a year ago. This time, though, I completed the book on the story behind the creation of Windows NT: namely, "Showstopper!" in its short form, written by G. Pascal Zachary. Reading the story of how Windows NT came to be was entertaining, as it is a story of the system itself and the dynamics between Dave Cutler, the original designer and lead for NT, and the other people involved in the project. I was shy of being 10 years old when Windows NT launched and I didn't comprehend what was going on in the operating systems world and why this release was such a big deal. Reading the book made me learn various new things about the development process, the role of Microsoft in that era, and allowed me to settle some questions I've had over the years. This article is a mixture of a book review and a collection of thoughts and reflections that the book evoked. Let's begin because we have a lot of ground to cover.

November 24, 2023 · Tags: <a href="/tags/books">books</a>, <a href="/tags/windows">windows</a>
Continue reading (about 16 minutes)

A year on Windows: Finale

We have reached the end of this daily 2-week long series so it’s time to close with some parting thoughts. Before drafting some conclusions on how this whole year has gone, there is just one more topic I have to touch on… and that’s the much dreaded telemetry.

March 19, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 4 minutes)

A year on Windows: Software installation

Can you believe that Windows ships with something that looks like a package manager? By default since Windows 11? I know, right? Let’s take a look.

March 18, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 6 minutes)

A year on Windows: System debugging

As you are well-aware, Windows is a closed-source operating system. That, however, does not mean that it is opaque. In fact, it feels quite the opposite in many areas, which might be a surprise to you—especially if you develop on/for open-source operating systems.

March 17, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 5 minutes)

A year on Windows: Networked file systems

I briefly mentioned in the intro to this series that, as part of the transition to Windows, I recently built my most powerful home server ever. The server in question is a machine from 2011 so it’s not “powerful”, but it’s the best I have ever had as a home server! And it is running FreeBSD 13. Wait, wait, wait. What does this have to do with Windows?

March 16, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 4 minutes)

A year on Windows: PowerShell

The native Windows command line, the one derived from DOS, is objectively painful. On the one hand, the batch language is full of hacks that have cropped up over the years. These hacks exist to offer new features while maintaining strict backwards compatibility, a heroic effort with nasty consequences. On the other hand, the interactive editing features of cmd.exe are rudimentary1. Fortunately, PowerShell exists as a first-party, built-into-Windows alternative to cmd.exe.

March 15, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 7 minutes)

A year on Windows: Development experience

We are finally entering the final part of this one-year retrospective by shifting gears into developer-oriented topics. I hadn’t touched Windows to write code since 2006 and the development experience has massively changed for the better during the last 6 years. So let’s start this part by talking about the crown jewel of development on modern Windows: the WSL + Windows Terminal + VSCode trifecta.

March 14, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 5 minutes)

A year on Windows: Miscellaneous tools

The previous episode in this series was about PowerToys: a nice collection of first-party tools to extend the functionality of Windows for power users. But what about functionality that’s built into the system? There are a few more areas I wanted to touch on before concluding the GUI part of these series, so let’s dive in.

March 13, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 4 minutes)

A year on Windows: PowerToys

If you were around the Windows 95 days, you may remember the PowerToys addon. PowerToys was a collection of first-party miscellaneous utilities targeted at power users and it died off sometime around 2010. In a surprising (to me) move on May 2019, Microsoft relaunched this brand as an open-source project targeting modern versions of Windows. At the time of this writing, PowerToys provides 12 different disparate tools. Which ones you find interesting will depend on your needs. As for me, here are my favorite picks after a year of experimentation.

March 12, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 5 minutes)

A year on Windows: Window switching

Windows is about managing windows so it should excel at window switching. Uh huh? Let’s investigate how that works in this episode and how Windows’ approach feels to a long-time macOS user. Spoiler alert: I never really liked macOS’s way.

March 11, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 6 minutes)

A year on Windows: Look'n'feel

Enough complaining about keyboards, shortcuts, and input methods. Let’s shift this one-year reflection to the user interface and slowly towards more positive topics. First of all, let’s make one thing clear: GUIs are like colors. There are plenty to choose from, everyone has their preferences, and that’s just fine. Windows’ GUI is what it is and doesn’t leave a lot of room for customization. If you are a macOS user, you have learnt to put up with a similar approach, but if you are a Linux user, you will despair at the lack of options.

March 10, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 5 minutes)

A year on Windows: Input methods

Yesterday’s post on this series was almost a rant on how keyboard shortcuts don’t work on Windows. @blude on Twitter was curious to know about inserting “special characters”, which is really an euphemism for non-English letters. As a non-native English speaker, inserting such letters is something I occasionally have to do but somehow the topic didn’t cross my mind. Let’s take a look now.

March 9, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 5 minutes)

A year on Windows: Keyboard shortcuts

As I mentioned in the introduction to these series, different physical keyboards are a source of frustration. This, however, pales in comparison to trying to use Windows as a former macOS user: the different keyboard shortcuts break muscle memory, and this made me feel completely unproductive and… furious every time I made a mistake.

March 8, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 7 minutes)

A year on Windows: Introduction

2022-03-07: Introduction 2022-03-08: Keyboard shortcuts 2022-03-09: Input methods 2022-03-10: Look'n'feel 2022-03-11: Window switching 2022-03-12: PowerToys 2022-03-13: Miscellaneous tools 2022-03-14: Development experience 2022-03-15: PowerShell 2022-03-16: Networked file systems 2022-03-17: System debugging 2022-03-18: Software installation 2022-03-19: Finale A bit over a week ago, I narrated my decades-long love and hate relationship with Windows. Today, it’s time to start covering my impressions of this platform after spending a year on it as my primary OS. This is noteworthy because I had been a Unix-only person for about 25 years and spent the last 15 on macOS alone. Switching to Windows 10 and 11 has been quite a change and… for the most part, a positive one. I like what I’ve seen.

March 7, 2022 · Tags: <a href="/tags/featured">featured</a>, <a href="/tags/windows">windows</a>
Continue reading (about 4 minutes)

Windows 10 on a Mac Pro 2013

The Mac Pro 2013 is the most powerful machine I have at home. I love the hardware looks, its small form factor and its quietness, plus it is still fast enough for my needs. As I realized I hadn’t used macOS for months and I needed to recover the SSD space that this system was using, I’ve done the unthinkable: I have installed Windows 10 as the only OS on this machine. Here is all you need to know to make Windows 10 work well on this hardware, no matter if you choose to use Boot Camp or do a full clean install as I did.

March 1, 2022 · Tags: <a href="/tags/lab-notes">lab-notes</a>, <a href="/tags/mac">mac</a>, <a href="/tags/windows">windows</a>
Continue reading (about 13 minutes)

Configuring SSH access into WSL 1 and WSL 2

One of the reasons I like macOS is that it is a Unix system. Thanks to this, it’s trivial to set up an SSH server to remotely access and administer the machine, which in turn has allowed me to have a nice and powerful desktop computer which I can also leverage when I’m on the go. Moving to Windows full time, as I briefly touched upon in My story with Windows, required that I could do the same on this platform. I knew that Windows ships with an SSH server and that it works well with VSCode, but I am still much more comfortable developing my side projects on a Unix system. Windows has WSL, which had proven to be sufficient for my needs, but WSL is still a separate environment from Windows—and the distinction rears its ugly head when trying to remote into the machine.

February 27, 2022 · Tags: <a href="/tags/lab-notes">lab-notes</a>, <a href="/tags/windows">windows</a>
Continue reading (about 7 minutes)

My story with Windows

It has been a year since I went all-in on Windows as my daily driver. I had been off this platform for more than 25 years, spending the first 10 of those on Linux and the BSDs, and the latter 15 on macOS alone. This switch is A Big Deal™️—to me at least. I want to tell you how Windows 10 and 11 feel these days to someone who hadn’t touched this OS for a long time. But, before I can do that, let me tell you my story with Windows. This might be boring so I’ve sprinkled some images to evoke retro feelings.

February 24, 2022 · Tags: <a href="/tags/windows">windows</a>
Continue reading (about 12 minutes)

macOS keyboard shortcuts for Windows

Are you a macOS user occasionally dealing with Windows systems or trying to switch platforms? Are you a Windows user that believes that the Windows-native keyboard shortcuts are objectively bad? Are you annoyed by something as simple as copy/pasting text not working consistently across apps? If so, this post will equip you with an AutoHotkey configuration file that brings macOS keyboard shortcuts to Windows. Read on.

July 7, 2021 · Tags: <a href="/tags/macos">macos</a>, <a href="/tags/productivity">productivity</a>, <a href="/tags/windows">windows</a>
Continue reading (about 8 minutes)

Windows Subsystem for Linux: The lost potential

If you have followed Windows 10 at all during the last few years, you know that the Windows Subsystem for Linux, or WSL for short, is the hot topic among developers. You can finally run your Linux tooling on Windows as a first class citizen, which means you no longer have to learn PowerShell or, god forbid, suffer through the ancient CMD.EXE console. Unfortunately, not everything is as rosy as it sounds. I now have to do development on Windows for Windows as part of my new role within Azure… and the fact that WSL continues to be separate from the native Windows environment shows. Even though I was quite hopeful, I cannot use WSL as my daily driver because I need to interact with “native” Windows tooling. I believe things needn’t be this way, but with the recent push for WSL 2, I think that the potential of an alternate world is now gone. But what do I mean with this? For that, we must first understand the differences between WSL 1 and WSL 2 and how the push for WSL 2 may shut some interesting paths.

November 13, 2020 · Tags: <a href="/tags/featured">featured</a>, <a href="/tags/opinion">opinion</a>, <a href="/tags/windows">windows</a>
Continue reading (about 8 minutes)

Argument processing in Unix and Windows

Let’s continue our dive into the very interesting topic of how Unix (or Linux or what have you) and Windows differ regarding argument processing. And by that I mean: how a program (the caller) communicates the set of arguments to pass to another program (the callee) at execution time, how the callee receives such arguments, and what are the consequences of each design.

November 2, 2020 · Tags: <a href="/tags/unix">unix</a>, <a href="/tags/windows">windows</a>
Continue reading (about 12 minutes)

Configuring Windows for key-based SSH access

Windows Server 2019 and Windows 10 both ship with OpenSSH (server and client). Installing these components is a breeze, but the official documentation to set everything up is either wrong or incomplete. I wanted to set up key-based authentication and this took quite a bit of poking until I figured out all the right knobs. Here are the lab notes from my adventure.

October 30, 2020 · Tags: <a href="/tags/lab-notes">lab-notes</a>, <a href="/tags/windows">windows</a>
Continue reading (about 7 minutes)

Flags parsing in PowerShell (vs. Unix)

The way PowerShell handles flags in scripts (aka cmdlets) differs completely from what Unix shells do. These differences allow PowerShell to gain insight on how scripts have to be executed, which in turn can deliver a better interactive user experience. Read on for a comparison while wearing Unix-tinted glasses.

October 28, 2020 · Tags: <a href="/tags/powershell">powershell</a>, <a href="/tags/unix">unix</a>, <a href="/tags/windows">windows</a>
Continue reading (about 7 minutes)

Windows 3.1 startup speed

Out of boredom, I installed MS-DOS and Windows 3.1 on my machine a few days ago — yeah, I was inspired by the Hot Dog Stand comments in this post. Check it out here. Don't be scared, it was just a virtual machine! Anyway, this was fun because it reminded me of something. Back in 1994, my father bought a Pentium 60Mhz. After ordering it, we imagined how fast it could be compared to our older machine, a 386DX 40Mhz. Based on magazine reviews of those days, we supposed that Windows 3.1 could start in 1 or 2 seconds. But what a disappointment when we got the machine. It certainly was faster than the 386, but it took many more seconds to start Windows. Now, trying this same thing on the Macbook Pro, Windows 3.1 actually starts in less than 1 second. Finally, after almost 15 years, our thoughts have become true!

January 14, 2009 · Tags: <a href="/tags/bloat">bloat</a>, <a href="/tags/windows">windows</a>
Continue reading (about 1 minute)