"Trying to learn to hack on a Microsoft Windows machine or under any other closed-source system is like trying to learn to dance while wearing a body cast."
I've developed against Microsoft platforms for many years. I now, in fact, work at Microsoft. I do a lot of deep integration work with Visual Studio and I can tell you that it would be completely impossible without source code access. After working for a few months with source access to all of developer division, xbox, etc., that I never, ever, ever want to develop against a closed platform ever again. Most of our big partners who write VS add-ins do have source code access as well. You basically need it.
That is a completely separate task from learning to develop software.
You need platform source code access if you're doing low-level integration work, which is precisely what you don't do as a beginner.
Windows isn't the best platform for writing software but it's just fine. Python and Emacs work on it just fine, as do MySQL and other important software. Categorically asserting you can't learn how to structure code without having access to terabytes of C code is total fucking bullshit which is why I stand by the original statement.
I agree that is an invalid categorical assertion. To make it explicit: I learned to program (quite well, I hope) on top of closed platforms. However, I suspect that I would have learned faster, better, and more completely by working with open source platforms. My perspective on code has changed dramatically since I've embraced reading other people's code.
As an aside: although my integration work is "low-level", I do not get the opportunity to make changes or additions to the shipping VS bits. I can only file bugs and plead my case. I can't call secret APIs, nor do I gain any special powers other than the weight an @microsoft.com email address carries. I'm developing against the closed platform as all our partners, and non-partner customers.
It is a controversial statement but it would make sense if he elaborated further. One of my first memorable experiences starting out at college was walking into a computer cluster and finding that every machine ran a variant of Red Hat's Linux. I was taken aback by the freedom the OS provide (the ability to customize every bit of your experience using the workstation). I was also positively taken aback by the community that had adopted this system. Right next door to the main cluster was a room occupied by a group of hackers. Their attitude was like nothing I had seen before. Their doors were always open to anyone who had questions about Linux. They wrote software to make using Linux easier at school. You get that same sense of community from Linux users on the web.
The statement doesn't just apply to software. Think about the Arduino. The project has gained a massive following and created a whole new legion of hardware hackers because it is easy to obtain (designs are open source and collaborative in nature) and there is a strong community behind it (probably as a result of it being open source).
When the thread about new types of flagging (e.g. for incivility) came up recently, and people were saying that HN was getting nastier, my first reaction was "what? really?" Guess I was late to the party: I'm noticing it everywhere now. :(
Come on henning. You can make a point better than this - you have for a long time.
You have to have the source of what you are trying to learn. If it's a web framework - sure, you can download the source and work on a Windows machine. But you need to realize you are learning about a different system, and one you have the source to. If you want to figure out how operating systems work - you need to see how one works.
Learning how to use a system or code in a framework is possible with closed-source. You can even get some work done. But it can't be called hacking, because the aim of a hacker is to understand.
Say what you will about esr, but the body cast thing is more true than not.
I learned how to write code using VB and MS Excel, simply because that's what I had at the time. If I had not started with those, I would have never found out that I like programming, and I would never have written code under open-source systems.
Yeah, it's BS. It's the old "only people who do X can be in club Y" thing. But your comment would have been taken more seriously if you had backed it up with strong evidence.
I also started programming on Windows with VB. However, I eventually found myself bumping against the arbitrary boundaries and limitations that inhere in a proprietary system. Moving first to FOSS technologies on Windows and eventually to a FOSS operating system has been like taking a deep breath after being held underwater for a long time.
Total fucking bullshit.