Setting up a new computer

This post is about how I set up a new computer. I do several unusual things when setting up a computer for the first time, and upon reading about my process, they may be things you decide you want to do as well.

I wrote this guide for 3 reasons:

  1. Advice for other people. I’m a privacy-conscious, politically-aware person. Many people share those traits, but don’t have the technical know-how to realize the various steps they need to take to make their computer into a device that respects their privacy and doesn’t give them a user-hostile experience. If you have the same day-to-day needs as I do, and use the same applications that I do, this guide will help you do realize those values a little bit better. There might be practices I follow when setting up a computer that you decide you’d like to copy.

  2. A reminder for myself. It’s not easy to remember all the steps that go into setting up a new computer! The next time I need to do it, I’d like a step-by-step guide I can follow. I’ve made this for my future self, because they will inevitably long for such a guide.

  3. Documentation of my own frustrations. In making this writeup, it dawned on me just how many knobs I need to tweak in order to have a sane digital life. I have decades of technical experience and it doesn’t make it any easier for me to tweak those knobs—it’s just made me more aware of how many knobs I have to tweak. In seeing the absurd length of this document, I hope to impress upon any potential readers that the status quo is not okay and it should not take such extraordinary effort to obtain a computer that isn’t actively painful to use. And I also hope to document just how many such painful axes there are. It’s not just user privacy, or performance, or accessibility, or basic functioning UI. It’s everything.

If that sounds interesting to you, read on.


I’m very unlucky when it comes to computers.

In the last 5 years, I’ve had at least 7 device failures across all my laptops. Each time, I’ve had to take them in for repairs, fully reinstall an operating system upon them, and get them back up and running. I’ve had to do this quickly and efficiently, so that it doesn’t take too much time away from work/life, and also so that it doesn’t drive me insane.

Sometimes there are delays. It isn’t always possible to go directly to a repair service the instant that a device implodes. Sometimes you have other, more pressing issues in your life to deal with, and so a repair gets put on the backburner.

Just two days before my PhD prospectus on December 5th of 2025, my last functioning laptop died. That was device failure number 7. Device failure number 6 had been my other laptop. I’d not had time to get the first laptop fixed in the ~6 months before the second laptop collapsed, and so I completed my PhD prospectus by working on lab computers at Northwestern. I was literally limping to the deadline, hamstrung by an accursed string of devices that had stopped functioning at the least opportune moments.

I decided to use a portion of Winter break to get both those laptops fixed. That task is now complete, and I’m typing this blog post on one of the now-revived laptops from that endeavor.

At this stage of my life, I’ve gotten pretty good at converting a laptop from its factory settings to something that’s usable. I’ve documented the process pretty well, and I’ve gotten it down to a science. But my documentation is intended for my eyes only, and to another’s eyes they’d probably appear disorganized and messy. I don’t think anyone else could replicate the process fully and completely without having me in the room.

Furthermore, the specific settings I configure my computer to have are very specific, and would probably be of benefit to other people with a similar setup. So I’ve decided to document the process I use here, in a public blog post, rather than keeping it hidden away in my private notes. I also assume my future self would prefer to read over a public guide than decoding something hidden away in their private notes, too. Even though I have documented the process pretty well, having a public-facing guide ensures that its quality won’t ever degrade, because I’ll feel some amount of pressure to keep it updated for anyone who might view it.

Part 1: The preliminaries

I begin by installing Windows 10 on the laptop. I do this because I don’t like Windows 11’s desktop environment. The reasons why are probably worthy of another blog post unto itself.

If you’d like to use Windows 10 yourself after October 2025, when Microsoft no longer supports it, you’ll want to enroll in Extended Security Updates. If you don’t do this, your computer will be extraordinarily vulnerable. You can enroll in Extended Security Updates by going into Update and Security -> Windows Update of the settings.

I prefer to have my Windows 10 installation connected to my Microsoft account, but I also have a great deal of respect for people who don’t wish to do this.

