My friend Alexander Dewing loves hardware and software. He’s probably the best example of a hobbyist hacker that I know. Since arriving at Stanford he has
Combined a breadboard, a set of paperclips, an RFID sensor, and his dorm room door to create wireless locking and unlocking
- Introduced bluetooth support to the contraption so that he can alternatively unlock the door from his laptop
- Taped a dirt cheap android tablet to the door, built a simple web interface, and thus introduced PIN based entry and remote (within Stanford firewall) unlocking
and he isn’t finished. When I checked out the source of the tablet’s web interface I was surprised to see he was doing a lot of unnecessary heavy lifting and generally making his work harder than they needed to be. A fair amount of dom interaction, dynamic updates to html, manually posting forms between pages and redirecting, all with raw JS and html.
It turns out its been years since he last did web development and wasn’t aware of a lot of the existing tools, frameworks, applications, etc that would make his job 50x easier. I spent the next hour or so giving him a whirlwind tour of jQuery, Backbone.js, Bootstrap, Meteor.js, Handlebars, Coffeescript, Jade, Stylus, Node.JS, and more. For the sake of being provocative and making a point I told Alexander I could rebuild the keypad’s front end, back end, and server in 15 minutes and at ~3AM I did just that:
Note that the intent of this video is not to be impressive, in fact I think the code involved is extremely unimpressive and uninteresting. My intention was to demonstrate web programming’s greatest strength: the ability to create substantial output in incredibly small amounts of time.
This hyper-rapidity is not characteristic of any single web language or framework by themself, its the union of the languages and the right sampling of frameworks that makes web programming great.