Ask HN: Must do's and must know's when switching to Windows?

33 points by Tenoke ↗ HN
I am switching to Windows from Linux (and MacOS on my last work laptop). It used to be my main OS years ago, and I think the time has come for another try. I know I won't be especially happy with it, just like I am not especially happy with Mac and Linux, so I am looking for anything that can make the experience more pleasant.

57 comments

[ 5.2 ms ] story [ 110 ms ] thread
You'll be glad to know Windows also has a "Greengrocer's Apostrophe" key
Maybe you'll find something useful in this post: http://f5n.org/blog/2016/tools-windows-2016/ - it's the stuff I use to not tear my hair out when I need to get something other than gaming done. I think it's missing VS Code, which was a pleasant surprise.
Tried this recently as an exercise in broadening my horizons.

- Expect not to be able to SSH into your machine, for example when you really need to remotely make that git push you forgot before you left work.

- Expect either a very slow unix emulation through Cygwin, or a very glitchy one through the new Ubuntu subsystem for Windows.

- Expect installing software to be a royal PITA, and expect to start trusting binary blobs from random vendors because that's just how software is delivered on Windows. Expect every single piece of software to have its own update system, each of which will notify you separately when updates are available and have their own varying degrees of reliability in performing the update.

- On Windows 10 you can not permanently install unsigned drivers even if you really, really want to. The closest you can get is booting up in a one time development mode which is disabled the next time you reboot, or enabling a test mode which watermarks your screen. Very annoying if you have esoteric or bespoke hardware, and I don't like being told what I can and can't do on my own system.

Other than that, my major issues - common to Windows and every linux DE I've tried - were with running on my MacBook with retina (high DPI) display. It's a 1/3 chance for a given piece of software whether it will gracefully support the higher pixel density, will display as a tiny window with unreadable text, or a combination of both. Lack of smooth zoom and scrolling with the trackpad was also annoying, though not a showstopper.

The Windows equivalent of SSH is Remote Desktop/RDP. I've used RDP from an iPad to a Windows 10 box and it was surprisingly good. Between the RDP client and the Windows box, something realized that I was on a machine without a keyboard and presented the Windows tablet stuff through the RDP connection. In other words, my iPad looked and acted like a Surface when I was connected to the Windows box.

HiDPI is a mess on Windows. Apple got this right and everyone else still seems to be playing catch up.

For SSH: https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win...

For "unix", you can actually run linux on windows now: https://msdn.microsoft.com/en-us/commandline/wsl/install_gui...

If you want to use windows store, it acts like any other walled garden store regarding "binary blobs", but personally I have never used this. The only software I have in windows is Steam which acts like an "app store" for games.

Now, I use Linux almost exclusively (there are one or two games I boot my gaming machine to windows to play), but it's actually gotten better over the years, not worse.

Just remember to block all the telemetry stuff in your firewall. https://github.com/crazy-max/WindowsSpyBlocker

> If you want to use windows store, it acts like any other walled garden store regarding "binary blobs", but personally I have never used this. The only software I have in windows is Steam which acts like an "app store" for games.

Have you ever used an installer? Because that's a binary blob.

It is pretty easy to SSH into a Windows PC. Install Cygwin, install OpenSSH, run the ssh-host-config script as an admin, and open the port in Windows Firewall. I use OpenSSH and rsync to transfer data from a Windows web server to a Linux database server, initiated from the Linux side via cron and logging into an Active Directory domain account using RSA public key authentication.

I have never noticed any performance problems with Cygwin.

Then again, for the given scenario, you could connect to the Windows PC via RDP.

> I have never noticed any performance problems with Cygwin.

What have you been doing with it? Even just running a configure script is very noticeably slower than on Linux or OS X. You can actually see the pauses while it executes each test binary.