Setting up Microsoft products

Once the OS is installed, I proceed to connect OneDrive to my PC. I immediately go into OneDrive’s notification settings and turn off the

Notify me when “On this day” memories are available

setting. I find the “On this day” notifications extremely intrusive, and I think they’re also an implicit violation of the user’s privacy. I think flashing random image files onto a screen—a screen that might be shared with someone else during a work meeting, either because the user is sharing a screen with someone over Zoom or is having a coworker look over their shoulder as they pair-program together—is a terrible design choice. People keep sensitive materials on their computer and back much of it up to the cloud, and showcasing it at random times to onlookers seems like a huge security risk.1

It is astonishing to me that this feature is turned on by default. I would urge whoever is in charge of this decision at Microsoft to change it.

Reconfiguring browsers

I use Firefox for browsing the internet, but on Windows, it’s not enough to merely switch to Firefox out of the gate. You also have to “de-configure” Edge, the Microsoft default browser, so that it doesn’t open up anything by default.

I prefer to keep Edge around, rather than attempt the lengthy process of uninstalling it, because (for reasons I can’t figure out) Edge has better PDF integration than any other browser out there.2 I’ve yet to find a good PDF editor that works as smoothly as the one built into Edge, so I’ve opted to domesticate it and minimize the degree to which it intrudes into other components of my computer.

Upon opening Edge for the first time, Microsoft will automatically log you into an Edge profile associated with your Microsoft account. I first update Edge settings to make them as privacy-conscious as possible, then log out of my Edge profile. I do this so that Edge first syncs my privacy-conscious settings to my Microsoft account, so that I don’t have to mess with them as much when I do a fresh installation later, and then I make it so that none of my activity on Edge after that point ever syncs with my Microsoft account.

I do still have to modify my Edge settings a little bit on each fresh install of Windows 10, even with the above process in place. That’s because Microsoft sometimes introduces new Edge settings in between times that I install Windows on a new computer, and I need to go through them and change those new settings each time. The process I’ve outlined above merely minimizes the number of Edge settings you have to configure across fresh installations, instead of getting rid of the need to tweak Edge settings altogether, sadly.

With Edge successfully de-fanged, I find and install Firefox. I don’t import from a previous browser. I then log into my Mozilla account, which lets me sync my browser and extension settings across computers, and automatically import these things from my previous computer. This doesn’t always work perfectly. For example, you do need to manually change your search engine to DuckDuckGo, if that’s what you’d like to use, and Mozilla doesn’t sync this preference across your computers.

Syncing extensions can be even more error prone than syncing browser settings. I use the uBlock Origin extension, and you have to manually sync your uBlock Origin settings and filter list with the ones you’ve saved in the cloud. Mozilla doesn’t do it for you. Sometimes this process doesn’t work properly, and I find it helpful to keep a local copy of my filter list synced via OneDrive across computers just in case.3

At this stage, I’ve got a browser up and running that’s minimally configured to do the rest of the things it needs to do for computer setup. There are plenty of additional things to configure in Firefox, but they can be deferred for later.

OneDrive, Microsoft 365, and Windows config

Once OneDrive and the initial parts of my browser have been set up, I check with Microsoft.com to remove my old device from my list of registered Microsoft devices. For anyone who hasn’t done this before, you’d go here, log in, and then click your profile picture and go into “My Microsoft Account”. You then go to the “Devices” tab and click “Remove device” on your old computer, if it was registered with Microsoft in the first place. It may not have been, in which case your old computer will not show up under the “Devices” tab at all. If it was, you may also have to remove it from your list of devices connected to the Microsoft Store, which you’ll prompted to check upon clicking the “Remove device” button.

I do this step first to make sure that I’m not removing my old computer from the list when I do this, since the next step will make it harder.

I now change the name of my PC. This can be performed by going into System -> About of the Windows 10 settings. I like to use the schema username-laptoptype-os for the name of my laptop, because it helps keep it apparent when two different “PCs” are present on the same physical computer, which occurs when dual-booting. For example, my Asus Zephyrus G14 (2023) laptop is named myusernamehere-asus-win10 when dual booting to Windows 10, and myusernamehere-asus-fedora when dual booting to Fedora.4

Next, I install Microsoft 365. Critically, this is also the stage at which I remove the previous computer from those signed into Microsoft 365, which may still be listed as a Microsoft 365 login even if it wasn’t registered under “Devices.” To log your previous computer out of Microsoft 365, you go to “Subscriptions” and then click the dropdown menu for “Microsoft 365 apps for your devices.” You can sign out any of your devices here.

If you changed your PC name to be the exact same as the PC name of your old computer, before it had its OS wiped during repairs, you’ll need to sign out of the computer with that name that was used least recently. Sometimes Microsoft.com displays this information, and sometimes it doesn’t. To be safe, it’s sometimes safest to sign your old PC out of Microsoft 365 first, then change your current PC’s name, and then install Microsoft 365 on your new computer, so that there’s no duplicated names.

Lastly, I like to prevent OneDrive from backing up my Desktop. I don’t think it’s a useful thing for OneDrive to be backing up, since the files on there (for my computer) are mostly shortcuts to programs that will be located in different places on different computers.

Part 2: Firefox configuration

It’s finally time for configuring Firefox to my own satisfaction!

There are four extensions I use with Firefox. They are:

  1. uBlock Origin
  2. Firefox Multi-Account Containers
  3. Privacy Badger
  4. Unhook

uBlock Origin is a content-blocker. It’s the most important of the 4 and the only one that I enable in private browsing, since the other 3 can all de-anonymize you. There’s a risk to your anonymity every time you install a new extension and so I take great pains to only install the ones that are vital for my online sanity.

As I’ve mentioned before, I sometimes have trouble syncing my filter list across browsers/computers wth uBlock Origin on them, and so I try to keep a local copy of my filter list saved to OneDrive somewhere. In case that fails to get backed up,3 the most important filter I have is this one:

www.youtube.com##.ytp-heat-map-chapter

It removes the “most viewed” heatmap from YouTube videos. I think that thing is noxious and I never ever want to look at it.

It’s an imperfect solution, since you can still see the words “most viewed” come up when you mouse over parts of the timeline with the highest frequentcy of views. I used to have a filter that (imperfectly) removed those too, but I’ve long since forgotten how it worked and what text it contained.3

Firefox Multi-Account Containers allows you to isolate your browsing activity according to separate profiles. This is less useful for security now that Total Cookie Protection is a default feature in Firefox, but I still find it extraordinarily useful for isolating my logins to various services. The team who works on it is incredible. Fortunately, Firefox Multi-Account Containers syncs really well with your Mozilla account, and usually doesn’t require any configuration when setting up Firefox on a new computer. It only requires configuration when you set it up for the first time ever.

Privacy Badger does several of the same things as uBlock Origin, with a slightly different design philosophy. I haven’t tested whether it syncs very well with your Mozilla account. The one thing I manually adjust (just to be safe) when using it on a new computer is disabling prefetching in the Privacy Badger settings, since both uBlock Origin and Privacy Badger do this, and it’s unclear to me whether either of them is blocking all prefetching, or just prefetching from new domains. I don’t want to block prefetching from domains I’ve already connected to, since that’s a key component of making multi-page applications (MPAs) performant on the modern internet, and it’s a practice I want developers to use more often. I want to encourage within-domain prefetching, not discourage it.

I’m going to trust just one of these two extensions to block prefetching of either variety if I have to trust either, and one day I’ll do enough research to know whether uBlock Origin is doing it right and does permit prefetching for same-domain webpages, or if I have to disable it there, too.

