The point about quotes comes up often. The important part for us is consistency at Airbnb. We use eslint to enforce and maintain the consistency. Would it be more consistent to treat strings the same everywhere? For some projects sure. We diverge from the community a bit in the sense that we treat JSX as not JS and we aim to be consistent about that. If your project treats JSX and JS the same then yes, we've certainly seen folks do this. As always, please do what works best for your team or project [1]. Forks encouraged.
I will say an added benefit of including a style guide in a project for large teams that may get lost jumping straight into prettier, has been helping our engineers become stronger javascript programmers in the process of learning our style guide. That's largely anecdotal evidence from my time at Airbnb and of course your mileage my vary.
Personally, I support the Prettier mission 100%. Easier consistency is huge. Removing barriers to contributing to open source projects is huge. PR reviews focused on what the code is doing vs painful style nits is huge. It's been great to see this come from the community and I look forward to seeing where the community takes it. Congrats to all of the contributors on the 1.0!
Yup! We only recommend !function(){}(); for a module where you just need your function to run. If you rely on the return value use (function(){})(); or (function(){}()); (more on this: https://github.com/airbnb/javascript/issues/21)
Check out the Makefile (https://github.com/cloudkick/whiskey/blob/master/Makefile) to see what `npm test` is doing. This abstracts out the test command, because you could be running `cake test`, `make test`, `node whiskey test`, etc. and if you're just using the node package, you probably don't care what the command is, you just want to run the tests. `npm test` is the way to do it.
Tech Talk: Eric Tschetter on Druid - Distributed Exploration of High Dimensional Data
Druid is a distributed system in use at Metamarkets (http://www.metamarkets.com) to facilitate rapid exploration of high dimensional data. They use Druid to expose impression monetization data to internet publishers along any arbitrary combination of demographic, content and sales-based dimensions. One Druid cluster currently exposes a data set of >15 billion rows of data representing >500 billion impressions in hypercubes of varying dimensionality (largest is 28 dimensions) while allowing for exploration using top lists and timeseries in sub-second latencies. The tech talk will be a discussion of the design considerations and architecture of the system.
Eric Tschetter is the lead architect of Druid, Metamarkets' distributed, in-memory database. He held senior engineering positions at Ning and LinkedIn before joining Metamarkets. At LinkedIn, Eric productized LinkedIn's PYMK with Hadoop. He holds bachelors degrees in Computer Science and Japanese from the University of Texas at Austin, and a M.S. from the University of Tokyo in Computer Science.
Anecdotally, Airbnb's mobile website (http://m.airbnb.com) was written entirely in CoffeeScript.
We had never used CoffeeScript before the project and we finished what you see today in about 6 weeks with a team of 3.
The project codebase looks like it was written with consistent style all the way through, which can be harder to do with JavaScript when it's 3am and all you want to do is make it work (when you start to get lazy). It was nice knowing that the for loops I was writing would compile to the same for loops that the other guys were writing.
CoffeeScript currently makes up just over 1% of Airbnb's codebase. I expect that number to grow quite a bit over the next year. Here's the breakdown according to github: http://cl.ly/2A241Z2d2I2m2R211Q1t
@jashkenas: Could you expand a bit about your thoughts on the growing ecosystem of community made patterns and modules on top of Backbone and how it might help direct [edit: 'help direct' is the wrong phrase, can I change this to shape?] the future of Backbone?
We needed a meetup tool for all of the awesome Community Meetups that we throw around the world, so two of our engineers (Raph: https://github.com/Raphomet & Horace: https://github.com/warpdude) built an Airbnb Meetup tool. We like to dogfood, so we use it for our nerd meetups as well.
As for the meetup being on a busy Thursday, it just happened to be a time that worked for everybody.
There are only four of us on the frontend team right now. We need more!
We like engineers with passion. People who get excited talking about the new frontend development frontier. Conversations like this happen all the time:
- Think Node.js would be cool for a realtime dashboard? Yes, do it.
- Maybe we could try using backbone.js and a fat client for this feature? Fork it and let's go.
- What's SASS? Install the gem. We're using it.
Our fourth frontend engineer just started last week. We sat him down, showed him how we were doing things and we asked him, "What do you think?" and he says, "Have you guys heard of Jammit? It's used for asset packaging. It's pretty cool" -- A couple hours later he was showing us the page load speed increase and how to use it.
If you're a frontend engineer wondering what it's like to work at Airbnb, feel free to email me: [email protected] or if you prefer character limits I'm on Twitter: @hshoff.
The only thing that caught my eye was a vertical scrollbar that only scrolls about 20 pixels worth shows up on the homepage on a 13-inch macbook running chrome.
The goal of vx is to make d3 feel at home in any react codebase.
github: https://github.com/hshoff/vx/
gallery: https://vx-demo.now.sh/gallery
tutorials: https://github.com/hshoff/viewsource