Hacker News new | ask | show | jobs
by nhooyr 1219 days ago
He's not wrong. Certainly when it comes to the full scope of being a programmer, Linux and BSD are your only real options. You can't easily add a new filesystem or screw with the kernel on macOS/windows without having to buy hundreds of dollars worth of their books and attend conferences.

There isn't really any good detailed up to date documentation online about either. The docs for linux/bsd aren't perfect either but at least there you can always fall back on the source. That makes a massive difference.

For example, one of the reasons I switched from Java to Go back in the day is that I could actually read the source code of the APIs I was using. So I could fully understand the standard library whereas in Java it was all obfuscated bytecode. I'm not sure if the situation has changed with OpenJDK but my point stands, an open core system is far superior platform for learning.

7 comments

It's not that Linux/BSD don't offer the most freedom (though as many have pointed out MacOS is essentially BSD with an Apple WM/GUI). It's the snobbishness of saying 'only ____ makes you a TWUE PWOGWAMMER'.

You can see this to some extent in other professions. Cardiologists and neurosurgeons get paid big bucks because their job is life or death stuff and requires skill and innovation. But would you want to work with a cardiologist that goes around sneering at every other kind of medical professional and saying they're not real doctors? Of course not, because they're assholes and when people like that screw up they'll blame their colleagues or patient rather than admit fault.

Back in the tech context, you can pursue authenticity into absurdity. You're not a real programmer unless you use (language). You're not a real programmer unless you contribute the language. You're not a real programmer unless you get into kernel hacking. Sure, you call yourself a programmer, but do you even assembler? Programming? Sorry, I design chips. Chips? Do you even basic circuit designs. Me, I roll my own capacitors built from carbon nanotubes...and so on up through materials science, physics, and mathematics.

Well, you cannot directly “screw with the kernel” on Windows. I am not sure how that is keeping you from growing as a developer exactly though. You can write your own kernel from scratch using Windows as your host platform. And, of course, you can build a filesystem to use with Windows. You can even make it Open Source as well which many have.

If you do want to “screw” with the system on Windows, one option would be to replace the MS stuff one DLL at a time. You might take a DLL from ReactOS for example and make it work with your version of Windows, extending or altering it as you desire.

> For example, one of the reasons I switched from Java to Go back in the day is that I could actually read the source code of the APIs I was using.

What APIs were you using? I haven’t used Java in a while but one of the main attractions for me was that I could download and read the source code. (I’d been in the closed-source Microsoft ecosystem before that.)

of course they’re wrong, there are thousands of competent programmers working on windows and macos, I love linux I just hate this kind of hyperbolic self-aggrandizing
You can't easily add a new filesystem or screw with the kernel on macOS/windows without having to buy hundreds of dollars worth of their books and attend conferences.

There isn't really any good detailed up to date documentation online about either.

That's not true, at least for Windows. MS has published a lot of docs on their site, e.g.:

https://learn.microsoft.com/en-us/windows-hardware/drivers/i...

What does get in the way with newer versions of Windows is driver signing, but that's not a huge obstacle.

> whereas in Java it was all obfuscated bytecode.

uhm... when was this? the jdk has included "src.zip" since.... forever(atleast 15 years). This included the entire class library, and any half competent IDE could(and still can) view it directly if you simply went "view source".

This goes back to before oracle purchased sun, and as such way before openjdk aswell.

Java went open source in 2006. The first go release was 2009