Unhook makes YouTube bearable to use. It syncs really well with your Mozilla account and I never have to configure it upon using a new computer.

The about:config menu and userChrome.css file

Firefox also has several less obvious settings I like to tweak. These can be found by typing about:config in the URL bar and pressing enter.

First, I remove the horrible sound effect which plays when you try to ctrl-f for something and it finds nothing there. The tutorial I originally followed to do this is here, and requires you to set accessibility.typeaheadfind.enablesound = false.

Next, I make it so that trackpad swiping doesn’t navigate back and forth through my browsing history on the current tab. I basically only ever activate this functionality on accident, and it’s infuriating when it causes me to navigate away from a page that I really didn’t want to get reset. A tutorial for disabling swipes can be found here, and requires setting browser.gesture.swipe.left and browser.gesture.swipe.right to the empty string.

Third, I make Firefox show the full URL in the URL bar, rather than trimming away the “https://” that shows up at the start of most URLs. I explicitly want to see that information, since it tells me what kind of connection I have with the current website, and I really don’t like it when I find myself copy-pasting URLs that look different from how they’re displayed in the URL bar. A tutorial to change this setting is here, and requires setting browser.urlbar.trimURLs = false.

Lastly, I get rid of the fade animations that play when you click buttons on the Firefox toolbar. These fade animations were added sometime between May and October of 2025, and they immediately reduced my quality of life while using Firefox by an order of magnitude. I tried to see if there was any community backlash against the change, and in the process was offered a workaround by a member of the Mozilla forums.

To get rid of fade animations, you first need to enable the use of a userChrome.css file. You do this by flipping the setting toolkit.legacyUserProfileCustomizations.stylesheets in about:config to true. You can then create a userChrome.css file using the video tutorial here. Lastly, you add the following code to your userChrome.css file:

menupopup, panel {
transition: unset !important;
}

It works perfectly and makes my mental health soar.

Part 3: Making Windows 10 bearable

For blogging purposes, I find it very valuable to have a ready-made clock with UTC time displayed upon it right next to my regular clock. So I add one! The tutorial for how to do so is the StackExchange answer here.

I then remove web search functionality entirely from the Windows 10 search bar. There’s a tutorial I used to follow for doing this, but I’ve chosen to replicate its contents here in case it’s removed from the internet at some point:

  1. Open the Registry Editor. You can either do this by searching for it in the Windows search bar, or by pressing Windows Key + R and typing regedit in the text box of the “Run” window, which has just opened. Then press Enter.
  2. Navigate to “HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows” on the left side of the Registry Editor window.
  3. If the key “Explorer” already exists below the key “Windows”, click on it. Otherwise, create this key by right-clicking on “Windows” and clicking on “New” -> “Key”. After you’ve entered the name “Explorer”, confirm it by pressing Enter.
  4. Then right-click in the free area on the right and create another DWORD value by clicking on “New” -> “DWORD (32-bit) Value”. Type “DisableSearchBoxSuggestions” for the name and press Enter.
  5. Double click on this new entry and set the value to 1. Confirm the change by pressing Enter.
  6. You can now close the Registry Editor. After a re-login or a reboot, Windows will only search locally/offline and stop showing Bing web results in the start menu. If you want to re-enable this web search feature, undo the changes listed above.

With this complete, I also go into my Windows settings and remove any kind of news or weather from my taskbar, my home screen, my notifications, and my lock screen. I basically don’t want Windows 10 to ever look online, for anything, unless I give it the explicit go-ahead or I’m syncing with cloud storage. My browser should be the only way that I access the internet on a daily basis, not my OS.

Lastly, I go into Windows settings and make sure that nothing runs at startup except for the programs I absolutely want to run at startup. It’s awful for resource usage that so many things you don’t use can run in the background of a computer and that you don’t even realize are there.

Making the trackpad usable

I have very particular trackpad preferences.

