Re: Better is better

1

im pretty drunk too so i'm not sure if i can't read that or if it didn't amke any sense


Posted by: yoyo | Link to this comment | 01-13-08 3:24 AM
horizontal rule
2

I'm drunk so fuck you

Ben's cute when he tries to be belligerent.


Posted by: apostropher | Link to this comment | 01-13-08 4:48 AM
horizontal rule
3

It's OK, because it's more important for the commenters to be interesting than the posters.


Posted by: Gonerill | Link to this comment | 01-13-08 6:20 AM
horizontal rule
4

The subject of "about" is outside the scope of this post, I suppose.

Interface design is of course fascinating when drunk.

Did Ben just fail to conceal the fact that he wrote a "Mac vs. PC" post when drunk?

That's okay, he was drunk, I hear.


Posted by: Sifu Tweety | Link to this comment | 01-13-08 6:48 AM
horizontal rule
5

The design purist in me wants to agree with NJ; the design practicalist in me recognizes that MIT is almost certainly right. It's hard enough designing things that work well without adding what is essentially an invisible aesthetic requirement on top.

That said, I suspect that it is to some significant extent true that a more "elegant" undercarriage will lead, naturally, to a more elegant interface. It's just a question of not fetishizing it.


Posted by: JRoth | Link to this comment | 01-13-08 7:30 AM
horizontal rule
6

Not fetishizing it is an excellent idea. Elegance of interface is vastly more important in an era of almost arbitrarily fast computing power.


Posted by: Sifu Tweety | Link to this comment | 01-13-08 7:32 AM
horizontal rule
7

almost arbitrarily fast computing power.

Yeah, I was totally thinking about this. At this point, it seems to me that the main benefits of elegant undercarriage are easier workability for A. multiperson workgroups and B. future revisions. MS has proven that, even in the era of almost arbitrarily fast computing power, it's possible to make things run clunkily because you've got so much messy legacy.

DNA: Interesting analogy? Ultra-elegant structure, incredibly messy code. Discuss, or ban.


Posted by: JRoth | Link to this comment | 01-13-08 8:05 AM
horizontal rule
8

Actually the DNA analogy makes a swell argument for black box testing. If that weren't already the industry standard, we could totally convince people it should be!


Posted by: Sifu Tweety | Link to this comment | 01-13-08 8:11 AM
horizontal rule
9

Of course, sloppy DNA coding can lead to birth defects and cancer, so maybe it's not an ideal model.


Posted by: JRoth | Link to this comment | 01-13-08 8:23 AM
horizontal rule
10

I dunno, I think it's a better model than relying on bottom-up elegance; all that buys you is exponentially scalable development time.


Posted by: Sifu Tweety | Link to this comment | 01-13-08 8:28 AM
horizontal rule
11

"an era almost arbitrarily fast computing power."

People keep saying things like this, but it's almost certainly not true. If you think you've got more cycles than you know what to do with, you're not working with enough data. Or you're not doing interesting enough things with it.

Also, we fell off the Moore's Law curve a few years ago. Things are only going to get worse, for at least the next ten years.


Posted by: arthegall | Link to this comment | 01-13-08 8:33 AM
horizontal rule
12

The correct conclusion from the DNA analogy is that you should use evolutionary algorithms to design all your code. Create systems were programs replicate, mutate and compete and let natural selection do the rest.

(NB: I am not an engineer, and have no idea how often this is actually workable.)


Posted by: rob helpy-chalk | Link to this comment | 01-13-08 8:35 AM
horizontal rule
13

5: w-lfs-n will wake up at some point and possibly clarify his point, but in the "Worse is Better" construction, worse-is-better=NJ and the-right-thing=MIT. The specific PC-losering example involves whether you "correctly" handle an interrupt in a system routine called inside user code (complex and messy) or just return a "fuck you" flag and let the application deal with it.

A rejoinder to Gabriel by Nick Bourbaki , Worse is Worse is here.

