Scotland.JS 2013

JS Love You

https://twitter.com/gr2m/status/332410940979036160/photo/1

Two weeks ago, 9th-10th May, I took some time out from day to day development and went along to Scotland.JS. It was a great two days with a number of very good speakers, although too Node.JS heavy for my liking, it was a very good event. Below is a quick summary of my favourite talks.

Gregor Martynus: Look ma – no backend

This was a great talk focusing on the way front even developers can interact with a backend service, without caring what/how that backend does its job. For me, the key message here is focusing on good API’s and ensuring they are as fluent and as meaningful as possible.

Gregor introduced the concept of ‘Dreamcode’, ignoring all constraints of languages etc and design some code that defines the perfect API for a given task. This can then be refined using the contraints and limitations provided.

More at http://nobackend.org/

Philip Roberts: Enemy of the State: An Introduction to Functional Reactive Programming and Bacon.js

Philip’s talk had some similarities with what we regularly have to solve here at Caplin. How do you deal with callbacks and events without ending up in a mess? His two key points against callbacks were: they invert the flow of the code, resulting in code that is very difficult to understand; and they are not pure functions, making them incredibly difficult to test. Bacon.JS introduces event streams that treat events as a single list of events, ordered by time. We can then bind to these events.

More at http://baconjs.blogspot.co.uk/

Jason Frame: Livecoding in JS

For me, this was a talk that had the ‘Wow!’ factor but left me questioning how likely I would be to use it in production. Jason did, however, mention a very good use case for LiveCoding – teaching children how to code. Children don’t care about compiling and testing code, they want to see changes NOW. I could see the example of a car stopping at traffic lights, or a space invaders game, being very good starting point for little programmers.

Sebastian Golasch: The browser, the Programmer and the Dalek

Sebastian was tackling the problem of writing reliable cross browser UI tests, something we have also had to tackle at Caplin. He mentioned the likes of Selenium and WebDriver as current solutions, but as a JavaScript developer wanted to write the tests in JavaScript and to make it as simple to use as jQuery. This is the drive behind Dalek.js. His demo involved using Phantom.JS as a headless browser to speed up the execution of test cases.

https://github.com/dalekjs

Damian Nicholson: Writing (testable | maintainable | scalable | rock solid) JavaScript

This was by far one of the best talks in my opinion. While it didn’t have as much wow factor I agree with every principle Damian stated. As a developer writing good code is key, but how do we do that? “JavaScript + Unit testing = Good code”. Damians key focus was on tests, by writing Unit Tests, ideally using TDD we inherently write good code that is architected well. He showed a good example of testing some code that was using jQuery, which is typically badly written and difficult to test.

James Shore: Rigorous, Professional JavaScript

James’ talk focused on making a company succeed. He hit on the point that technology doesn’t help a company succeed, but it can break the company. He also talked about technical debt and refactoring being key to good, maintainable code and the importance of tools like JsHint and JsLint for static analysis.

NodeCopter

While not a scheduled talk there was a demo from one of the guys organising the NodeCopter event which was running the Saturday following Scotland.JS. In a nutshell NodeCopter is a small flying quadrocopter that can be controlled via Node.Js. The was a demo of the copter flying up and down with the beat to music and being controlled using an XBox 360 remote. I just need to find some pocket money now so I can get myself one…

Node Copter

https://twitter.com/suhajdab/status/332480161213710338/photo/1

Leave a Reply

Your e-mail address will not be published. Required fields are marked *