If you do tasks that are well supported by your OS, your experience will be mostly good. Don't run servers on MacOS, don't develop on Windows and don't game on Linux. Or do it anyway and deal with the unpolished aspects of it.
If you do tasks that are well supported by your OS, your experience will be mostly good. Don't run servers on MacOS, don't develop on Windows and don't game on Linux. Or do it anyway and deal with the unpolished aspects of it.
There's certain things easier on one or the other, usually caused by silly hardcoding of paths (or other OS-specific assumptions). I've run into this with python packages on Windows for sure.
My Windows dev is mostly limited to .net, and I've been writing cross-platform for years (first via Mono, now .net core / .net 6). Most challenges with cross-platform .net are caused by hardcoding Windows-specific paths and backslash (vs using Environment.* and Path.Combine()), and secondarily by using win32-specific things (eg: registry).
Tip for Windows dev use: install Windows Terminal [1], scoop [2], oh-my-posh [3], and busybox [4]. Makes the cli so much more usable, at least for someone like me with linux CLI muscle memory (ls, grep, etc).
I've found the combo of busybox utils and PowerShell is very productive. I nearly always have at least a couple terminal tabs open, and I'm nearly 50/50 of whether I use cli or explorer to browse or operate on files.
Regarding PowerShell, I've found that it has become incredibly customizable these days. For example, I just enabled Emacs keybindings for it a couple days ago. So it feels almost like a bash terminal.
I think one of the main differences is that scoop will install for the local user. Which means you don't have to install stuff from an admin console (I think you can do that with choco but its not the default).
I also just checked to see what apps I've used in scoop vs choco and the only one that choco doesn't have (that scoop does) is wsl-ssh-agent.
scoop had all the apps I install through choco.
I'm sure theres more differences that go a little deeper, but as a simple end user, those are the only things I've noticed
The entire operation of it is simple but powerful: everything is based on a manifest file [1]. The official manifests are in git repos, but you can also install from a local file or a gist.
Chocolatey's usage of nuget packages while also basically just running the app's normal installer is weird and results in all kinds of situation where versions don't match, chocolately upgrades don't do the expected thing, etc. All these problems just don't happen with scoop (at least not in my years of experience with it).
Scoop apps install to ~/scoop/apps/<appname>/<version>/ and then get a symlink ~/scoop/apps/<appname>/current/, while also getting a ~/scoop/persist/<appname>/. It's just very elegant.
It adds "shims" for any executables in ~/scoop/shims/, and because that's the only directory added to your path (when scoop is first installed), newly added apps "just work" in all your open terminals/apps/etc.
It also seems faster. "scoop install <appname>" and a few seconds later you can use it. Chocolatey usually does the UAC prompt stuff and generally just feels clunky by comparison.
[1] https://scoop-docs.vercel.app/docs/concepts/App-Manifests.ht...
I think HN has a tired circle-jerk around hating Windows but ultimately most people use Windows for a reason, and it's not because it's a good development environment: it's because it just works and if you're a normal user you never have to open a command line.
Then there's the filesystem. It just works. Permissions are easy to grok and (most) error messages are clear about what's wrong. Everything being a file also means I use the same tools to: - investigate bugs in source code - check what processes are using what ports, files, sockets, etc - find files - find things in files
there's very little that can't be done easily with [grep, cat, ls, mv, cd, echo, curl].
Also, manpages are incredible. All my important documentation, right there where I'm doing my work.
It's really less about what's possible on windows / Linux, and more about how Linux lets me do things my way, which means I can consistently improve my methods.
Also, all the good Linux stuff is free. Both kinds, so not only can I use most of it without worrying about the cost, I can fix it when it goes wrong or modify it to be more like what I want.
I could go on and bore you more, but those are the key points.
This is the core of it for me. Half the time I don’t even need to write a shell scrip, I just fling it straight onto the command line if I’m doing a quick one off task.
For me and windows it was when it updated a hibernating unplugged laptop overnight causing me to loose several hours of genealogy work. I had been using a new to me application that hadn't been doing any sort of background saving while I put in information. My had some niblings come over so I shut my unplugged laptop thinking id get back at it tomorrow. The next day when I opened the laptop I was greeted with the dreaded "Hi" screen, and my previous days work was gone.
Windows also likes running the fans on my laptop way more than it should. Where linux keeps them off for most my typical work.
Neither Windows or Mac have a Tiling Window Manager, for me not having to manage windows is a dream.
Running docker as a first class application is nice.
But linux has its issues too. Occasionally an update really borks my system and yes it is a pain to find what went wrong.
I also love vim and emacs. They work better on linux.
To be fair and with no personal offense intended, this sounds more like a case of PEBKAC rather than specifically a Windows deficiency.
To be clear, I agree Windows's forced, silent autoupdates and reboots are crimes against humanity, but "losing work I did not save" is hardly something that only applies to Windows and is a lesson we all learn the hard way eventually.
Always save, and if you think you saved, save again. Probably hit CTRL+S several times too for good measure. And keep backups; multiple, good, working backups.
Worse is technologically speaking this shouldn't even happen. Windows should be able to take a running application, save its state, do its update, reboot, then restore the application, without loosing a single byte of application state. Microsoft's lack of compassion for end users in this regard comes directly from it not effecting their bottom line.
To go back to your example, you lost your work after Windows decided to silently update and reboot overnight. Now the million dollar question: Why didn't you save your work before you left?
A blackout or a drive crash or any number of failure cases could have happened instead and you would have still lost that unsaved data, too.
You're going to eventually lose any data you do not explicitly save. To put it another way, any data you don't save should be data you don't mind losing.
Windows 10/11's autoupdates are fucking nonsense, but data loss of the kind you're speaking of is by far a case of PEBKAC in my opinion. If you lose data overnight, that's because you didn't take basic steps to save and protect your data.
GP said he was using a laptop that was unplugged. A blackout wouldn't have made a difference. And in the case of a drive crash, saving (locally) wouldn't have helped.
I think automatic updates really deserve a fair share of the blame here.
Because humans are not perfectly consistent robots.
Any system design or paradigm that expects us to be is broken and user-hostile.
For myself, I have Emacs configured to autosave whenever I change focus or documents. I also commit and push whenever I make a meaningful step of progress.
For normals, built-in macOS apps like TextEdit have autosave these years. Pair that with Time Machine and an SMB NAS (see https://support.apple.com/en-us/HT202784), and data loss is pretty darned rare in practice.
If the NAS has a cloud backup system, you'd really have to try to lose data.
It's specifically a deficiency of the OS when it decides that the work you purchased the computer for is not as important as the work that Microsoft wants the computer to do.
No vendor, OS or otherwise, should decide that using the consumers computer for their (vendor's) own purposes is more important than the work that the computer was purchased for.
> To be clear, I agree Windows's forced, silent autoupdates and reboots are crimes against humanity, but "losing work I did not save" is hardly something that only applies to Windows and is a lesson we all learn the hard way eventually.
"Losing work I did not save because I forgot" is different from "the computer decided to discard all my work while I was working"
If you're in the middle of driving to work, and your car decides to pull over because Ford wants to do something is very different to driving to work and running out of fuel.
If you forget/refuse to fill fuel, that's on you when you get stuck. If you did everything right and still the car pulls over because the manufacturer wants to do something, that's not on you.
However, I will say that Windows -> Mac is pretty awesome. IMO, the main benefits were the commmand line experience. Installing Homebrew on Mac was so much nicer than pointing and clicking everywhere in Windows to do things.
I see that Windows is getting better with their Terminal app, but the MacOS functionalities beat it.
If you value doing things from the keyboard rather than a mouse, then you'll see value in switching to MacOs. Otherwise, the appeal is rather muted.
No, that's exactly the selling point.
Yes, you could write some hand made program. And piping software together IS a kind of hand made program. It's just going to be far faster to write that pipeline, than to write a custom program, deploy, and run it.
And the pipeline might be much much faster. A classic example:
https://adamdrake.com/command-line-tools-can-be-235x-faster-...
I suppose the speed of implementation depends entirely on your available experience. If I were to try to reproduce the data processing pipeline in your link, it would take me hours to get to this line "cat *.pgn | grep "Result" | sort | uniq -c", and would probably never be able to get to any of the further steps.
Meanwhile, with my experience, I would've been able to write a 5 minute C# program that does exactly the same data processing. I don't know if it'd go down all the way to 12 seconds of execution time without serious effort, but I'm pretty sure it would handily beat the version I could write using the commandline.
If this task is a single time kind of thing, the C# program more than suffices. If it's a many times kind of thing, I'd strongly prefer having it in C# code, so I can more easily adjust it and make it part of a larger automated workflow which will mostly consist of other C# code.
WSL2 + Docker gets you really close to the development experience of Linux while maintaining your sanity.
Examples you can expand on?
But the combination of key shortcuts and mouse gestures makes it feel really nice to use in practice. Workspaces work like I'd expect, as do Alt+Tab and Alt+`. The built-in apps and settings have a level of consistency the Windows team could only dream of right now. Notifications in Gnome are fantastic. I could go on.
Form factor dissonance for another. GNOME clearly targets the mobile form factor, and it fails me for all the reasons Metro in Windows 8 failed me because guess what: I'm using a desktop/laptop, not a tablet/phone.
I had issues with ubuntu's unity back in the day and I switched over to i3wm, but I didn't find I used tiling enough to make it worth losing the usability of a desktop environment
I think it's more fair to say all form factors are treated equally, to the possible detriment of focusing exclusively on desktop. I think Gnome does well and is really versatile no matter which form factor you use, and I didn't have much issue moving from Gnome 2 to 3, or Windows to Gnome, or OSX (at the time) to Gnome (I've gone back and forth a lot over the years).
For me, workspaces (which Windows lacked natively until very recently) and Alt+Tab/` are how I get around.
The customizability argument is a solid reason to dislike Gnome, but not for all time. Things do get better each release. Well, except for extensions, which always break.
I'm trying to be as unbiased as possible. As good as linux is and as much improvements that have been made over the past decade or so, Windows and OSX still have the superior GUI. Just being honest about it.
The whole system control panel has been dumbed down so much, that it actively tries to prevent the user from finding certain settings. The system still suffers from simply doing everything slower than GNU/Linux. After logging in, it acts as if all is loaded and ready, but when one wants to do something, things still get loaded and icons added "next to the clock". Right click in file browser still feels slugish. Windows stops me from doing the simplest things by asking me silly questions, of whether I want to do, what I just told the system to do.
Very specific to my systems: The closed source graphics card driver crashes often, while the open source drivers have not a single time crashed noticably on GNU/Linux. On Windows this is noticable, because the whole screen freezes, until the driver has restarted. Never happened on any of my GNU/Linux systems.
It is simply not funny or justifyable any more.