Aside from the ETL stuff I mentioned, we also use Cygwin for the X server (although we're phasing that out in favor of something more multi-user friendly like X2Go) and for Unix tooling that hasn't been ported to Windows (mostly bioinformatics stuff, and which is becoming less and less of an issue).
If you are a programmer, then I will suggest a few do's:

- Install git bash for command line.

- Install ConEmu: a windows console emulator [0]. This takes console to next level on windows. I highly recommend it.

[0] https://conemu.github.io/

Installing WSL and learning PowerShell properly are much better alternatives to the above.
Break your habits. Windows 10 has a very specific workflow that is highly efficient, trying to shoehorn Linux, Mac or Windows 7 workflows into it will frustrate you.

Learning powershell is part of that.

*highly efficient meaning you stick to the full Microsoft-paid stack.

Otherwise, not so much.

* VSCode: open source, multiplatform.

* Powershell: open source, multiplatform.

* .Net: open source, multiplatform.

* MSSQL: running on Linux, but there's always Postgres.

* Clang: works beautifully on Windows.

* Node: first-class citizen.

That statement is nothing more than dogma.

> * Node: first-class citizen.

Yes, but what does it help when 99.9% of Node deployments is on *nix and they don't match the Windows dev environment 1:1?

That's the worst problem with doing dev work on windows - it's so unlike your deployment environment.
True. Docker helps with that, though.
I've had way, way, way more problems deploying Node on all the various and fragmented *nix distros than Windows, since none of them match the dev environment 1:1 either.

As a matter of fact, just setting up Node on my dev machines is way simpler and easier on Windows when compared with Mac or Linux. It's the same on every Windows box - download the Node.js installer, run it. Done.

Meanwhile on Linux and Mac I have to jump through hoops and deal with things like package managers not being up to date, Brew getting broken after updates, lack of standards for installing apps, installs just not working, no easy upgrade path, etc.

Honestly, if I have to type out any commands to install stuff then the situation is already fucked. Commands that I don't run very often are subject to being forgotten. Then when I go to do an update, I have to remember how I installed it in the first place or I have to find some tool to completely clean it off my system (or I have to use Node to update itself with something like https://github.com/tj/n, which was invented for this exact situation.)

> That statement is nothing more than dogma.

And this statement is nothing more than a mischaracterization.

MSSQL: "running" on linux. If you think anyone runs business critical code that uses MSSQL on anything other than windows servers I got a bridge I'd like to sell you , and the "open source" version of .NET is laughable, and already way behind the MS version. Yes, VSCode is actually wonderful -- I use it daily on my machine! Grouping VSCode with the rest of these (it's telling that you placed VSCode as your first example) is a little disingenuous, considering it was built using open source technologies (primarily, electron), and none of the rest of the traditional Microsoft stack.

Node being a first class citizen? That's news to me, I need to check that out. Last time I tried to develop any serious node application and deploy it (a couple weeks ago, if my calendar is right) it was still downright abysmal.

Clang working on windows is not surprising, being that processor architecture is what matters more in that world, and not so much operating system.

Got any better examples?

And expect to re-learn powershell every time you need to use it. What's the less-than operator again?
-lt Which is short for..."less than"

Would you care to guess what "greater than" is?

> specific workflow that is highly efficient

That's pretty subjective, right? I think plenty of folks would argue that they have a highly efficient workflow on other operating systems already. I would say the ability to pipe things around in UNIX is pretty efficient, or macOS' ability to drag almost anything almost anywhere is pretty efficient. Other than PowerShell, what makes Windows so efficient for you?

The small things that are generally a result of Windows trying to get out of my way. E.g. Launching or switching to pinned apps with Win+Number.
- If you miss Bash, lookup "Linux subsystem for Windows"

- The command line is much improved. Look through the properties to see what new options are available (text wrap, copy/paste, etc)

- If you're getting a laptop, pay a lot of attention to the trackpad. Windows laptops have a huge range from unusable to really good.

- If you're a developer you owe it to yourself to checkout the development tools like C# and Visual Studio, if only to set the bar for good tooling in your head regardless of what environment you actually program in.

- Check out the modern Windows 10 apps in the store. Mostly garbage but I regularly use and prefer a number of these to their web equivalents, e.g. Microsoft Groove, Netflix/Hulu, etc.

- When I got a PC, despite not gaming for a really long time I've gotten back into it. It's amazing how many wonderful games there are that are up my alley now-a-days, e.g. Broken Age, Firewatch, N++, Obduction, etc. If you've ever been a gamer, give that world another go.

- Get a great, high-dpi display. Windows support for it is fantastic and all those that say otherwise are crazy.

- If you're sufficiently nerdy and end up having a house full of Windows machines, you can invest in a dedicated server to handle things like a central file server and backup. Windows Server Essentials can make for a fun, accessible-but-still-nerdy project.

- If you're super concerned about privacy there's some reading to do to turn off all the new telemetry in Windows 10. I don't bother with this.

- Microsoft Office is best on Windows, and cloud support is better than ever. I enjoy using OneDrive and OneNote everyday on both my PC and iPhone. Give them another go if you gave up on them while using other OSes (Outlook on Mac is particularly awful).

- Windows is so fucking crazy keyboard accessible. Going back to using Windows involved me unlearning some of my bad habits from Mac.

- Windows 10 can be a little buggy in surprising ways. I had to reinstall at some point because the start menu broke. Seriously. And I tried really hard to fix it without reinstalling. Just keep backups and it should be fine, it's not way buggier than macOS or Linux, just older versions of Windows.

