
The Parley Letter - thisduck
http://david.heinemeierhansson.com/2012/the-parley-letter.html
======
aGHz
1970: " _Another part of the necessary art of calling bullshit is to take down
good ideas when they become inflated beyond what they can bear. Organizing
your instructions in a clear way is a reasonable idea that I support. But
there's just not enough there there to dress it up in function calls, machine
optimization, and all the other -- here's that word again! -- wankery that
passes for muster in the compilers orthodoxy._ "

1980: " _Another part of the necessary art of calling bullshit is to take down
good ideas when they become inflated beyond what they can bear. Separating
your code in functions that address single concerns is a reasonable idea that
I support. But there's just not enough there there to dress it up in models,
controllers, views, and all the other -- here's that word again! -- wankery
that passes for muster in the MVC orthodoxy._ "

2010: (and this one's verbatim) " _Another part of the necessary art of
calling bullshit is to take down good ideas when they become inflated beyond
what they can bear. Using URLs instead of IDs in your json responses is a
reasonable idea that I support. But there's just not enough there there to
dress it up in HATEOAS, HAL, custom mime types, and all the other -- here's
that word again! -- wankery that passes for muster in the hypermedia
orthodoxy._ "

I never could understand this attitude of overt antagonism towards people who
care about architecture. If you aren't partial to such discussions yourself,
at least show some respect for the people who, through years of wankerous
discussion and debate, came up with and subsequently refined the pattern that
propelled you to fame (or in the case of us mortals, at least gave us the
tools to make our programming life a little easier). Now, I understand this
particular guy is deeply invested in the MVC architecture. But that doesn't
mean history stops here. REST (despite a long but somewhat underground
history) and hypermedia are still in their infancy as an architecture. Many,
many problems still remain unsolved and the process of debate meant to distill
the good from the bad necessarily looks to outsiders as "wankery". Still, show
some respect. The next person of Heinemeier's caliber will likely make their
fame by bringing REST to the masses.

~~~
dhh
Not every new architectural idea is a good one. Lots fell by the wayside over
the years. See J2EE or Naked Objects (I actually kinda liked that one). Bad
ideas fail faster when criticism is brought forward which opens the floor to
new, better ideas.

~~~
aGHz
Constructive criticism, yes absolutely. Labelling things as wankery and
reiterating that you don't see the point aren't. All they're showing is that
you're missing the point.

~~~
dhh
Let me translate it for you, then. Wankery: Complexity brought on by the love
of an abstract idea without meaningful practical benefit.

By definition I don't see the point in architectural exploits that can be
labelled wankery.

~~~
aGHz
I know, you've repeated that several times. "Without meaningful practical
benefit" is what I'm referring to when I say you keep stating that you're
missing the point. Just because you happen to not see the meaningful practical
benefit doesn't mean there isn't one.

~~~
wpietri
That is one of the most common young nerd mistakes. "If I don't see the value
in something, the people doing it must be idiots!" Rather than, say, "... I
must not understand something here."

I made it a ton as a youth. I had to have about a thousand, "Oh, now I see
what they're talking about" moments before I learned to keep my mouth shut
long enough to actually learn something.

~~~
three14
Agreed, but there has to be _some_ filter. You can't just say, "I don't see
the value in crystal healing, I must not understand something here."
Sometimes, you do understand enough.

~~~
wpietri
Well, it depends on how you do it. My original reaction was, "duh, idiocy."
But once I paid more attention, I learned a lot about the emotional
motivations behind it, the placebo effect, and why western medicine is so
unsatisfying to people.

That's helpful, in that you can convince anybody by saying: "Although I have
no evidence, I'm sure that crystal healing is bullshit and I'm waaaay smarter
than you." All they read from that is contempt and arrogance; that approach to
skepticism is basically bullying.

I think a better approach is the one taken by my doctor. When people come in
with concerns about vaccines, she first listens to their fears about kids and
patiently explains why those particular fears might sound reasonable, but in
this case are unwarranted. It's not really about the facts; it's about the
hand-holding. For her, the interaction isn't about _being right_ , but about
_persuading_ people.

So I agree, but for very high values of "understand enough". It's not enough
for me to know that they're wrong; I want to understand why they're wrong
sufficiently to have empathy for their situation.

~~~
three14
So how do you know DHH doesn't meet that threshold? (I don't think it's clear
either way, but still "most common young nerd mistakes" is pretty dismissive.)

~~~
wpietri
He might, but he certainly hasn't demonstrated otherwise. In particular, he's
not saying, "I see where the REST crowd is going, but their crucial mistake is
X." That, combined with DHH's well-earned reputation for arrogance, makes me
think he's just doing his usual.

------
georgemcbay
I agree wholeheartedly with with dhh's stated philosophy on the fact that code
talks, bullshit walks and writing "future proof" code is a terrible idea (one
that virtually every journeyman developer stupidly clings to for a while at
some point in their career). But at the same time I'm not a Ruby fan, in large
part due to the monkey patching ability he holds so dear.

Given the same philosophical outlook but perhaps less inherent trust in
developers (including myself!) to always do the Right Thing, I've come to
really appreciate Go as a no-bullshit language that does allow you to hang
yourself (eg. the unsafe package, ability to ignore error returns via '_'
variables, etc) but it at least makes you tie the rope to the ceiling before
you can use it, so you have time to think about whether or not you really want
to use it.

------
rb2k_
He keeps writing "Parsley" instead of "Parely". For other non-native english
speakers (like me), here's the defintion:

Parley:

Parley (/ˈpɑrli/) is a discussion or conference, especially one between
enemies over terms of a truce or other matters. For example, in Julius Caesar
(a tragedy by William Shakespeare), the respective followers and armies of
Brutus and Antony are ready for a truce. The root of the word parley is
parler, which is the French verb "to speak"