The positions are of course caricatures, and much of the dispute with Gabriel was not over the philosophy per se, but whether he had unfairly tarred Lisp with it and thereby aided and abetted its general rejection by the "practical" programming community.


Posted by: JP Stormcrow | Link to this comment | 01-13-08 8:36 AM
horizontal rule
14

IS DNA, with its elegant structure and messy code an example of an elegant implementation with a messy interface, or vice versa?

I would think that both code and the structure of DNA are implementation, and that the organism is interface.


Posted by: rob helpy-chalk | Link to this comment | 01-13-08 8:37 AM
horizontal rule
15

Create systems were programs replicate, mutate and compete and let natural selection do the rest.

You know - like Skynet!


Posted by: JRoth | Link to this comment | 01-13-08 8:37 AM
horizontal rule
16

"A rejoinder to Gabriel by Nick Bourbaki , Worse is Worse is here."

Nickieben Bourbaki -- best real name evar.


Posted by: arthegall | Link to this comment | 01-13-08 8:38 AM
horizontal rule
17

Also, anyone who thinks that DNA encodes some kind of "messy code" is wrongwrongwrong -- it's more along the lines of "incredibly compact, hyper-optimized machine code." Not messy at all. "Junk DNA" is a decades-old misnomer.


Posted by: arthegall | Link to this comment | 01-13-08 8:42 AM
horizontal rule
18

I would think that both code and the structure of DNA are implementation, and that the organism is interface.

Agreed. That's what I was trying to get at (by hardly saying anything): even though the structure of DNA is staggeringly elegant (4 base pairs, clever replication mechanics), the code built upon it is absurdly sloppy, limited only by sudden-death causing slop. Thus, even an elegant language can easily turn into slop.


Posted by: JRoth | Link to this comment | 01-13-08 8:42 AM
horizontal rule
19

Not messy at all. "Junk DNA" is a decades-old misnomer.

Granted. But 2 things: is it not true that code on chromosome 18 might be affected by some little it of code on 12? I believe this is true, but maybe I have misunderstood. The other thing is, you know, genetic disease. I know why it happens, and I'm not saying it should be impossible; I'm just saying that, given the presence of genetic diseases, it seems wrong to over-privilege the perfection of DNA.


Posted by: JRoth | Link to this comment | 01-13-08 8:46 AM
horizontal rule
20

Even though there is no real junk DNA, the code still seems messy, with overlaps, unnecessary redundancy, and complicated overall structure. This might be an artifact of our knowledge of how DNA works, though, rather than objective messiness.

In general, evolution is the "good enough" designer, not the optimizer.


Posted by: rob helpy-chalk | Link to this comment | 01-13-08 8:51 AM
horizontal rule
21

17: not messy, but not obvious, nor what would be traditionally thought of (by a programmer) as elegant.

Of course, we could just be dealing with analogy failure.

People keep saying things like this, but it's almost certainly not true. If you think you've got more cycles than you know what to do with, you're not working with enough data. Or you're not doing interesting enough things with it.

I would argue that a seamless interface produces much greater gains in interesting output than almost any behind-the-scenes optimization; the weak link in the complex-computation-processing chain is almost always the brain-computer interface.


Posted by: Sifu Tweety | Link to this comment | 01-13-08 8:55 AM
horizontal rule
22

I would argue that a seamless interface produces much greater gains in interesting output than almost any behind-the-scenes optimization; the weak link in the complex-computation-processing chain is almost always the brain-computer interface.

And, indeed, the "not fetishizing elegance" I mentioned above could be considered the same as the "good-enough" results of evolution. As long as it's functional and clear enough to be improved in the future, the main goal of the code is to be easily-manipulated by the user.

Not trying to rescue the analogy, just pointing out another point of connection.


Posted by: JRoth | Link to this comment | 01-13-08 9:01 AM
horizontal rule
23

