Ruthless Automation

M-x write-something

JSConf 2013 Days 2-3

Day 1 recap

Regarding the link above - how to use Octopress and want to create internal links w/o hardcoding the URL.

Day 2

JSConf decided to take an extra day between events this year to allow some fun and games. Sheer brilliance to me as a first time attendee, and based on the applause at the end of the conference when asked about it, repeat attendees loved it too. I took the day off to spend with my wife and we did the pool and a trip into town by ourselves. Also met some local wildlife*. Letting the information from the day before sink in, as well as doing some writing and catchup, made the next day so much more enjoyable. Usually there’s a frantic attempt to remember/recap/process everything you learned on day 1 while you’re watching day 2. This was much nicer, and I’m hoping they keep this format.

Some things they provided, either on day 2 or throughout the confernce:

  • Amelia wheels - free bike rides sponsored by Twitter
  • Facebook hacker arcade - video games, air hockey, etc
  • A shuttle downtown the night of the free day to eat/drink/drink/drink…
  • Nodebots and nodecopters

Still wishing that there was a standard hashtag format like this: #conference #speaker #slides. Something to make it a little easier to find slides or links.

Day 3

Much more technical feel to the third day. Lots of presentations were showing code, or delving deep into the innards of their topic. My only complaint is that presenters starting going long and the two rooms got off schedule with each other. You had to leave one room 15 minutes before the end of a presentation to catch the start of another. A quick announcement that things were going to sync up again starting in X minutes would have solved it, but neither staffer I asked was willing to do that w/o talking to the organizer.

Brendan Eich & Toward a language-neutral browser VM

He came in just a little late, but considering he’d flown across the country the day before, I don’t think anyone held it against him. Plus, he’s BRENDAN EICH. I’m still not sure how I feel about web vs native, although I am sure that there are limitations to the web that may or may not be equaled out by the ubiquity (it’s too hard to clear all cookies for just one site, including third party, and the dependency on third party cookies for a lot of sites make it a pain). I have yet to find any web apps that are as good as the best native ones.

I confess, I’m flattered that my 2014 JSConf plans might include yelling at him during his presentation.

  • AAA games - Halo, etc. top end games. Can they run on the web?
  • Recent efforts to make web like native - web audio, webRTC.
  • emscripten - complie c/c++ to js
  • asm.js - native js performance by making a small, fast subset of JK
  • is the web the last compiler target?
  • he just ran unreal tournament in a browser, all JavaScript driver. AWESOME.
  • with large apps, JIT runs into issues and makes mistakes
  • asm.js is a subset of js and very optimizeable
  • asm uses coercion via bitwise operators

Selena Deckelmann & Schema Liberation with JSON and PLV8

Slides and more information on her blog

A technical talk about how you can store JSON data in Postgres. Not being db guy, it’s not clear to me how valuable this is. Seems like the main advantage is you don’t spend a lot of time worrying about schema design.

  • dbadmins have to design schema and there’s tension between this and flexibility of JSON
  • ex - mongodb has flexible schema. dbobjects look like app objects
  • is schema premature optimization? maybe
  • double the storage size when you store as JSON
  • but native methods in postgres for dealing with JSON
  • start by using JSON, then optimize later

John-David Dalton & Perf the web forward!

He’s very passionate about what he does, but what seemed like a humorous attitude towards most library maintainers later felt like it might have had some deeper roots when the Yayquery team roasted him a bit. Not sure of the history here, but it does make me wonder if the optimizations he recommends are valuable regardless of use case, or if they are somewhat academic. Either way, understanding how the code is written is always a good thing.

Hoist out .call and .apply

  • Basically if you don’t pass a this to the call function, just return the callback versus actually binding to the scope
  • Make a ‘createCallback’ function that checks as above

