Interesting real use of @hapijs and walk through from the guys from @OpenTable uk.
Atom & Sublime, both are great - but which to use ?
TLDW: Atom looks really good.
I’m currently using Sublime Edit (http://www.sublimetext.com/) which is also really good.
Atom could take Sublime’s role on my quick launch bar if it had one killer (for me) feature.
Yes, Atom does have an auto complete plugin : https://atom.io/packages/autocomplete-plus, but - its dependent on the current project and or snipits.
Sublime, via Komodo has a autocomplete system called “CodeIntel”. Its great : https://github.com/SublimeCodeIntel/SublimeCodeIntel does all sorts of smart things like :
var fs = require('fs');
Will know that fs is the filesystem lib and give you the auto complete for its functions.
Once Atom has something similar, or i work out how to make autocomplete-plus work in this way, i might give Atom another try.
What happens at LXJS, doesn’t stay at LXJS
Here are a few of my notes / thoughts on my experience from LXJS (http://2014.lxjs.org/).
TLDR; It was amazing, inspiring and I want to go to the next one!
Wow. Much as been said about this on twitter, but the location (http://2014.lxjs.org/location/) of the venue was awesome, literally.
awe·some [aw-suhm] adjective 1. inspiring an overwhelming feeling of reverence, admiration, or fear; causing or inducing awe: an awesome sight. 2. showing or characterized by reverence, admiration, or fear; exhibiting or marked by awe. 3. Slang. very impressive: That new white convertible is totally awesome.
It was based in Estufa Fria (a greenhouse/gardens) in the center of Lisbon. Thankfully it wasn’t a true greenhouse, it was actually cooler than the outside as the roof was slatted wood and offered delightful shade. Being able to take a step out of the hall and be in a cool tropical paradise (with fast wifi) was a joy.
To top it off, the venue had a brilliant logistics team who kept us all well fed and watered throughout. Bravo.
Varied in topics, high in quality. Calling out a few bellow that caught my attention, but you can see them all on the LXJS youtube channel : https://www.youtube.com/user/lxjs2012/videos
Chrome team show new toys (aka Componentize the web!)
To go along with the recently released “Materials Design” http://www.google.com/design/ the chrome team has been working on something called Polymer.
Polymer (http://www.polymer-project.org/) wants to turn everything into a component and lets you enhance and extend the. Worth a look.
Web Audio (aka Audio for the masses)
As someone who isn’t hugely musical, i wasn’t expecting the web audio talk to be of huge interest, but a snip-it at the end of the presentation did spark my imagination.
Using audio as a broadcast network layer, specifically FM.
Mozilla’s $25 phone comes with and FM receiver. Were that to be used to pick up a local FM channel, for data, you’ve got yourself a nice little local broadcast system for all sorts of things. A bit like a http://chirp.io/ or http://www.slicklogin.com/ system, but for an entire town.
Google also seem to be thinking about using audio as a network with their chromecast : http://www.androidpolice.com/2014/06/26/chromecast-will-use-ultrasonic-sound-for-location-based-casting-on-separate-networks/
WebRTC (Peer to Peer web)
? Video to follow i guess
An interesting look at a under exposed part of the new web world. WebRTC is peer to peer communication for web browsers. Very fun. Can (and should) expose some new and exciting solutions to problems.
Some cool examples :
- https://www.sharefest.me/ - Send a file direct to someone, no middle man. Super fast.
- https://talky.io/ - Think Google Hangouts or Skype group call - with no app or setup!
- https://peercdn.com/ - Clever concept, uses people viewing your site as the CDN.
ChromeCast uses WebRTC : http://www.webrtcworld.com/topics/from-the-experts/articles/347900-chromecast-webrtc.htm
Others of note
- Service Workers - https://www.youtube.com/watch?v=a1KQGDRNepI Think in an #OfflineFirst way.
- Learning Happens - https://www.youtube.com/watch?v=BGNwZu3KJlE A packaged RaspberyPi designed to be the ZX spectrum/BBC Micro/Atari for the next generation.
- Atom.io - https://www.youtube.com/watch?v=DyFdr9zVPHE GitHub showing off their editor.
- Invest. Amplify. Educate. - https://www.youtube.com/watch?v=nK2og2MSUCs Life long learning, not waterfall (all at the start) learning.
- Hapi are the developers - https://www.youtube.com/watch?v=EFSB1bjkjbI Hapi, Wallmart’s API framework.
- Extending DevTools - https://www.youtube.com/watch?v=ohF_exBsQYQ Build your own Chrome dev tools.
There were a range of training session (wish i could have attended them all), but you could only pick 4 (and i could only pick 3 due to needing to leave early on day 2).
I’ve been using and learning Hapi for a while, so the chance to talk with its creators was too good to miss.
We learned plenty of new things and got some direction on a few head scratchers we had encountered.
Check out NPM makemehapi (https://github.com/spumko/makemehapi)
Wow. Just wow. I don’t get 90% of what Dtrace can do, but i know its powerful and when i need it, its there.
Was also some very impressive work with core dumps, brining the crashed app back to life and being able to interrogate its dieing moments to see why it crashed.
Internet Of Things
Using the RaspberyPi and AirPi (http://airpi.es/) to make a weather station that reported its finding back to a cloud provider.
A NFC tag on the conference badge that let you tag people you talk to and build a contact list for the event. Very cool.
@dscape & @nunoveloso
The Nuno’s behind my attendance, convincing me it was a good idea and not taking no for an answer.
Corbis & Demotix
For sending me!
Loved it. Learned a lot. Met some brilliant people. Will be returning next year!
They might as well be, this is spot on
What countries have most influenced the way you speak? Take this test designed by MIT researchers and find out.
The quiz is interesting, but the most fascinating and revealing part is being abel to explore the data it generated : http://www.gameswithwords.org/WhichEnglish/dialect_results.html
For example, who knew Ebonics was linked to Danish?!
Anyway, the quiz got me right:
Our top three guesses for your English dialect:
1. English (England)
2. Welsh (UK)
Our top three guesses for your native (first) language:
This is good.
Are you feeling Jurassic yet?
Today in 1993 (yes, 21 years ago) Jurassic Park was released in the US.
UK release was on 16 July.
Netflix keeps telling customers that ISPs are to blame for bad video.
Brilliant. But does require the consumer to have a choice.
Awesome guide. Thanks. I’ve ported the chromeOS touchpad driver to Linux, which makes the touchpad support even better than the synaptics driver fix…
Re-post, as i had to search my twitter feed to find this.
WTF is AOP
AOP or Aspect Oriented Programming
Aspect-oriented programming entails breaking down program logic into distinct parts (so-called concerns, cohesive areas of functionality). Nearly all programming paradigms support some level of grouping and encapsulation of concerns into separate, independent entities by providing abstractions (e.g., functions, procedures, modules, classes, methods) that can be used for implementing, abstracting and composing these concerns. But some concerns defy these forms of implementation and are called crosscutting concerns because they “cut across” multiple abstractions in a program.
Logging exemplifies a crosscutting concern because a logging strategy necessarily affects every logged part of the system. Logging thereby crosscuts all logged classes and methods.”
In a nut shell : AOP lets you add behaviour to code without needing to change the code. Magic.
A brilliant analysis of different language approaches here : http://www.garfieldtech.com/blog/language-tradeoffs
Aspect-oriented approaches emphasize Modifiability, Extensibility, and Expediency at the expense of Testability, Verifiability, and arguably Understandability.
- Joint points = Where some other code can jump in and change things.
- Pointcuts = The code that does the jumping in.
Stereotypical AOP examples
- Transaction boundaries
- Actually really easy, as it just replaces the method!
- Several libs / frameworks to do this :
- AOP in 50 LOC - https://github.com/briancavalier/aops2gx-2013/tree/master/src
- cujoJS’s meld - https://github.com/cujojs/meld
- Dojo’s dojo/aspect - http://dojotoolkit.org
- Twitter FlightJS - https://github.com/flightjs/flight
- dcl - https://github.com/uhop/dcl
They all work in basically the same kind of way, but have their own take on things.
Things like AOP
Much of Drupal’s modular power comes from its hook system, which really can be thought of as a AOP hack. Any module or code can offer up hook points (aka joint points).
Other modules can then implement these hooks (pointcuts).
HapiJS extension points
HapiJS’s server exposes what it called “extension points” (joint points) which are events fired buy the server at parts of the Request lifecycle.
You can write plugins which extend from these points. (pointcuts)