I think that most laptops, outside of very cheap ones, have tended to follow Apple’s design choices wherever possible, and that this has led to some horrible outcomes. For example, a common design decision on modern laptops is to make the trackpad horrendously wide, such that the user’s hands must rest upon the trackpad while typing on the keyboard. The laptop then prevents it from registering any input while you’re typing using palm-detection algorithm.

I think that palm-detection algorithms are excellent these days! But I also think they’re not perfect, and they need to be perfect if they’re going to make these large trackpads work as intended. I also find the textural experience of resting my palms on a non-homogeneous surface (like a trackpad) to be really unpleasant while typing.

I can solve the first of these problems using super curtains, a Windows feature that disables part of a trackpad from recognizing initial taps and drags across its surface, while also retaining the ability to detect inputs that originate in areas outside the super curtain, but then move into the super curtain region as the user drags their finger across the trackpad.

The tutorial I use to create super curtains is here. On my Asus Zephyrus G14 (2024), the SuperCurtainLeft and SuperCurtainRight values that I use to make my trackpad bearable are 500 and 2500, respectively. On my much older Lenovo Yoga (I believe it’s the 2020 version), I use 250 and 500. This restricts the active area of my trackpad to be the area just below the spacebar, and nothing more.

I also go into trackpad settings, and modify three and four finger swiping to do nothing. Then I convert three and four finger tapping to both induce a middle-click. I really don’t like trackpad gestures of any kind (in part because I find that I often trigger them on accident), but I do oftentimes miss the middle-click functionality of a mouse, and standard trackpad settings give you no way to replicate it.

Modify the double-click window

Windows is a little absurd with how it handles double click times. It’s clear to me that the double “click” window should be different for double-tapping a trackpad, vs double-clicking a mouse. The former should, for the average user, be larger than the latter. Yet Windows ties those two settings together.

I’ve tested the Windows 10 default double-click settings using an online metronome, since they don’t explicitly tell you how long the window is. It turns out that a double-click activates if you tap at approximately 120 BPM, which corresponds to a 500 ms double-click window. That’s madness, in my opinion. For a trackpad, I think double-taps within a 250 ms window is probably more reasonable, and a 200 ms window is closer to optimal if nearly every single trackpad tap-up event is accompanied by this delay. I also think it’s absurd that Windows doesn’t make it so that the double-tap window doesn’t cause any delays on UI elements where the double-tap behavior doesn’t do anything, but that’s a larger systemic problem.

Update as of 4/22/2026: I was wrong about exactly what the source of the delay for trackpad taps is on Windows. It’s consistently 300 ms long, and I’ve isolated its source to a very particular problem in Windows Precision Touchpad drivers. I plan to write a long blog post about this subject in the future.

The default Windows 10 trackpad/mouse double-click window is at the 5th notch away from “Fast” in the Settings. That is, if you indexed the notches from 1 to N, where the right-most notch is 1, then notch 5 corresponds to a 500 ms delay. I’ve been unable to verify exactly what the other notches mean, becauses from my limited testing I suspect that the scaling isn’t precisely linear in the number of notches away from the right. It appears that notch 3 triggers double-clicks at 180 BPM, which gives me the 200 ms window I’m looking for, so I’m going to use that as a compromise between the double-tap window I’d like and the one I need to stay sane.

Introducing File Pilot to the taskbar

Once OneDrive has successfully synced all files, I can open the most recent version of File Pilot from my cloud storage (I’m beta-testing it and trying to turn it into something I turn to instead of File Explorer out of habit). Once I’ve confirmed it works, I can pin it to the taskbar.

Alongside it, I also pin File Explorer, Firefox, Discord, and Slack, in that order. I may add additional icons to the taskbar for specific computers, but those are the defaults. I prefer to delegate the rest of the things I use regularly to Desktop shortcuts instead.

Part 4: Installing every other program

Speaking of which! In order to pin those programs to the taskbar, I first have to install them.