Parsely:

Garden parsley is a bright green, hairless, biennial, herbaceous plant in
temperate climates, or an annual herb in subtropical and tropical areas.

~~~
jeremymcanally
My guess is that iOS autocorrect strikes again. :)

~~~
unimpressive
Autocorrect is a bad idea. The kind of spelling error that iOS corrects (At
least as far as I know.) is a _syntactic_ error. Whereas the kind of error
that autocorrect introduces is a _semantic_ error. A semantic error is much
worse than a syntactic one. At worst, a syntactic error leaves your meaning
ambiguous. At worst, a semantic error leaves your meaning incorrect or
inverted.

Usually you can read past a syntactic error, but a semantic error could change
the tone or meaning of your entire message.

~~~
T-hawk
Well, it's a question of total value, weighted by frequency. If the
autocorrection gets ten syntactic errors fixed for every one semantic error it
introduces, it's probably a net gain for the writer.

~~~
unimpressive
One abnormally bad semantic error can be worth a thousand syntactic errors.

~~~
andrewflnr
Have a little care, then. You have to be careful anyway with a touch keyboard.
Autocorrect makes me faster, by correcting most errors without making me stop,
and that's all I ask of it. I can't recall a time it's stung me in a major
way; I can't count the number of times it helps me every day.

------
xentronium
I guess we need a new entry in <http://rubydramas.com>

~~~
pbiggar
You know, this strikes me as very sane and cogent essay into maintainability
and rails. Where does the drama come form?

~~~
xentronium
To DHH credit, he always has fair points in his opinions, but the way he
expresses these points is never diplomatic. For example, he couldn't resist
making some blanket statements about java world and rspec.

I am not sure about how intentional that is, but it surely is dramatical in
'flame war eliciting' sense of word.

~~~
pbiggar
The JAva point I felt was truly fair here. Servlets were good, but then it
became the huge EJB which was bad. His rspec opinion - as expressed here that
is - was "I dont like the DSL". Those seem fine really.

~~~
cunac
Just as a pointer I would recommend to get up to date with latest JEE specs
and standards before making judgement What I see is most people base their
opinion on EJB2 from past and they keep ranting about that. Also java
ecosystem doesn't start and end with JEE

~~~
aurelianito
Come on! They scrapped almost everything because it sucked and everyone knew
it. Judging EJBs as a pile of shit is quite deserving. I mean this as a
programmer who wrote Java code for a living.

OTOH, the servlet API is nice.

------
Rygu
Some related posts that probably spawned this article. You can find DHH's
response in the comments:
[http://gammons.github.com/architecture/2012/12/22/where-
the-...](http://gammons.github.com/architecture/2012/12/22/where-the-logic-
hides/)

This talk (31 min, grab some coffee) also gives a better context.
<http://confreaks.com/videos/1125-gogaruco2012-mega-rails>

~~~
bdcravens
My understanding is that this article was in response to various questions
that were asked of him on the Ruby Rogues Parley list (all guests are on the
list, and others can pay to be on the list). Of course, recent topics he
covered like hypermedia were colored by those recent discussions.

------
typicalrunt
I think some clarity is in order.

 _While Java certainly isn't a pinnacle of language design, it took quite a
few years of devolution to go from something relatively simple like servlets
to the steaming pile of shit that is J2EE_

I believe he means to say EJB here, and not J2EE, because Servlets are a part
of J2EE.

~~~
dhh
J2EE's sins include far more than just EJB. See
[http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editi...](http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition).
Servlets got just started running with a bad crowd, even though deep down it
was a good kid.

~~~
mhw
Personally I wouldn't let servlets off that easily. One of the basic design
choices they made was one request handling function per class (the service
method, delegating to doGet/doPost/etc for http requests). As a result, most
applications actually needed another framework on top of servlets to do
routing based on request URL and mapping on to some model of server side
components, like MVC. See for example struts, spring, webwork and a host of
other java frameworks that were around at the time Rails appeared on the
scene. At the time, Rails' routes file and having classes grouping related
controller methods together was a clear demonstration of what the servlet API
had got wrong.

Heck, the architects even designed it as a completely generic request/response
framework with http as just one possible protocol. When http is your 99.9% use
case, that just smacks of over-engineering.

~~~
wpietri
I certainly don't want to be one to defend Java from criticisms of
overengineering. But on this point, I can't blame them much.

The Servlet spec was finalized more than 15 years ago, when CGI scripts were
the mainstream server-side tech and browsers were circa version 3. The domain
"google.com" wasn't registered until 3 months later. I think Servlets were
reasonably well done for the time. The web was obviously dominant, but FTP was
still widely used, and it certainly wasn't clear that newer protocols wouldn't
be important as well. Rails didn't turn up until 8 years later.

One could certainly blame the java folks for _stopping_ there, but there
wasn't a lot of advantage to be gained from redoing the foundations in a way
that forced everybody to rework all of their existing servlet code. And as you
say, the community was making solid progress on their own, so it's probably
better that Sun didn't interfere.

~~~
mhw
Oh, yeah - absolutely. The servlet API was very much of its time, and for
several years it seemed to be a good solution. I think it's only in retrospect
that it became more clear that there were key challenges that everyone faced
in building a web application that the servlet API, and J2EE more broadly,
didn't solve. For me that was the thing Rails demonstrated: a full stack
solution for building web applications that actually tackled the real problems
(like routing requests from URLs to controller methods). And I think the major
changes to J2EE since have been in large part a reaction to Rails showing what
problems a web framework should actually try to solve.