22: I do think there is potentially a lot of power in the computing biology/DNA/genetics analogies. But you really need to pay attention to the "layering" and interfaces. That said, yes biology is a series of "hacks" all the way down.

Each successive "advance" in the function and complexity of living systems must coexist and survive in competition with preexisting mechanisms. Thus, biological systems are a triumph of layer after layer of what software professionals would call "clever hacks." Each new layer exploits the hacks that have come before. To use another programming metaphor, in biology most "bugs" that aren't fatal turn out to be features.

Because of the long evolutionary history underlying biological systems, these systems tend to be complex and "messy" rather than simple and elegant.


Posted by: JP Stormcrow | Link to this comment | 01-13-08 9:05 AM
horizontal rule
24

I'm not a bug, I'm a feature!


Posted by: Sifu Tweety | Link to this comment | 01-13-08 9:06 AM
horizontal rule
25

I'm not a bug, I'm a windshield!


Posted by: heebie-geebie | Link to this comment | 01-13-08 9:08 AM
horizontal rule
26

"is it not true that code on chromosome 18 might be affected by some little it of code on 12?"

But that's because there's often a functional interaction between distant loci. Physical, linear distance "along the chromosome" is a poor indicator of whether or not two things are functionally related, but that's a failure of your (our) poor understanding of the structure of DNA, not indicative of "messy" arrangement.

In general, sensitivity to small changes should be an indicator of optimized design, not mess. You puncture the tire of an old jalopy that hardly runs, you're not really going to alter the performance that much. But if you remove one little piece of an engine in a finely-tuned high-performance sports car, and the failures will be much more dramatic.

That's a qualitative observation, and I'm not trying to argue that blasting away any old piece of the genetic code will completely destroy the organism -- failures that cause genetic disease are actually fairly rare (given the size of the genome overall), and most genomes are an odd mix of high-performance optimization and fault-tolerant redundant coding.

But, again, it's just false to chalk it all up to "messy coding." This attitude is more a mistake of our own making, than a real observation on the organization of a genome.


Posted by: arthegall | Link to this comment | 01-13-08 9:09 AM
horizontal rule
27

Good thoughts by Paul Graham in
"Five Questions about Language Design" from a 2001 panel discussion programming language design at MIT.

1. Programming Languages Are for People.
2. Design for Yourself and Your Friends.
3. Give the Programmer as Much Control as Possible.
4. Aim for Brevity.
5. Admit What Hacking Is.

He also opines that efficiency continues to be important.


Posted by: JP Stormcrow | Link to this comment | 01-13-08 9:17 AM
horizontal rule
28

This attitude is more a mistake of our own making, than a real observation on the organization of a genome

That's what I was saying in 20.

For most organisms, though, a finely tuned sports car is not a good analogy. Most living creatures want a lot of redundancy. They want to be able to have the equivalent of a flat tire without affecting performance.

The stability of the environment is important here. A sports car is made for a very specific application, and slight changes in the application force big redesigns. This happens in nature when an organism finds a very stable evolutionary niche, but more often, they need to be built more robustly.

To introduce a new violation of the analogy ban, most living creatures want to be AK-47s, not M-16s. DNA actually reflects this.


Posted by: rob helpy-chalk | Link to this comment | 01-13-08 9:23 AM
horizontal rule
29

I'm interested, Ben!

As far as interfaces go, I think almost every PL community has some kind of map-reduce-like idiom. This is basically what OO "iterators" give you. Spend a little time learning Haskell and you'll realize pretty much everything is a map, a reduce ("fold"), or an "unfold"... Then you'll get obnoxious about it and start writing unreadable code and using the word "catamorphism" in conversation.


Posted by: Chris Conway | Link to this comment | 01-13-08 9:43 AM
horizontal rule
30

It's always category theory with you people.


Posted by: Sifu Tweety | Link to this comment | 01-13-08 9:49 AM
horizontal rule
31

To introduce a new violation of the analogy ban, most living creatures want to be AK-47s, not M-16s.

Actually, I want to be a unicorm.


