Developer /etc/hosts

192.30.253.113  github.com
151.101.44.133  assets-cdn.github.com
54.236.140.90   collector.githubapp.com
192.30.253.116  api.github.com
192.30.253.122  ssh.github.com
151.101.44.133  avatars0.githubusercontent.com
151.101.44.133  avatars1.githubusercontent.com
151.101.44.133  avatars2.githubusercontent.com
151.101.44.133  avatars3.githubusercontent.com
151.101.92.162 registry.npmjs.com
52.27.70.152   npmjs.com
104.244.42.65  twitter.com
151.101.65.69  stackoverflow.com

Use Anchor Tag to Parse URL

function getURLObject(url) {
    const parser = document.createElement('a');
    parser.href = url;

    return {
        protocol: parser.protocol,
        hostname: parser.hostname,
        port: parser.port,
        pathname: parser.pathname,
        search: parser.search,
        hash: parser.hash,
        host: parser.host
    };
}

debounce by requestAnimationFrame

events$.withHandler((() => {
    let last, emitter, loop;

    return (_emitter, { value, type }) => {
        emitter = _emitter;

        switch (type) {
            case 'value':
                last = value;

                if (!loop) {
                    loop = requestAnimationFrame(() => {
                        emitter.value(last);
                        last = undefined;
                        loop = undefined;
                    });
                }
                break;
            case 'error':
                emitter.error(value);
                break;
            case 'end':
                if (loop) {
                    cancelAnimationFrame(loop);
                }

                loop = requestAnimationFrame(() => {
                    if (last) {
                        emitter.value(last);
                    }

                    emitter.end();

                    last = undefined;
                    loop = undefined;
                });
                break;
        }
    };
})())

Server-Side Rendering with React

import React from 'react';

const App = React.createClass({
    displayName: 'App',

    propTypes: {
        headline: React.PropTypes.string.isRequired
    },

    render: function render() {
        return (
            

{this.props.headline}

); } }); export default App;

Hello World!

import express from 'express';
import exphbs from 'express-handlebars';
import React from 'react';
import ReactDOMServer from 'react-dom/server';

const app = express();

app.engine('hbs', exphbs({extname: '.hbs'}));
app.set('view engine', 'hbs');

app.use(express.static('public'));

app.get('/', (req, res) => {
    const state = { headline: 'Hello World!' };

    res.render('index', {
        app: ReactDOMServer.renderToString(),
        state: JSON.stringify(state)
    });
});

Expanding a div to take up the space in a row

Some Text
Some more text that should take up all the remaining space.
Some Text
Some more text that should take up all the remaining space.
.table {
    display: table;
    width: 100%;
}

.row {
    display: table-row;
}

.contained {
    display: table-cell;
    width: 1px;
    white-space: nowrap;
}

.expanded {
    display: table-cell;
}

Chatr Boilerplate

{"presets":["es2015","react"]}
import express from 'express';

const app = express();

app.use(express.static('public'));

app.get('/', (req, res) => {
    res.set('Content-Type', 'text/html');
    res.send('

Hello World!

'); }); app.listen(3000);
const webpack = require('webpack');

module.exports = {
    entry: ['./client.js'],
    devtool: 'sourcemap',
    debug: true,
    output: {
        path: 'public/',
        filename: '[name].min.js',
        sourceMapFilename: '[name].js.map'
    },
    module: {
        loaders: [
            {
                test: /.js$/,
                loader: 'babel',
                exclude: /(node_modules)/,
            }
        ]
    },
    plugins: [
        new webpack.optimize.DedupePlugin(),
        new webpack.optimize.UglifyJsPlugin({minimize: true})
    ]
};
const add = (a, b) => a + b;

console.log(add(1,2));
@import "node_modules/bourbon/core/bourbon";
@import "node_modules/bourbon-neat/app/assets/stylesheets/neat";

@import "base/base";
app.engine('hbs', exphbs({extname: '.hbs'}));
app.set('view engine', 'hbs');

app.get('/', (req, res) => {
    res.render('index', {
      app: '

Hello World!

', state: '{}' }) });


  
    
    Web Chat
    
  
  

    
{{{app}}}

Does this get garbage collected?

var el = (function() {
  var templateString = template.render();
  var wrapper = document.createElement('div');
  wrapper.innerHTML = templateString;

  var result = wrapper.firstChild;
  // Zero out the innerHTML to ensure
  // no reference to the resulting node.
  wrapper.innerHTML = '';

  return result;
})();