The Parley Letter
david.heinemeierhansson.com
david.heinemeierhansson.com
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.
By definition I don't see the point in architectural exploits that can be labelled wankery.
wankery: architectural shenanigans which suffer significant diminishing returns on investment
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.
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.
DHH himself has said that Rails MVC is not classical MVC. I don't know if Rails was the first framework to use this particular definition of MVC, but drawing a line between 1980's MVC and Rails is tenuous at best. Making a historical argument on this basis just doesn't hold up.
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.
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.
Usually you can read past a syntactic error, but a semantic error could change the tone or meaning of your entire message.
I am not sure about how intentional that is, but it surely is dramatical in 'flame war eliciting' sense of word.
OTOH, the servlet API is nice.
He also did say something about those specific arguments: that they were blanket. Which I took to mean: shallow and over-broad.
The way to avoid flame wars is not to feed them in anticipation, but to offer a critical beatdown of the arguments at hand, e.g. the higher levels of the PG pyramid.
This talk (31 min, grab some coffee) also gives a better context. http://confreaks.com/videos/1125-gogaruco2012-mega-rails
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.
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.
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.
In my time working with Java (14 yrs now...sigh) for simple Web applications, I've never found the need for the majority of the J2EE stack, instead opting for Servlets and...well, just normal Java code. I've had Java gurus throw proverbial books at me for not using EJB and its ilk, but I just don't like how complex it all gets once the full J2EE stack is included.