Posted by: heebie-geebie | Link to this comment | 01-13-08 9:49 AM
horizontal rule
32

n.


Posted by: heebie-geebie | Link to this comment | 01-13-08 9:49 AM
horizontal rule
33

An autumn unicormn.


Posted by: redfoxtailshrub | Link to this comment | 01-13-08 9:50 AM
horizontal rule
34

28: Most living creatures want a lot of redundancy.

Even beyond that there is just a lot of stuff hanging around on the chromosomes that no longer serve a current "purpose." I love the fact that chickens still have the underlying genetic stuff to grow teeth. Presumably the whole chunk just got 'shut off". I presume it will degrade or go away over time, but for now all or parts of it are there to be put back in service given appropriate future environments and mutations—even though they serve no specific purpose for the current organism.


Posted by: JP Stormcrow | Link to this comment | 01-13-08 9:50 AM
horizontal rule
35

30: Racist.


Posted by: Chris Conway | Link to this comment | 01-13-08 9:56 AM
horizontal rule
36

With a column hormn.


Posted by: heebie-geebie | Link to this comment | 01-13-08 9:58 AM
horizontal rule
37

Large stretches of unused code are actually generally considered to be adaptive. If the environment were to change suddenly, it might be necessary for an organism rapidly acquire a rather complex adaptation. A change in food availability might require a chicken to grow teeth. Breeds that retained the functioning tooth code in dormant form are only a few mutations away from adapting to the new environment, while the others are not. Hence, the selective advantage.

This is especially important for punctuated equilibrium models of evolution. In fact, I'm not sure they can work without this sort of mechanism.


Posted by: rob helpy-chalk | Link to this comment | 01-13-08 10:00 AM
horizontal rule
38

Great Chris now you have me struggling to come up with an Obama-as-functor electoral folding joke. Just great.


Posted by: Sifu Tweety | Link to this comment | 01-13-08 10:00 AM
horizontal rule
39

If the truth were known, I'm sure that we'd find out that unicormns, like penguins, are smelly, ill-tempered, vicious creatures who only look cute.


Posted by: John Emerson | Link to this comment | 01-13-08 10:00 AM
horizontal rule
40

Heebie! You were in my dream last night! Well, sort of.

I dreamt I was reading a journal article (I have a rich fantasy life) and one of the citations was to "heebie-jeebie. 2002."


Posted by: oudemia | Link to this comment | 01-13-08 10:04 AM
horizontal rule
41

38: morphisms=change? Clinton's pitch: Obama is the forgetful functor?

P.S. Pulling this out of my ass


Posted by: Chris Conway | Link to this comment | 01-13-08 10:06 AM
horizontal rule
42

29: They aren't all equivalent though. Haven't read the paper, just the abstract, but if they are using map-reduce in the usual sense, it'll be functional (unlike, say iterators). That's probably as important as the interface.


Posted by: soup biscuit | Link to this comment | 01-13-08 10:09 AM
horizontal rule
43

I think the analogy ban is going to end up enforcing itself in this thread.


Posted by: ogged | Link to this comment | 01-13-08 10:14 AM
horizontal rule
44

Oudie! That's awesome.


Posted by: heebie-geebie | Link to this comment | 01-13-08 10:15 AM
horizontal rule
45

I think it was SICP that suggested applying Samuel Johnson's maxim, "Read over your compositions, and when you meet a passage which you think is particularly fine, strike it out. " to code. (And I think it definitely should be used for blog comments.)

Not that we should defenestrate deforestation, but just saying.


Posted by: JP Stormcrow | Link to this comment | 01-13-08 10:19 AM
horizontal rule
46

This thread has always had a point-free style.


Posted by: arthegall | Link to this comment | 01-13-08 10:25 AM
horizontal rule
47

42: Kindly picture me furiously waving my hands as I mention iterators. I think 90% of the time they are used to implement maps and folds (in a not-purely-functional way). Or, putting on my FP pedant hat, 90% of the time they are used for what ought to be a map or a fold.


