FluentConf 2014 - Day Three
Last updated on
A few more things I got out of day two at FluentConf. All of the keynote videos are up on in O’Reilly’s channel on YouTube.
Highlights from the keynotes
Keynote with Paul Irish (Google)
- Critical CSS inline in the head - for above the fold
- Use the waterfall view
- Google Page Speed
Beyond Pushing “Play”: Interactive, Data-driven Videos for a Web-based World by Susan E. McGregor (Columbia University)
- Data Docs - embeddable interactive videos
The Goodness of JavaScript by Aaron Frost (Domo), Dave Geddes (Domo)
- Don’t talk about math
- TrollCount.com
Keynote with Yehuda Katz (Tilde Inc) and Tom Dale (Tilde Inc): In Defense of Frameworks
- Framework are about defining roles
- Flexible API doing the wrong thing feel as good as doing the wrong thing
- It “makes it feel good to do the right thing” I should re-read how Web Components fit into EmberJS plans. I’m also curious how ECMAScript 6 may fit in to EmberJS.
I played with EmberJS before I played with AngularJS. A couple years and a name change later, it’s time to give EmberJS another look. I must admit, the reasons I was initially turned off by AngularJS, I grew to like. It’s declarative approach felt like the bad old days of onclick=“someFunction()“.
They had me at how you now build components. No wiring with JavaScript, just HTML and a template
Highlights from the sessions
Reusable Libraries for Hypermedia Clients by Mike Amundsen (Layer 7 Technologies)
- Reusable middleware for the network - back end & front end don’t matter - agree on message model
- ”Don’t code the problem, code the message”
- Don’t memorize details at build time - recognize them at run time
- React, not dictate
- Regarding RFC 2119 words: Implement all the MUSTs, As many SHOULDs as possible, If possible, the MAYs
- HAL (most popular)
- Collection+JSON
- Siren
- JASON-API
Office Hour with Mike Amundsen (Layer 7 Technologies)
Good discussion among a small group interested in Hypermedia APIs. A few highlights for me:
- Suggested reading: Data on the Outside vs. Data on the Inside by Pat Helland
- As for the half dozen standards that exist at this time, it sounds like HAL is the winner. A few more tools support it, it’s simpler to use. I’ve used it and like it’s relative simplicity.
- Someone mentioned using GitHub Gist to manage mocks for data contracts between the back end and front end teams. They use them for unit tests. They get versioning. They can describe the mock data. I asked how they organize their Gists - say for a feature - they zip them up. In my current gig, I advocated using a git repo on the enterprise GitHub so one can group JSON mocks by feature or whatever. As far as I know, you can’t really organize Gists. I’ll have to look in to that.
- I asked about JSON Schema and Hyper-Schema - He has a client with thousands of schemas and it can get over complicated - He mentioned the Postel’s Law or the robustness principle - “Be conservative in what you send, be liberal in what you accept” - validate on the way out, not on the way in, otherwise nothing gets done
Meteor: A Full-stack JavaScript Framework for Modern App Development by Matt DeBergalis (Meteor)
Modern application:
- Desktop & mobile are 1st class citizens
- Data on the wire
- Real time
- UI reacts to application state
- I heard isomorphic programming, so I have some more reading to do
AngularJS - Top 10 Tips by John Lindquist (JetBrains) A few highlights (these are not the 10 tips):
- “If you have the time, build it without jQuery.”
- You should be able to read the intent of the application from the HTML
- Keep model, controller and view separate - keep code testable
- Understand Promises
- ES6 is coming (native promises, iterators, generators) - learn about it
- Don’t build apps in single module, break them up
- Learn the build tools, however don’t switch in the middle of a project
- Good components on bower: angular-ui, angular-bootstrap, angular-ui-utils, ng-upload, Restangular, ionic
- Use Protractor for testing
- Avoid using $rootScope for sharing data - use Services
- Rely on binding
Unpacking Technical Decisions by Sarah Mei (Ministry of Velocity)
Humorous take on one of the tools of consulting - a system named after oneself:
People | Project | |
---|---|---|
Internal |
Familiarity (read the code) Identify with the style of code (procedural vs OO) |
Interface (Readme, use gem) |
External | Popularity (StackOverflow, HackerNews) | Activity (github commits, issues, pull requests) |
Are we asking the right questions?
Writing Real Time Web Apps by Wesley Hales (Shape Security)
- Increased bandwidth doesn’t help page load times (PLTs) - latency per bandwidth
- DNS lookup, round trip times (RTTs)
- SPDY addresses RTTs & PLTs
- opens connection & pushes all resources
- SPDY antipatterns (concat resources)
- Servers: Jetty 9, Node, Proxy (nginx, HAProxy, Apache mod_proxy)
- WAMP - RPC, PubSub
- PubNub
- Pusher
- Testing fallbacks - disable and check polling
- He ends with a story about punching his dog in the head to break up their fight… “dog punch”
What’s Next?
I learned about a lot of things I want to explore. Some things that will help with the current gig and over the long run.
Next up, perhaps Midwest JS - it’s a lot closer to home. I’m curious about the advanced and server-side tracks.