What Comes After MVC
push.cx
push.cx
Each component would render itself.
I personally think that this requires a lot of machinery under the hood, such as caching and batching requests (since no one knows ahead of time what components will need to be rendered).
At least that's what we built in our Qbix Platform (http://platform.qbix.com). Reusable components you just place on a page and they "just work". Unlike React, etc. they support more than just re-rendering. You can of course have a virtual DOM (via a lib like Mithril or https://github.com/Matt-Esch/virtual-dom etc.) but it would be nice to handle other kinds of events besides just "re-rendering".
In my app's scenario, we made a render decision based on the input and output for the component render functions. Prior to rendering the view, if the data was identical to what already existed, no updates occurred. cljs made this cheap. After constructing the template (hiccup-style, more cljs data), if it wasn't different, we'd also skip the DOM update.
For methods on the component (handling various events and such), they all take a channel where they could send whatever events it was that they needed to send.
The data service managing a query for one or more components just blocked its goroutine until it received an update to its query data structure, resolved it, and if it was different than the existing query data structure, would debounce for more changes before sending off the request. Requests back to the server were ordered by an atomic counter (atom 0) such that out of order responses could be processed sanely. Everything was one-way.
Additionally, while we could dynamically render everything, pages were a layout data structure containing 0 or more components with associated data services. These were all described in EDN and thus could be serialized, queried, and rendered server side if necessary.
All of this machinery was pretty small, no more than about 1800 LOC building on top of some excellent cljs libraries.
https://www.packtpub.com/web-development/ext-js-application-...
One should also note that Seaside is likely the direct inspiration for Arc's (i.e. HN's) use of links that reference stored server-side closures by ID.
Edit: It looks like there is a new Pharo book that covers more advanced topics! http://deepintopharo.com/
The framework you are programming in is the entirity of computer science. Good libraries are the ones that do their job well and don't get in the way of your using other tools to solve other problems.
Once you set up camp inside a framework and declare you're not coming out, whether it's MVC or immutable state or Salesforce or whatever, you're basically guaranteeing that you're going to be spending a big chunk of your day sanding down square pegs to fit in round holes.
I think what bothers me most about this way of thinking (which seems common here and elsewhere in the industry) is that it provides a veneer of credibility to bad developers who don't want to think about design and would prefer to just wing it.
That said, I gave node a beachhead into a number of projects, because they were web applications and it made sense to do so. Even if not running on node, having the client-side bits using node tools made sense.
It really just depends. All in all, there are at least a dozen options for any given problem, and 4 out of 5 times the closest thing to what you are already doing is likely the right answer.
That sounds great as a first. However, I fail to understand why you want a working e-mail to be able do d/l the slides. No pricavy policy, no word on what happens after you "signup"...
Because I'm also sending a lot more info on things I had to cut from the talk for time (eg. samples of test code). I haven't finished or polished the stuff that I knew early I had to cut, so it's coming out as I can finish it.
Sorry it was unclear, I'll improve the text on that pgae.
For what it's worth, I have cleaned up enough servers hacked by spammers that I'll never send one. I guess I should mention that.
I've read a lot about the benefits of immutability, but most discussions don't go so far as to describe how to a) refactor existing systems, b) structure the interacting parts that a web app might need.
https://en.wikipedia.org/wiki/Model_View_ViewModel
apart from agile manifestos and talking about stuff, do you know what programs has he actually worked on?
other ones:
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93pres...
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93adap...
That said, I'd love to hear what Fowler thinks of it, too.
The dynamic generation tools should be able to remember and apply the changes and preferences the user and their context require, but the user still needs complete control to easily make one-off special purpose "instance first" interfaces, and then iteratively generalize, abstract and refactor them into reusable specifications, rules, classes and prototypes.
By "instance first" I'm referring to the term Oliver Steele used to describe declarative programming with constraints in OpenLaszlo:
https://news.ycombinator.com/item?id=7756151
http://blog.osteele.com/posts/2004/03/classes-and-prototypes...