I install Slack and Discord, and then prevent both of them from running at startup within the settings menu. I also make my Discord status “invisible”, since I see no reason to notify people when I’m online outside of a work context–and even then, the benefits, privacy costs, and potential miscommunications that it can create are debatable. I use Slack for work exclusively, so I don’t hide my online status there, but I’ve considered switching many times.

For both Slack and Discord, I’ll configure the X button to close the application, rather than minimizing it to either the taskbar or tray. It’s maddening that any applications on Windows don’t make that the default behavior.

If I’m on a computer intended to play games, I’ll install Steam and Good Old Games. Of these two I will only pin GoG to the taskbar, because I don’t want the temptation of Steam sitting that close to my regularly-accessed applications (for DRM-related reasons).

When setting up Steam, I’ll remove most of the shortcuts from the taskbar’s right-click menu,like “Big Picture” and “SteamVR,” so that it’s easier to click the Exit Steam button. I also prevent Steam from running at startup, and make the Library page my default instead of the Store.

When setting up GoG, I change the settings to make appear always offline, make my installed games as the default page, and make the X button close the application. Thank goodness that GoG allows this as an option, because Steam sure doesn’t.

I’ll also install Zoom Workplace. I don’t like it, but it’s a requirement for remote meetings with most academic and research colleagues. At time of writing I’m affiliated with Northwestern University, and so I try to access my account via Northwestern’s single-sign-on as fast as I can when I get a new computer so it’s set up when I need it.

The next thing to install is Visual Studio Code. I’ll install SuperMD, SuperHTML (Ziggy installs on its own), and Zig LSPs. I’ll also turn off AI features.

Afterwards, I install Git. During the installation process, there are only three non-default options I select:

  1. Under “Adjusting the name of the initial branch in new repositories”, I select “Override the default branch name for new repositories” and use the name “main” instead of “master”.
  2. Under “Configuring line ending conversions”, I select “Checkout as-is, commit Unix-style line endings,” AKA “core.autosrlf is set to input”. This is described as the recommended setting for cross-platform projects when the developer is on Unix. I choose this option instead of “Checkout Windows-style, commit Unix-style line endings,” AKA “core.autocrlf is set to true”, the option which the Git installer recommends when I’m on a Windows computer. I think my preferred option should be the recommended setting for all projects, ever.5
  3. Under “Configuring the terminal emulator to use with Git Bash”, I select “Use Windows’ default console window” instead of “Use MinTTY (the default terminal of MSYS2)”. I actually use cmd.exe pretty often on Windows despite its drawbacks, and I rarely use Git Bash to begin with. Someone will have to make the positive case to me for MinTTY before I choose this option.

If I have any git repositories I’m using via cloud storage, I’ll right-click these folders and select the “Always keep on this device” option that OneDrive provides. That way, Git doesn’t mistakenly think things have been deleted when they’re actually there; messing this up is a great way to totally break your repositories.

Part 5: Asus-specific additions

My Asus Zephyrus G14 (2023) laptop lacks any button on its exterior to disable/enable its webcam and microphone. I think that’s awful. Lenovo laptops come with this functionality by default, and I consider them the crown jewels of the laptop world for it. Asus should really do the same.

Since they haven’t done the same, we have the pick up the slack for them. I’ve written a custom script that I bind to the “Asus ROG symbol” button on the Zephyrus’s keyboard, and it swaps whether the camera and the microphone are active when run.

(I will probably update this blog post with a full description of how to use that script later; right now I haven’t set it up on my current laptop yet, because it’s a lot of work.)

I bind the script to the ROG key using G-Helper, the open source alternative to Armoury Crate for configuring Asus laptops. It’s really good and I highly recommend it.

… I think that’s everything?

At present, that’s all I can think of for setting up a new computer. I reserve the right to come back to this blog post later and add more items as I think of them. For now, I’ll leave the list as-is.