- Set "Developer mode" http://www.hanselman.com/blog/Windows10DeveloperMode.aspx (does a bunch of useful things like turning on file extensions in Explorer)

I really recommend ninite.com as the first page you visit after installing Windows. Check all the programs you need, and you will get an installer for everything, without any bloat (toolbars, etc). You can re-run the file at any time and it will also update everything that has an update
Windows is case INsensitive. Just merged two repositories accidentally because of that.
(comment deleted)
so is OS X by default:

     $ cd /tmp
     $ mkdir Abc
     $ mkdir abC
     mkdir: abC: File exists
So, whats the best windows ssh client these days? Still putty ? bitwise? other new hotness?

I've been getting pretty frustrated with my new mac and im supe r tempted to try out a Razer Blade.

Xshell, fast, responsive and reconnects quick after wake-up.
I belive you can ssh without any troubles using Bash on Ubuntu. If I really have to start using PuTTy for my ssh needs, I am going back to linux immediately..
Yep, ssh works out of the box with WSL.
I was happy with 'SmartFTP', it's tabbed ssh/sftp.
Why not just install Linux on your Razer Blade?
You could check out WinSSHTerm, a wrapper for PuTTY
A few of my must-have apps:

Classic Shell (simpler start menu)

7-zip (lzma, etc.)

SyncBack Pro (local/s3/on-insert backups)

JetAudio Plus (BBE harmonic extrapolation mp3 HF restoration)

