Hacker News new | past | comments | ask | show | jobs | submit login

> What you shouldn't have the right to do is impose complexity on other people. Use whatever environment you like, but if your code depends on your environment, that's bad. If people can't get work done because they're cleaning up your messes, that's bad. Be as liberal and as kinky as you want in your own sandbox, but don't impose your wacky, untested DSL on everyone else.

I agree with this.

At the end of the day, all I want is software that is both modular and portable. Unfortunately, in this day and age, that itself is controversial enough that some people consider it an extreme viewpoint.

This is why the Unix philosophy is so powerful - each individual tool is a black box, so it can be ignored for convenience, but each tool is also so small in its scope that it can be removed when rechaining without worry.

Unfortunately, Windows remains POSIX non-compliant, but for any -nix, not only should most projects port directly, but rechaining for equivalently-functional tools should be trivial. If it's not, that signals a problem with project organization. (Example: I include a Makefile even in pure Python projects, because nobody should have to figure out whether I used nosetests or another library until and unless they want to switch it out).

If everyone followed this mindset, I don't think any 'political spectrum' would need to exist. So you prefer statically typed languages and heavy use of IDEs? Doesn't matter - your Scala program written using IntelliJ still takes in input through a unix pipe and passes it to my Python or C program seamlessly. Why should I know or care how the tools work if I don't want to modify them?

My choice of tools should be viewed as the implementation, not the interface. If my tools preclude your project, that's a sign that your project isn't abstracting well.

This is only one small part of the larger argument, but it's the part I notice the most, and I think it abstracts well to the larger issue.

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