Continuing our interview series, the MiXiT team asked some questions to Bodil Stokke who will do a talk about how to do Painless client side JavaScript Development .
This interview was also published on the Duchess France Blog
Bodil has been a web developer since before the web was cool, and has shepherded many big projects built on web technologies, among them two generations of web map applications for Eniro, Scandinavia's leading business search provider. She currently works as a Java developer for Steria, honing her combat skills on enterprise developers reluctant to adopt shiny Future Tech such as Git, Clojure and Node.JS. You could follow her on Twitter or on GitHub
MiXiT Team : Who are you?
Bodil Stokke : For the last 15 years, I've been calling myself a web developer. In reality, I'm interested in everything to do with programming, as I've been since I wrote my first lines of BASIC almost 30 years ago (10 PRINT "BODIL PWNS" 20 GOTO 10), but my projects tend to focus around writing applications for end users, preferably applications that run in a browser. Even my current job as nominally a Java enterprise developer involves writing frontend code, which I do using Swing - thankfully, this is my last month in my current job, after which I'm going freelance just so I'll be able to make sure I never have to write another line of Swing ever again.
My favourite colour is purple, my favourite Pokémon is the mudkip, my personal hero, if I had to pick one, is Richard Stallman, and I'm not a cat person. My only pet is a Roomba, though it probably thinks of me less as its owner than as a useful slave it suffers to live until it's worked out the bit where it gets stuck on the doorstep and needs help. Meanwhile, it spends most of its time sitting on its charger, plotting the inevitable robot uprising.
MiXiT Team : Could you describe your typical day? Do you work all the day ?
Bodil Stokke : For a living, I use Eclipse running on Ubuntu on a VirtualBox VM on the Windows laptop my client makes me use to write Java code. I don't spend all day actually writing code, because my company has picked up on this really fashionable trend called Agile, where if you perform the prescribed rituals like standing in front of a whiteboard rambling about what you've been working on and moving Post-Its around, John Scrum will bring your project success and you will deliver on time. So a lot of time that might have been spent writing and talking about actual code is instead wasted on ritual and bureaucracy. And we're still not delivering on time, for some reason. In my spare time, I leave Eclipse well behind and pull out Emacs to do a bit of real programming. It's more about learning and experimenting with new and shiny things, though, than any real projects. I spend a lot of time learning new programming languages - they say you should learn one new language a year to keep your edge; I think I did about five last year. I spend quite a bit of time writing and giving presentations on what I learn, because sharing it is half the fun.
MiXiT Team : Have you been loving javascript for ever, or did Coffeescript made you love it ?
Bodil Stokke : I don't think I could ever love it. Javascript has a lot of great ideas, and a lot of really nasty design flaws. Using JS well involves making a conscious decision to deliberately ignore all the nastiness, and work hard to stay within the bounds of the Good Parts as Douglas Crockford defined them. Even then, a lot of pain still persists because of the cumbersome syntax. When CoffeeScript came about, giving JS a cleaner and more concise syntax as well as adding much needed language features like for comprehensions and removing the difference between statements and expressions, JS was finally starting to feel like a decent language. But it still has its very obvious shortcomings, so we'll keep trying to work around it by building other languages and abstract runtimes on top of it, like Dart and ClojureScript.
MiXiT Team : What would be your ideal technical stack for a webapp today ?
Bodil Stokke : Clojure everywhere! I wouldn't dream of using anything other than Clojure on the server (if I have a choice), and I wish ClojureScript could hurry up and mature to the point where it's a painless development experience on the client side. The problem with ClojureScript at the moment is only the lack of stable and well designed third party libraries, like jQuery and Backbone, only designed from the ground up with functional programming in mind rather than the very object oriented JS platform. The ClojureScript workflow also isn't quite stable yet. Both problems are, of course, being worked on, and I'm looking forward to being able to write all my code everywhere in a nice, Lispy style.
MiXiT Team : You will talk about Javascript MVC, do you have time to test some other framework than backbone ? Do you like some of them ?
Bodil Stokke : I've looked at lots of MVC frameworks, and I haven't really developed a preference yet. The reason I'm going with Backbone for the moment is simply that it's the one with the fewest opinions. Most other frameworks have ideas about how to structure your code and your markup, and usually include their own templating languages. This can be a good thing - it allows for writing a lot less code to get things done than you might have to write using Backbone, for one thing. Backbone focuses on only the core MVC dynamic, and expects you to provide the rest on your own. I expect we'll eventually have a couple of different frameworks meeting different needs and preferences, all using Backbone as the backend and various view engines and data stores as well integrated components. In other words, Backbone's strength, for me, is the fact that it's decoupled by design, and lets you do as you please with the rest of your code.
Personally, I think Serenade.js looks pretty, and I suspect Knockout might have a lot going for it, but I'm sticking with Backbone for now, because it's so easy to back out and replace components you realise you don't like after all.
Thanks Bodil!
See you at MiXiT on Thursday 26 April at 11:20 a.m. for your talk "Painless Web App Development with Backbone