Search

6/24/2014

Are We There Yet?

Are We There Yet?

In his keynote at JVM Languages Summit 2009, Rich Hickey advocated for the reexamination of basic principles like state, identity, value, time, types, genericity, complexity, as they are used by OOP today, to be able to create the new constructs and languages to deal with the massive parallelism and concurrency of the future.

6/17/2014

Merrick Christensen - JavaScript Dependency Injection

Merrick Christensen - JavaScript Dependency Injection

var WelcomeController = function (Greeter) {
    document.write(Greeter.greet());
};

var Injector = {

    dependencies: {},

    process: function(target) {
        console.log('target:', target)
        var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
        var text = target.toString();
        console.log('target.toString():',text)
        var args = text.match(FN_ARGS)[1].split(',');
        console.log('args:', args);
        console.log('this.getDependencies(args):', this.getDependencies(args));

        target.apply(target, this.getDependencies(args));
    },

    getDependencies: function(arr) {
      console.log('fn: getDependencies', arr);
        var self = this;
        return arr.map(function(value) {

            return self.dependencies[value];
        });
    },

    register: function(name, dependency) {
        this.dependencies[name] = dependency;
        console.log('fn:register', this.dependencies)
    }

};

var RobotGreeter = {
  greet: function() {
    return 'Domo Arigato';
  }
};

var OtherGreeter = {
    greet: function() {
      return 'That will do pig.';
    }
};

// Randomly register a different greeter to show that WelcomeController is truly dynamic.
Injector.register('Greeter', Math.random() > 0.5 ? RobotGreeter : OtherGreeter);

Injector.process(WelcomeController);

6/16/2014

Project Parfait (Beta) from adobe

Project Parfait (Beta)

Extract everything you need from PSD comps - in your browser - PSD CSS Extraction, Measurements and Image Optimization Service for the Web
Avocode – Preview and inspect PSDs
Get CSS, SVG, image assets, fonts, colors. All without Photoshop.

6/12/2014

dc.js - Dimensional Charting Javascript Library

dc.js - Dimensional Charting Javascript Library

dc.js is a javascript charting library with native crossfilter support and allowing highly efficient exploration on large multi-dimensional dataset (inspired by crossfilter's demo). It leverages d3 engine to render charts in css friendly svg format. Charts rendered using dc.js are naturally data driven and reactive therefore providing instant feedback on user's interaction. The main objective of this project is to provide an easy yet powerful javascript library which can be utilized to perform data visualization and analysis in browser as well as on mobile device.

6/09/2014

Engineering Culture at Airbnb - Airbnb Engineering

Engineering Culture at Airbnb - Airbnb Engineering

Engineers own their impact At the core our philosophy is this: engineers own their own impact. Each engineer is individually responsible for creating as much value for our users and for the company as possible. We hire primarily for problem-solving. When you have a team of strong problem-solvers, the most efficient way to move the company forward is to leave decision-making up to individual engineers. Our culture, tools, and processes all revolve around giving individual contributors accurate and timely information that they can use to make great decisions. This helps us iterate, experiment, and learn faster. Making this environment possible requires a few things. Engineers are involved in goal-setting, planning and brainstorming for all projects, and they have the freedom to select which projects they work on. They also have the flexibility to balance long and short term work, creating business impact while managing technical debt. Does this mean engineers just do whatever they want? No. They work to define and prioritize impactful work with the rest of their team including product managers, designers, data scientists and others. Just as importantly, engineers have transparent access to information. We default to information sharing. The more information engineers have, the more autonomously they can work. Everything is shared unless there’s an explicit reason not to (which is rare). That includes access to the analytics data warehouse, weekly project updates, CEO staff meeting notes, and a lot more. This environment can be scary, especially for new engineers. No one is going to tell you exactly how to have impact. That’s why one of our values is that helping others takes priority. In our team, no one is ever too busy to help. In particular, our new grad hires are paired with a team that can help them find leveraged problems. Whether it’s a technical question or a strategic one, engineers always prioritize helping each other first.