525 karma · joined August 22, 2009
It doesn't have enough features to require or demonstrate the abstractions needed to eliminate boilerplate.
That being said I like what you did with Riot which is basically use plain JavaScript as much as possible. And I also like to you bring attention to the fact that jQuery doesn't cause spaghetti: programmers cause spaghetti.
In Montreal: Founder Fuel http://founderfuel.com/en/
It's a short read, it's opinionated and will make you think, especially if you're a novice / intermediate programmer. In particular, the "Writing maintainable code" chapter.
Focusing on things like namespacing is not necessarily a bad thing, but it doesn't address the real goal - writing modular, testable, maintainable code. If your components know where other components are in the namespace and depend on them internally, the namespace hierarchy does nothing to help your design.
The main difficulty in designing complex web applications is managing dependencies between objects, just like any large object-oriented piece of software (assuming that is the paradigm you choose).
I'm a musician and while I think the idea is great, I think the mechanics in the demo are too limiting for most remixing work. Typically if I'm working on a remix I would change the tempo, change the song structure, etc. which doesn't really work well with the 'versions of the original stems' metaphor that is used in the application.
Then again it may be interesting to see how people get around those issues to get the results they want. Often times having limitations boosts creativity rather than hinder it.
tldr:
• Pac-Man (1980) • Tetris (1984) • Another World (1991) • Myst (1993) • SimCity 2000 (1994) • vib-ribbon (1999) • The Sims (2000) • Katamari Damacy (2004) • EVE Online (2003) • Dwarf Fortress (2006) • Portal (2007) • flOw (2006) • Passage (2008) • Canabalt (2009)
var firstTouchBehaviour = {
touchCount: 0,
events: {
firstTouch: 'FirstTouch'
},
setup: function(owner) {
andro.eventer(owner).bind(this, "touch", function(contact) {
if(contact === "added") {
if(this.touchCount === 0) {
andro.eventer(owner).emit(this.events.firstTouch);
}
this.touchCount++;
} else if(contact === "removed") {
this.touchCount--;
}
});
}
};
and var soundBehaviour = {
setup: function(owner) {
andro.eventer(owner).bind(this, firstTouchBehaviour.events.firstTouch , function() {
console.log("Rarrrrrwwwwwwwwwwwwwwww");
});
}
};Don't let the name fool you, it's not only for databases. I would say that it's probably more suitable for general purpose scripts than Node, though some of the APIs are a bit clumsy.
It's not open source, but it's free and cross platform and actually pretty good for a lot of general purpose scripting. Seems that it is developed by a single guy. I found out about it a few years ago and used it to get some things quickly done.
I personally find it more useful to deal with forms using some kind of abstraction on top so I doubt I'd use either variations in anything other than a very simple page.
> I've worked hard. I haven't had a vacation or day off in years. (...) My life is wake up, code, sleep.
> When she's done with her day, she goes to play cards with her other friends.
In order of importance, I feel that that you would benefit the most from speaking to your wife, a psychiatrist, a marriage counselor and possibly a lawyer.
Not knowing you personally it is difficult to ascertain your mental state but if your writeup is any indication, you really, really need some time off; not a new startup.
One of the easy ways is to simply in-line your JSON model when you generate the initial page.
So essentially your webpage contains the html structure you need, followed by something like
<script>
Myapp.start( { tasks: [ { id: 1, title: 'do something' } ])
</script>
So essentially you bootstrap your application in order to avoid a large AJAX call right off the bat.If that's the case, none of the basic objects are safe, not just Array..
After a while that high subsides and one starts seeing the elegance of simple solutions for most things and complex ones where it's warranted.