Posted by: Chris Conway | Link to this comment | 01-13-08 10:31 AM
horizontal rule
48

46: What this thread probably needs though, is call-cc.


Posted by: soup biscuit | Link to this comment | 01-13-08 10:44 AM
horizontal rule
49

43: I think the analogy ban is going to end up enforcing itself in this thread.

What would that be like?


Posted by: JP Stormcrow | Link to this comment | 01-13-08 10:44 AM
horizontal rule
50

44:

And all of the adjuncts were tucked in their beds
While visions of footnotes danced in their heads.

"Adjuncts" so it will scan.


Posted by: John Emerson | Link to this comment | 01-13-08 11:00 AM
horizontal rule
51

Yiddish ringtones, people.


Posted by: ben w-lfs-n | Link to this comment | 01-13-08 11:27 AM
horizontal rule
52

51: Nice, but I'm going to stick with Willie Nile's "Cellphones Ringing (In the Pockets of the Dead)".


Posted by: JP Stormcrow | Link to this comment | 01-13-08 12:17 PM
horizontal rule
53

If someone used the term "catamorphism" to me in person, I would punch them. Fuck fucking category theory on a fucking stick.

The irony of the example is that Unices now all handle the PC losering problem. System calls are not usually interrupted for no reason.


Posted by: Walt Someguy | Link to this comment | 01-13-08 12:28 PM
horizontal rule
54

"Cellphones Ringing (In the Pockets of the Dead)"

That reminded me of this movie. Very creepy, that one.


Posted by: Knecht Ruprecht | Link to this comment | 01-13-08 12:40 PM
horizontal rule
55

53: Ok, I have heard of category theory as the new replacement for set theory in the foundations of mathematics & IIRC it was a bummer for philosophers because it was even farther from the pure logical foundations Frege and Russell were interested in.

I gather this is the same category theory. So what is it about this theory that drives IT guys to violence?


Posted by: rob helpy-chalk | Link to this comment | 01-13-08 12:55 PM
horizontal rule
56

Walt feels that the stark modernist beauty of Haskell is an affront to his merely human existence.


Posted by: ben w-lfs-n | Link to this comment | 01-13-08 1:27 PM
horizontal rule
57

I saw some guy writing Haskell code on the train a few days ago. I wanted to say something like "I recognize that programming language!!!! wooo!!!".


Posted by: ben w-lfs-n | Link to this comment | 01-13-08 1:28 PM
horizontal rule
58

Even though NetNewsWire (thanks Ogged! I love this reader!) doesn't identify who wrote which post, I instantly knew this was by you, Ben.

Also, the fact that this is the kind of thing you say when you're drunk must mean something. But damned if I know what.


Posted by: bitchphd | Link to this comment | 01-13-08 2:10 PM
horizontal rule
59

58: It means he really, really, must switch to weed; clearly, alcohol is not enough.


Posted by: DominEditrix | Link to this comment | 01-13-08 3:15 PM
horizontal rule
60

Well, I had been thinking about it earlier.


Posted by: ben w-lfs-n | Link to this comment | 01-13-08 3:20 PM
horizontal rule
61

I like Haskell just fine. Anyway, I'm more of a math guy than an IT guy. Insisting on translating simple concepts into category theory strikes me as pretentious, like translating "See Spot Run" into Latin.


Posted by: Walt Someguy | Link to this comment | 01-13-08 3:42 PM
horizontal rule
62

Translating "See Spot Run" into Latin strikes me as less pretentious than it is just plain geeky.


Posted by: redfoxtailshrub | Link to this comment | 01-13-08 3:44 PM
horizontal rule
63

Well.


Posted by: ben w-lfs-n | Link to this comment | 01-13-08 3:47 PM
horizontal rule
64

