Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> But I'm going to spend the entire time trying to trick Windows into doing Linux things. Mintty for terminal stuff, VMs or the new Ubuntu mode for Linux software, etc.

Windows is not UNIX and that's its strength. Don't try to coerce it into doing Linux things; learn Powershell and Windows concepts instead. I've recently switched development from Linux to Windows and couldn't be happier.



> Windows is not UNIX and that's its strength.

GNU's not Unix either, come to think of it. :p


Powershell's terminal is just awful.

The best thing Git did was to distribute Git Bash by default.


Let me guess... You don't like the path completion?

The only credible complaint I've heard against PowerShell terminal is path completion. I call it credible, because it's an actual behavioral difference with meaningful impact. Myself, I actually prefer the Windows path completion, where it fills the entire path and hitting tab again will cycle through the available options. Nothing drives me crazier than going into a directory generally knowing what I want, typing in a few letters, hit tab, get a subset of the path completed, think about what's there and where I want to go, figure out the next letter I need to type, hit tab again and hope for the best. When in reality there's only a few options that match my original text, and just hitting tab to cycle between them is pretty ergonomic. And shift-tab even cycles in the other direction, for those rare times when there actually is a huge list and you hit tab a little too quickly.

But for those who prefer the other way for some reason, there are projects like PSReadLine:

https://github.com/lzybkr/PSReadLine

EDIT: Found the previous discussion.

https://news.ycombinator.com/item?id=11865516


The PowerShell terminal is also incredibly aesthetically grating. They decided to take the old aliased bitmap font and fixed width window from cmd.exe and layer on a white/yellow/red on blue color scheme.


You can change the screen buffer size, font, and colors of Windows terminals. Right-click on the title bar, select "Properties...".


It sucks out of the box though, which is true of so many things in the Dev experience on Windows. It takes so long to tweak every little thing and download every missing utility.


True, but terrible defaults are terrible defaults. And when I find myself using someone else's machine, rather than the comforting glow of a familiar terminal I'm thrust back into the harsh reality of Microsoft's poor design decisions :/.


Eh, in this case one person's "poor design decisions" is another's "my inbox becomes hate incarnate if this 10+ year old thing is ever changed".

https://xkcd.com/1172/

The best approach I've seen isn't to change defaults, but rather to make porting customization painless. And that's definitely something that can almost always be improved. I've actually been recently impressed by Samsung in this regard with their "Smart Switch" phone app. Super simple to transfer a lot of the stuff you care about from one phone to another, including sourcing from iOS and even Windows Mobile!


> font and fixed width window from cmd.exe

Both use console host. Before it was horrible, but they've improved it recently: https://technet.microsoft.com/en-us/library/mt427362(v=ws.11...


The Windows-style path completion is available with Zsh, I have this in my .zshrc:

  zstyle ':completion:*' completer _complete _match
  autoload -Uz compinit
  compinit
There are many other options available with 'compinstall', but I set this up years ago and don't remember what I needed to choose. It's probably also available in Bash nowadays.


To me Powershell is OK but if you go in expecting it to behave like bash you will be in for a lot of pain.

The most annoying issue I have run into - try to delete a node_modules folder with powershell. It's painful.


> To me Powershell is OK but if you go in expecting it to behave like bash you will be in for a lot of pain.

Completely agree. PowerShell is an object pipeline, which means that its axioms are different than a text pipeline. If you come in trying to treat it like a text pipeline, you're not going to find the tools you expect.

> The most annoying issue I have run into - try to delete a node_modules folder with powershell. It's painful.

I was curious, so I just did the following in PowerShell v5:

* Create a new, empty directory.

* Retrieve NPM modules (`npm install browserify gulp`).

* Ran `rm .\node_modules -Recurse`.

* Directory is gone.

What has your experience been?


>Windows is not UNIX and that's its strength.

Microsoft seems to disagree, which is why they felt compelled to include a Linux sub-system in Windows.


And does the existence of Wine prove that Linux is inferior? It's just nice to have a way to run software written for other systems. Doesn't mean you think that system is superior.


There is a small difference in first vs third party here. Wine is more analogous to virtualbox. WSL AFAIK was done to attract developers.


I don't think they imply that windows is Unix (of which is most definitely is not), but rather that one of its original design goals still works. People forget that the original NT was designed to be agnostic to the user-space API.

Random link that mentions the OS/2 subsystem.

https://brianreiter.org/2010/08/24/the-sad-history-of-the-mi...


> learn Powershell and Windows concepts instead.

And how does one exactly do that? Because I once tried to learn what a "home group" was and to my surprise it wasn't defined in precise terms anywhere. Not to mention lower-level stuff such as the init system.


> Not to mention lower-level stuff such as the init system.

The init system on Windows is robust enough that 99.999% of users never have to consider it. There is a UI to control what runs at startup, and that suffices for most things.

Windows has services of course, and there is a dependency graph built up of how they initialize, and for a huge % of people developing services, this also doesn't matter. Set what dependencies you have, if your service can be loaded on demand or if it has to be always on, and have at it.

More complicated services do require work, at which point documentation can be dug into.

> Because I once tried to learn what a "home group" was

Bing actually provides a great answer box on this. (search term: windows home group) tl;dr a group of PCs on a LAN that share out file folders (video, music, etc) and printers. Each computer can choose what to share. A PW is requested upon joining a home group. The first non-ad result on Google also explains it pretty well. :)

A protocol spec is also available: https://msdn.microsoft.com/en-us/library/ff362232.aspx

(found by searching home group msdn)


Here's the first Google result for "Windows homegroup" https://support.microsoft.com/en-us/help/17145/windows-homeg... . Microsoft is famous for its meticulous documentation compared to other closed sourced systems and is often even better than open source systems where developers will not document and instead tell you to just read the code.


It's also a weakness as most developers can't switch over to the Windows eco-system at the drop of a hat.


Well, I was careful to write cross-platform C++ code from the start, meticulously isolating the few platform-specific parts.

Yes, it's a lot to learn at start, but Powershell is rather user-friendly, so it helps. Yes, I work slower now than in Linux, but I'm quickly picking up the pace and it's paying off. Plus, there are many hands-on howtos for specific tasks I need to accomplish.


> Windows is not UNIX and that's its strength.

This claim needs explainatory details, citations, and maybe even context.


> Don't try to coerce it into doing Linux things; learn Powershell and Windows concepts instead.

Also change to IIS web server, because it's better.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: