Live data from Hacker News

Steve Yegge: Notes from the Mystery Machine Bus

plus.google.com

101–110 of 186 posts

Re: Steve Yegge: Notes from the Mystery Machine Bus

#102
post #28

As much as some commenters are (weirdly?) railing against this classification scheme I think the underlying idea that software conservatism is about risk aversion is essentially accurate. Perhaps another way of framing this is to ask the question: are you optimizing for the best case or the worst case? This ultimately is a form of risk management. And I'm not talking in the algorithmic sense, meaning complexity expre…

I don't think the main problem with operator overloading is "abuse"; I think it's that there's absolutely no way to know what a given clause of code might mean , even if the overloading has been defined by excellent coders.

I think it has more to do with expected outcomes. It's hard to argue that a + operator on a string or matrix class is a bad idea, because the outcome is intuitively obvious. For the other extreme see boost spirit for C++, which I'm sure was written by excellent coders.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#105

I think I'm a software libertarian. If you like dynamic typing and can write good, legible code in a language like Python or Lisp, do it. If you like static typing, knock yourself out. If you want to use an IDE, go for it. If you want to use emacs, do it. Hell, if you like object-oriented programming, try it out. I think 95% of "object-oriented" programming (as currently practiced) is junk, but the other 5% is legiti…

> 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.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#106

In his section on Tech Corporations, he classifies Apple as "Diagnosis: no idea." Is there a reason nobody speaks publicly about Apple's engineering culture? We hear a lot about the culture at Google, Facebook, Microsoft, and Amazon. But I've never met an Apple engineer. And I've never read any detailed accounts by an insider. Does anybody have any good resources? Or is there a very restrictive confidentiality policy…

I can only speak as to Apple as of 2004-2009, when I was there. It was intensely pragmatic, much more so than other companies of comparable size I'd been at. The focus was on shipping, and whatever it took to get product out the door. Once projects were no longer directly in the gaze of Barad-dûr, however, politics set in and things ossified rapidly.

Day to day in my world was a lot of C, Objective-C and C++, with Python for rapid prototyping and glue code; Java formed the backbone of the store infrastructure, but there was plenty of other stuff going on. Fairly standard architecture (huge Oracle DB, loads of web servers). Teams tended to be undermanned, so there was constant tension between getting stuff done and standardization; much of the time, the wrong balance was struck, meaning that people couldn't easily switch roles, but still had a lot of bureaucratic scutwork to manage. Things were improving when I left, and I imagine that they have continued to do so.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#108
The characterization of Clojure is questionable. A conservative would want to avoid risk and would be against change. About the only really conservative thing of Clojure I would see that it preserves the investments made into the JVM and uses an accepted technology as a base. Other than that it is a radical break for the Clojure user base. The Clojure user base does not come from ML or Haskell. It comes from Java, Ruby, Python and a few other languages. But not from statically-typed functional languages and not even from Lisp. Even Rich Hickey does not come from there.

With Clojure you keep one feet on the ground (the Java ecosystem) and the other feet is in the unknown dark water.

Re: Steve Yegge: Notes from the Mystery Machine Bus

#110
The difficulty that I have with his linear generalization is that I strongly agree with some points on both sides - sometimes feeling oppositely strongly about two halfs of the same sentence. Another commenter linked to http://james-iry.blogspot.com/2010/05/types-la-chart.html which makes the statement that "the design space is very highly dimensioned, perhaps infinitely so". I suspect that the programmer opinion space is similarly highly dimensioned, and more particularly, that the specific single dimensional analogue that Steve Yegge draws in his post obscures critical features of this topology. If I can come down hard all over the line, then he does not have a good enough mapping from the higher dimensional space. As an aside, using the labels "liberal" and "conservative" inappropriately juxtaposes rather strong emotions in the mix. Hopefully the emotional/visceral reaction was not his intention as a means of ideological persuasion.
Post reply on HN