So is this the football thread? Can we all agree that the early passing of Peyton from the playoffs is a positive development? Or are we still trying to make category theory jokes? (Tom Brady sure dresses pretty -- maybe he's a little bi-category.)


Posted by: arthegall | Link to this comment | 01-13-08 3:51 PM
horizontal rule
65

There are no football threads.


Posted by: Walt Someguy | Link to this comment | 01-13-08 3:52 PM
horizontal rule
66

CATEGORIES ARE GAY


Posted by: OPINIONATED GRANDMA | Link to this comment | 01-13-08 3:54 PM
horizontal rule
67

At least category theory doesn't have "tight ends" or "wide receivers".


Posted by: Walt Someguy | Link to this comment | 01-13-08 3:56 PM
horizontal rule
68

I haven't watched many Cowboys' games over the last couple of years -- I guess I've missed Tony Romo's natural transformation into a pretty good quarterback.


Posted by: arthegall | Link to this comment | 01-13-08 3:57 PM
horizontal rule
69

There are no football threads.

You say this as if it's a bad thing. We already have swimming threads to ignore.


Posted by: soup biscuit | Link to this comment | 01-13-08 3:59 PM
horizontal rule
70

Oh, I say it as a very good thing.


Posted by: Walt Someguy | Link to this comment | 01-13-08 3:59 PM
horizontal rule
71

OTOH, not as geeky as LOL.Caesar:

"Possums habet omnez gallias?"


Posted by: DominEditrix | Link to this comment | 01-13-08 4:01 PM
horizontal rule
72

68 is terrible. What next, "Functor? I hardly know her!"?


Posted by: essear | Link to this comment | 01-13-08 4:02 PM
horizontal rule
73

For some reason, the better-is-worse discussion reminded me of the Donald Rumsfeld quote, mangled here:

"As you know, you release with the code you have, not the code you might want or wish to have at a later time."


Posted by: Pantene | Link to this comment | 01-13-08 5:34 PM
horizontal rule
74

71: I love you DE!!!!


Posted by: alameida | Link to this comment | 01-14-08 7:39 AM
horizontal rule
75

Exchanges like this used to confuse me terribly until the time I asked about it in a Jargon File thread and had Eric Raymond and several others irritably confirm that "interface" here refers only to how other programmers interact with a program. What users who do not seek to program do isn't generally considered mathematically or otherwise analytically interesting and has no bearing on elegance. Thus enlightened, I retreated.


Posted by: Bruce Baugh | Link to this comment | 01-14-08 11:02 AM
horizontal rule
76

It's the "irritable" part in "irritably confirm" that annoys me -- ESR and RMS and a bunch of those guys, they've produced a lot of public good for tech culture and programmers the world around, but that doesn't mean they have to be such comlete jerks about it. They've got an entirely over-blown sense of their own importance.


Posted by: arthegall | Link to this comment | 01-14-08 3:29 PM
horizontal rule
77

76: well, RMS is fucking crazy, and ESR has horrible taste in facial hair and politics. That must have something to do with it.


Posted by: Sifu Tweety | Link to this comment | 01-14-08 3:30 PM
horizontal rule
78

yeah fuck all them other guys

PS! Jim Beam was on sale last night for only $12 a fifth.


Posted by: W. Kiernan | Link to this comment | 01-14-08 4:42 PM
horizontal rule
79

I don't mind irritation when there are obvious clues at hand. But the distinction between interface for programming purposes and interface for general usage didn't strike me as the sort of thing that was obvious until it was explained. *shrug* Anyway, that was a while back, and I did learn something from it, and I think the distinction is a worthwhile one even if it'd benefit from better expression.


Posted by: Bruce Baugh | Link to this comment | 01-14-08 8:56 PM
horizontal rule
80

78: shouldn't that be (&heart; I LISP)?


Posted by: ben w-lfs-n | Link to this comment | 01-14-08 8:59 PM
horizontal rule
81

(♥ I LISP), rather.


Posted by: ben w-lfs-n | Link to this comment | 01-14-08 8:59 PM
horizontal rule