The Evolution of Flux Frameworks -- Medium

Flux libraries:

  • reducing boilerplate
  • server side rendering
  • utilities
  • async action helpers


  • actions should be just plain objects -> enables recording, debugging

Dada Portal | Career advice from Tom!/career-advice/

purpose, a way to contribute to the world.

What are some psychological life hacks you can do to give you an advantage in situations? : AskReddit

  • Customer service - mirror behind to remind people to behave.
  • On meetings, when expecting attack from sb, sit next to them.
  • Negotiating - first person to talk will lose.
  • Gradual commitment.
  • When you're studying/learning something new, teach a friend how/about it. Let them ask questions. If you're able to teach something well, you understand it.
  • Promise yourself you'll never talk shit about other people. Even when the people around you are talking shit, even when you agree with the shit they're saying. You don't have to make a big deal of it, just don't partake in it.

What is the strongest opinion you hold? : AskReddit

  • If you always want to be right, you have to change your opinions
  • Everyone should have at least one thing in life that they're insanely passionate about. To the point where they can't shut up about it because they're so excited.
  • If you don't know something about something, then don't throw fucking strong opinions about that something.

Android pay

Beautiful ad

Android Pay, Google Wallet, Google Checkout. blog

view and add event properties

! Define schema for events, then pass implementation spec to devs

Deku: How we built our functional alternative to React

If you don't use classes you never need to worry about this

Assessing Employee Performance -- JavaScript Scene -- Medium

your most productive employees are the ones who help all your other employees be more productive

busy sharing experience and knowledge with the rest of your team.

Talk to your employees frequently, but assess their performance annually in order to give their contributions time to produce value.

fixing bugs or performance issues in GitHub tickets you never see.

The more experience your employee has, the longer you should allow for their contributions to be assessed.


Every data mutation inside application occurs with calling the Actions

stores are not models but they contain models.

Reflux that decided to move the dispatcher into the actions themselves and remove the singleton implementation.

stores pulling in data will screw you as soon as more than one store needs to know about a data request. - fetching data should be initialized only from Action Creators.

calling actions in Fluxible is verbose

// Fluxible way of creating...
module.exports = function (context, payload, done) {
    context.dispatch('ADD_TO_CART', {product: payload.product});

//...and executing actions
var addToCart = require('../actions/addToCart');
this.props.context.executeAction(addToCart, {
    products: this.state.products

Stores should be as simple as possible, prefferebly immutable, with no data fetching and async functions. Just a thin layer which describes the current state of the app.

Snapshots - like Fluxible's (de)hydration. takeSnapshot to serialize data (-> persist, transfer, log, ...)

container components additional layer which deals with data and pass it as props to standalone widgets.

Facebook Flux AppDispatcher.handleViewAction({ AppDispatcher.handleServerAction({

dispatch(payload) payload: { source: PayloadSources.VIEW_ACTION/SERVER_ACTION action: { type: ActionTypes.ADD_TO_CART/CART_CHECKOUT product/s: } }

Reddit, what's a little-known site you think everyone should know about? : AskReddit

How we built the new -- GoCardless Blog

React is good fit even for static pages.

Super snappy

Source code:

Perform | Brad Frost

Make every thing fight for its life.

Stop adding shit. Start killing shit.

Stop blindly adopting tools.

Make people give a shit.

Make it visible.

Celebrate the victories.

Start caring.

The End of Global CSS -- SEEK UI Engineering -- Medium

CSS selectors all exist within the same global scope.

Designed for documents, not for apps.

CSS requires discipline.

We don't have to wait for browser vendors implementing Shadom DOM.

Workarounds: CSS methodologies (BEM, OOCSS, SMACSS, SUIT)

Use webpack to load CSS within JS module.

Yandex developed JS implementation of BEM, but it needs custom template system.

Components through whole app, not just small pieces at the end of the DOM tree.

All assets to make one component (data, HTML, CSS, JS, fonts, images) are brought together at the build time - that's wrong.

The relationships between the assets is now within the assets themselves rather than a standalone build script, detached from the actual content.

loaders: [
    test: /\.less$/,
    loader: ExtractTextPlugin.extract('style',
    test: /\.svg$/,
    loader: 'url?limit=10000&mimetype=image/svg+xml'
    test: /\.js$/,
    loader: 'babel',
    exclude: /node_modules/

a 'block' in BEM and a 'component' in JavaScript is the exact same abstraction, only expressed in different languages

css-loader, at the time called placeholders, now known as local scope.

require('./MyComponent.css'); => import styles from './MyComponent.css';

css-loader's custom :local(.identifier)

We no longer need to add lengthy prefixes to all of our selectors to simulate scoping.

The benefits of global CSS -- style re-use between components via utility classes, etc. -- are still achievable with this model.

Our code can't make many, if any, assumptions about the global environment.

What if -- instead of requiring a special syntax -- our selectors were local by default, and global selectors were the opt-in exception?