The Model View Controller architecture is of course a very popular programming paradigm, so much so that it nearly feels like heresy to speak out against it. In some ways I feel like I embrace the concept, so this post is really more about where I believe it has overreached.
Firstly, where I embrace it is at a pre-programming level. The Model is your database schema, or maybe the markdown syntax if you use file storage. The model is whatever you commit to permanent storage and the patterns you derive from that. The View is of course your web browser, and if you want to be more specific it's the html that your browser renders. Here's the catch though: the Controller is also the web browser. More specifically it's the actionable subset of html on the page, either via controls built into static html itself, or the event enabled html added via javascript and css.
So the first and most fundamental problem I have with MVC on the web is the conflation of the view and controller, because in reality we have both and neither. Instead we have a far more powerful tool than was first imagined when the phrase was coined, a dynamic rendering tool capable of seamlessly integrating both a view and the controls required to manipulate that view into one user interface.
The more insidious problem with MVC on the web is it's filtration as a concept into web frameworks. If you choose to write code with the help of a framework, you are choosing to make a trade-off between a set of constraints that are placed on you and the tools that framework makes available to you. I don't have a problem with frameworks if you are making an informed choice to do this, but as Kevin Marks said on indieweb chat the other day, "you call a library, but a framework calls you".
The problem with the constraints of a framework that have embraced an MVC paradigm is that you have to operate within this artificial distinction. This is where I see the overreach occurring. If it wasn't such an obvious separation of roles, maybe it could be ignored, but instead it has become the main feature of many frameworks and pushed as far as possible. Today's javascript rendered client frameworks being the latest and greatest example.
Enough of the hating, what else is possible?
I like the idea of clean distinctions between concepts when warranted. A great phrase from the IndieWeb is "if you can't curl it, it's not on the web". This prioritizes outputting clean, renderable html to whoever or whatever (service) is requesting it. Starting from this point makes me think that static site generators are heading in the right direction.
From a coding point of view, I believe that simple pragmatic programming is a great place to start. There's nothing wrong with writing opinionated software, but what you bake in from the beginning is important. Functional and Object Oriented programming is great when the linkage that flows between your code makes sense. What that flow should embody on the web however is fast load times, clean output, simple and expressive api's and an interconnectedness with other projects that makes the sum greater than the parts.
That's what I'm working on with my project dobrado, I know I've got a long way to go!
mal shared this post from mikecaulfield on 27 August 2016, 1:38 am
I read this heartbreaking story today about the U.S.’s current opioid epidemic. The surgeon general was having dinner with a friend, a cardiologist. Then this happened:
“I was having dinner with him and I said, ‘Can you believe that we were taught that these opioid medications weren’t addictive in our training?’ †Murthy told a group at the Aspen Ideas Festival in Colorado in June.
“And he put down his fork and he looked up at me and he said, ‘Wait, you mean they are addictive?’ †Murthy added.
Like many doctors, his friend, a cardiologist in Florida, learned in medical school and in residency that opioids weren’t addictive as long as a patient was truly in pain, Murthy said.
“He’s trained at some of the best institutions in the country. He’s one of the most compassionate doctors that you’ll ever meet,†he said.
I know that they’ve been proven addictive for quite some time now (in more than edge cases). You know that, I hope, by now. Experts know that. Professional boards and state committees know that.
The doctor: he had no clue. It so shocked the Surgeon General that he is writing a letter on opioids and sending it to every doctor in America.
But look deeper into that story and you’ll see the big problem:
Like many doctors, his friend, a cardiologist in Florida, learned in medical school and in residency that opioids weren’t addictive as long as a patient was truly in pain, Murthy said.
“He’s trained at some of the best institutions in the country….
What we come up against here is the idea that four years or six years or eight years of education is sufficient to what we do. But unless we graduate our students into a professional learning network that can get the right information to them as our knowledge evolves, tragedies like this will happen time and time again.
This is why we have to move past the infotainment model of Facebook, Twitter, Reddit, and the like and build some real fricking professional systems that let important information and insights flow from point A to point B in stigmergic ways. Our current model, based on advertising dollars, couldn’t give a crap whether your cardiologist is tweeting the latest Clinton Body Count conspiracy or important updates to prescribing guidelines, as long as effective adverts get shown.
But we care. We care a lot.
Anyway, *this* is what drives me. This sort of story where having a simple piece of information or making a simple connection between two ideas could make us smarter and better people, in ways both small and large, with impacts big and small.
I wish I could say we’ve gotten better at building media that expands the mind in the past decade or so. But we’ve gotten worse at this.
Ten years ago I co-founded a community for progressives in New Hampshire, mostly for one reason: I knew very little about New Hampshire politics and wanted to change that. While the “blogging community†format had its challenges, it was a life-changing experience for me, where we found ways to truly tap into the power of networks to raise the collective intelligence of people, and make them better informed about their state: the political structure, the bills sitting before the legislature, the crucial races, and the history of various state debates. We taught each other and it was beautiful.
For various reasons we pulled the plug on it a couple years back, after over 10,000 blog posts by members and 100,000 comments (actually probably more than that — those are 2010 numbers). There were many reasons why the site eventually petered out. But one issue was it was already in decline was because by 2012 people had moved to Facebook for their political community needs.
And as a recent NYT article describes, that’s a huge problem. Because Facebook is not a learning community in any sense of the word. It’s an identity factory:
[T]ruly Facebook-native political pages have begun to create and refine a new approach to political news…This strange new class of media organization slots seamlessly into the news feed and is especially notable in what it asks, or doesn’t ask, of its readers. The point is not to get them to click on more stories or to engage further with a brand. The point is to get them to share the post that’s right in front of them. Everything else is secondary.
….
From a user’s point of view, every share, like or comment is both an act of speech and an accretive piece of a public identity. Maybe some people want to be identified among their networks as news junkies, news curators or as some sort of objective and well-informed reader. Many more people simply want to share specific beliefs, to tell people what they think or, just as important, what they don’t. A newspaper-style story or a dry, matter-of-fact headline is adequate for this purpose. But even better is a headline, or meme, that skips straight to an ideological conclusion or rebuts an argument.
I’m not quite sure where I’m going with this, except maybe to say that these two issues — the opioid crisis and America’s conspiratorial, Facebook-fueled political turn depress the hell out of me, rip my heart out and stamp on it cartoon-style until dust clouds billow out of it and it just expires.
I care about most of the things my readers do — corporate encroachment of education, a desire for “free-range†education, emergence, creativity, what-not. But at the root of all of it for me is a simple dream I had that we all shared, that we could use technology to make ourselves smarter and better people.  And it seemed for a while like we were heading there, until the current interests took over and turned technology into Skinner boxes for advert agencies.
I’ll tell you the truth. I don’t even give so much a crap about all Google’s data mining and analytics. I’d deal with it, if Google could just get that one fricking cardiologist a Google Now message that says “Hey dude, update: Opioids are addictive.â€
But Google Now is not going to do that, because the dream of Google is not the dream of Engelbart or Kay. Those inventors wanted a world where we became better people, better doctors, better citizens, better architects. Google Now doesn’t give a crap about any of that. Google Now doesn’t want to make you a better doctor or a more compassionate human. It just wants to get AI down enough that it can sell you a Starbucks on your morning commute. And eventually, maybe opioids for your back pain too. Because it’s all just data, right?
Good job everyone. Welcome to the future.
Sorry, I’m legit sick to my stomach right now, and I have to sign off.
"Longtrepreneurial thinking" - motivation for entr...
The Problem with MVC on the Web
Firstly, where I embrace it is at a pre-programming level. The Model is your database schema, or maybe the markdown syntax if you use file storage. The model is whatever you commit to permanent storage and the patterns you derive from that. The View is of course your web browser, and if you want to be more specific it's the html that your browser renders. Here's the catch though: the Controller is also the web browser. More specifically it's the actionable subset of html on the page, either via controls built into static html itself, or the event enabled html added via javascript and css.
So the first and most fundamental problem I have with MVC on the web is the conflation of the view and controller, because in reality we have both and neither. Instead we have a far more powerful tool than was first imagined when the phrase was coined, a dynamic rendering tool capable of seamlessly integrating both a view and the controls required to manipulate that view into one user interface.
The more insidious problem with MVC on the web is it's filtration as a concept into web frameworks. If you choose to write code with the help of a framework, you are choosing to make a trade-off between a set of constraints that are placed on you and the tools that framework makes available to you. I don't have a problem with frameworks if you are making an informed choice to do this, but as Kevin Marks said on indieweb chat the other day, "you call a library, but a framework calls you".
The problem with the constraints of a framework that have embraced an MVC paradigm is that you have to operate within this artificial distinction. This is where I see the overreach occurring. If it wasn't such an obvious separation of roles, maybe it could be ignored, but instead it has become the main feature of many frameworks and pushed as far as possible. Today's javascript rendered client frameworks being the latest and greatest example.
Enough of the hating, what else is possible?
I like the idea of clean distinctions between concepts when warranted. A great phrase from the IndieWeb is "if you can't curl it, it's not on the web". This prioritizes outputting clean, renderable html to whoever or whatever (service) is requesting it. Starting from this point makes me think that static site generators are heading in the right direction.
From a coding point of view, I believe that simple pragmatic programming is a great place to start. There's nothing wrong with writing opinionated software, but what you bake in from the beginning is important. Functional and Object Oriented programming is great when the linkage that flows between your code makes sense. What that flow should embody on the web however is fast load times, clean output, simple and expressive api's and an interconnectedness with other projects that makes the sum greater than the parts.
That's what I'm working on with my project dobrado, I know I've got a long way to go!
The Dwindling Promise of Social Media