To tell you the truth, most of my work has been backend code. I've more or less ignored the entire frontend side of programming, regardless of environment. The user interface has always been secondary to me. That changed a few years ago, when I was reading about UI first software development.
In particular it was these words:
"When writing end-user software, UI design should really come first.
To the end user, the UI is the application."
This of course, made a whole lot of sense. The user doesn't give half a rats arse how pristine the backend is, or how flexible and modular the code is. If your UI is slow and ugly, your whole program is slow and ugly.
- Twitter Bootstrap, a CSS UI framework (the same one I'm using on this blog).
- RequireJS, AMD module loader.
- KnockoutJS, data binding library.
- Twitter Typeahead, an autocomplete library.
- DavisJS, a client side routing library.
Truth be told I'm feeling slightly overwhelmed. While I've used Bootstrap and JQuery in the past, this is really the first proper client side project I've worked on. It's a learning experience, to say the least. Learning to handle a half dozen new libraries at once is a bit of a mess, but the documentation is good. It's just a bit annoying having to spend ten times as much time reading documentation as I do actual programming.
In the end I've gotten most of things to work, next up on the todo list is to integrate Mustache and Knockout. Hopefully this will make it possible for me to split my HTML out in multiple template files. As it is, everything is in a giant file, because I can't figure out how to make Knockout load external template files...
Getting all of this to play together is a bit of a challenge, but who doesn't enjoy a good challenge?