Avoid binding

  • Coerce a function to a string, using Function.prototype.toString and regex for \bthis\b (can error if ‘this’ in comments */
  • Then check if the function uses this
  • Tf it doesn’t, doesn’t need to bind

Coerces with care

  • Don’t need to slice if you are looping over arguments like an array
  • Can just start at 1 if you know it’s an array
  • Don’t have to flatten, can use concat
  • Lots of array details in here I didn’t fully follow

Sugar in moderation

  • Chaining has a cost since it’s the non-common case
  • _ and lodash are optimized for non-chaining
  • Others are optimized for chaining (mootools)
  • Lazy.js optimizes for chaining by just adding items to a queue and only giving back what you want

Questions

  • What’s the general use case? The general use case is what’s shown in tutorials and questions, or how you promote using it.
  • When using createCallback, why not prototype.bind vs createCallback? it’s often slower.
  • Minified code can change the perf and actually be slower. gotta test both.
  • Need a perf suite for your library - use benchmarkjs.com

Domenic Denicola & Promises/A+ Was Born

Slides and notes

Very passionate speaker, and a good talk. Generators seem very interesting, need to follow up more.

  • We turn primitives into patterns
  • Continuation passing style - you just keep handing the logic of your program to the next function.
  • You just keep wrapping stuff in a function.
  • turing tarpit
  • Promises give you back async versions of return and throw
  • Generators are in chrome canary
  • q library for node
  • Not sure of his point about generators and promises
  • Prommises are objects representing objects from a different time
  • With generators, promises can be on a remote computer
  • CommonJS Promises/A - $ didn’t implement correctly
  • kis kowal q library
  • open spec development: cause, people, code, contract, setting. Need all of these.
  • code before prose

Peter Van Der Zee D & Live Recompilation of Running JS

Github repo for his library Recompiler

I wasn’t going to attend this one at first, but there was some equipment failure and he presented during lunch instead. Very cool concept about how you can make a library that allows live code editing that reflects immediately. However, he still had some issues that kept all his demos from working. Personally, I believe you need a backup if you’re going to live code. Have something you can show that works no matter what.

YayQuery & Yay Yay Yay Query

So effing weird and funny.

Ben Farrell & Using the Microsoft Kinect with Javascript OR Sweatin’ to the Web

Winner for best dressed presenter. He tried to use gestures for his presentation, but they stopped working. Then they started again. So a lot of the time was spend messing with that. Wish there had been a way to turn them off so we could have concentrated on the talk instead. I think it threw off his message a bit.

Adam Baldwin & Builders vs Breakers

Enjoyed this talk as a communication focused talk. The core of everything we do as people is communication, and his stories were interesting. Also, this. Had a nice chat about the talk, travel, and kids.

  • @adam_baldwin
  • Work
  • Github repos
  • Slides of Builders vs Breakers

  • Builders are his audience
  • Didn’t do a good job talking to them at first
  • Had too much of a breaker mindset
  • Found a basecamp issue, told them
  • They said we need that as a feature
  • he made video saying xss is not a feature and basecamp got killed for it
  • breaker gets a high from finding sec bug, builder gets a low
  • Important to realize both sides of the story, regardless of which side you are on.
  • Node Security Project - audit every npm module

SECURITY.md needed in repos

  • how to report
  • expections
  • list of humans

Adam Solove & Constraint programming in the browser

Adam just published this You Should Speak at JSConf, and it captures some good thoughts about JSConf itself. It’s really made by people like him who decide to speak and are willing to get up there and lay themselves out. This was an interesting talk, because I could see date scheduling based on constraints something we might get into at work. Best line from his entire presentation: ‘If we can express the problems we have in terms of a problem domain that someoe has already written, we can get FAST answers.’.

  • @asolove
  • Original cassowary code
  • His Github Fork

  • Could have written same js code 15 years ago with CGI
  • Web apps are same as forms - you decide what inputs to take, and what outputs to generate
  • Instead, make all things both input and output, and just use constraints between them
  • Constraint programming - write relationships, not procedure
  • Think addition vs algebra - addition is just a function, algebra means you can either solve for all or define relationships
  • We don’t know what users will do with inputs
  • C only works when things are linear and numbers
  • Bret Victor scrubbing calculator
  • colybra
  • minikanren/core.logic
  • If we can express the problems we have in terms of a problem domain that someoe has already written, we can get FAST answers
  • Eventually, we won’t be smart enough to write these things

Chris Williams

Things wound up with a general Q&A. I cannot wait to come back here next year.

  • jsconf 6 is a go, and will be back here at Amelia Island.
  • @pamelafox - ideas for next year, wants interview techniques (both sides)
  • @cowboy - can we have panels? @voodootikigod - prob not
  • how are presentations chosen -
  • can presentations have little more descriptions/list of libraries
  • how do we keep these conversations going? irc, fb, google hangout, google plus, physical hangouts, meet each other. beer.js, ming.js
  • keep the second day going - free day with activities
  • lots of people want to participate, but aren’t physically here. How to help?
  • will be jsconf brazil, australia, argentina, south africa, asia
  • why no live stream? because we buy tickets and why let someone who hasn’t in. no one ever says “oh my god the live stream is great”.
  • use coatella? coachella?
  • carter - he put on jsconf in NW (cascadia js). for regional conferences - what should be just like jsconf, what should be different
  • remy - 30 minute format is great, easy to digest.
  • the SA conf in columbia - you should highlight local talent, that gets the local community going
  • family friendliness is great
  • some way to meet people beforehand? tried google hangouts
  • some way to keep broadcasting the local stuff
  • jsconfeu sept 2013?

Footnotes

  • Started off by embedding that tweet, but that’s an awful break in the flow of a post. Think I’ll stick to just linking from now on.