USBDLM (external hdd serial # based drive letter assignment)

I don't use Windows very much, so I don't have a lot of recommendations, but here are a few.

As another commenter said, Windows has its own way of doing things and expecting it to act like Linux or MacOS will just frustrate you.

My recommendation would be to, if you don't build the machine yourself, buy a Microsoft Signature PC. These don't come with all of the crapware that Windows machines tend to come with.

If you decide to install the OS on an existing machine, make sure you find the appropriate network driver and save it on a USB stick first. This is probably the only driver you will actually need - once Windows can connect to the network it can download the drivers for everything else from Windows Update.

Some Windows stuff doesn't work as well as the Mac and Linux equivalents, and vice-versa. The built-in MacOS VPN client and the NetworkManager StrongSwan CPN client are both a lot better (for me, anyway) than the one in Windows 10. On the flip side, accessing network files (through SMB, of course) is lightyears beyond the way Linux and Mac do it - UNC paths are at the top of my list of things I miss about Windows.

I have both Windows and Linux installed on this machine. I try to stay away from Windows for anything closely related to programming. It's a pain in the ass. Once you have to touch the terminal, things start to get messy, and it's hard to ignore the terminal when programming. Granted, I use the terminal more than the average coder, but I still would never touch it. That said, to answer your question, you probably want to install the Bash on Ubuntu on Windows thing, which should allow you to run git, bash, etc. on Windows without having to use cygwin.
Do not use or even rely on windows file-history for backups!

It can and does fail silently. (e.g. with too long path names or simply no backup drive attached in a long time)

I am very happy that I am the first one to comment here about https://www.listary.com/ which is the best suggestion which again, I got here. Install it.
Yes. Listary is the one thing I miss from Windows after I switched to Linux Mint. (well, that and running Foobar2000 natively)

Also I wanted to mention 7+ Taskbar Tweaker (http://rammichael.com/7-taskbar-tweaker), which is a fantastic little util that helps you make your taskbar just the way you want it. Mousewheel over taskbar for volume control, middle click closes programs, etc...

Thanks! these things make me feel like God!
(Assuming Win 10)

- If you have a HiDPI screen, you may run into problems with older programs looking blurry. The fix is to right click on the .exe, click 'Properties', go to the 'Compatibility' tab, and check the box next to "Disable display scaling on high DPI settings".

- File extensions are hidden by default in the file manager. To turn them on, open File Explorer, go to the 'View' tab, and check the box next to "File name extensions".

- Use a text editor like Notepad++ or Visual Studio Code which lets you switch back and forth with your line endings and encodings; Some editors coughNotepadcough add a BOM to the front of your unicode documents. (As an aside, I've been using the FTP plugin for Notepad++ lately, and it is just a pleasure to use.)

- Between Powershell and WSL, there's rarely anything you can't do on the command line as long as you're willing to code switch a little. In particular, WSL works great for SSH. Cmder is a wrapper around ConEmu (mentioned elsewhere in the thread) and makes for a great terminal environment.

- Chocolatey is the closest thing Windows has to a package manager. (I'm still hoping that OneGet becomes a thing.)

- Other recommended programs: Everything search (life changing, bind it to a hotkey and never look back), Sumatra PDF, Glasswire, CCleaner, either Irfanview or Xnview, WinDirStat.

Curious if anyone has used this at Github alirobe/reclaimWindows10.ps1 And what they think. I wish Redmond would give older laptop users an option to turn this off so it wouldn't spin up my hard drive. If I move to Linux this will be the reason ! https://gist.github.com/alirobe/7f3b34ad89a159e6daa1
I'm using a MacBook Pro with Windows on it as my main development environment except for iOS native stuff obviously.

1. install chocolatey https://chocolatey.org/, and install everything with it

2. install conEmu for a decent command line

3. install git for windows, which comes with a bash shell that brings you all the linux commands, inlcuding ssh.

This brings a Windows PC relatively far. You can even get ssh-agent working with an according .bashrc script (along the lines of https://github.com/joaotavora/holy/blob/master/share/zsh/ssh...)

This does it for me to do node / web-dev / java/ android centered development, I prefer it over macOS and Linux.

Things I do not use:

1) Cywgin. Quite the behemoth, and I get by with git bash just fine

2) The Ubuntu Subsystem. I tried it, had trouble with ssh stuff, seems not ready yet...

3) putty. the open-ssh that comes with git is better and closer to linux.

  >> 3. install git for windows, which comes with a bash shell that brings you all the linux commands, including ssh.
Thank you!

I often wished that each HN user got one '10x upvote' a week. I would give it to you this week.

- Switch all your search settings to google, or something you deem reliable/less spammy. Most installs start with Bing or Yahoo which are way more ad oriented over what you want.

- Install an anti-malware program for when you do get malware.

- Install adblock plus, or other recognized ad blocker this will reduce your malware infections.

- Be VERY VERY WARY when you download files and install software (especially if some web popup says you need some media player or driver update). Make sure you are getting any software from legit sites (which bing and yahoo don't necessarily put high on search results). When running installer be wary of the ride-along installs of additional malware (changing search settings, toolbars, dubious security shovelware, etc.) sometimes you have to check or un-check boxes cancel install dialog before the real program install dialog, etc.

- Decide whether you like the pre-installed anti-virus, want to un-install and activate windows defender, or get another 3rd party anti-virus. Usually the co. who pays the PC manufacturer the most gets their AV installed - doesn't mean its good.

- Check the installed browsers and remove pre-insalled unwanted plugins or extensions.

- If you depend on PDFs just working make sure whatever PDF solution in your machine works for you, might want to switch to Acrobat Reader if it isn't Adobe.

- Learn how to invoke the task manager (control-alt-delete) shut down tasks, restart the system in safe mode etc. Some malware will thwart progress without knowing these things. - A second computer and google will help get you out of a lot of these situations.

- Any pop-up official looking message saying "you" are in trouble, your computer is infected - call this number, etc, are likely scams, be prepared to see that stuff too.

Think of it this way - now you will have stuff to talk about with all your friends who use Windows.

Random advice:

- You really want to be on windows 10, not 7. It's better in all ways but one to 7. The one is the forced updating. To avoid having updates forced on you in the middle of a day, give windows a chance to do updates by shutting down every once in a while.

- Settings are spread across the settings app (start), the control panel and various control applets (right-click on start), the registry (windows+R, regedit <enter>) and files on disk (like the hosts file in windows/system32/drivers/etc). Honestly, it's a mess, and google is your friend. It bites you in the beginning, but once set up it really doesn't matter.

- Secondary screens: windows+P switches modes (mirror, second-only, ...). Saves you from unplugging and replugging cables with your fingers crossed. Mixed dpi is a mess, still. You can configure the scaling of different screens separately from display settings, but apps which haven't been updated (properly) for compatibility with mixed dpi look blurry, tiny or huge on any screen that wasn't the primary screen when you signed in to windows, and sometimes look off even on that one. This is getting better, but still a pain.

- People will advocate the linux subsystem for windows, and it's great, but it lives in its own walled garden. If you want access to linuxy tools from the regular cmd.exe consider installing something like msys2 to get the basics in your windows path. Or learn powershell.

- Learn the shortcuts to manage your windows / virtual desktops. Windows is pretty good at managing windows. https://www.thurrott.com/windows/windows-10/4915/windows-10-... (props to Paul Thurrott for his many awesome tip articles.)

- Be more careful where you get software from. If you were last a windows user in the era of download.com and the like, forget about those sites. They're all malware-ridden. Only get software directly from the vendor's site. Also, ninite is pretty good to get a basic set of software going. You don't need a third-party anti-virus, the baked in one is good enough.