Blog

Posts on software development, careers, and craft.

Highly relevant quote for anyone teaching or learning

Highly relevant quote for anyone teaching or learning. Merely reading and watching isn't enough. We must do. "To learn and not to do is really not...

Pattern I'm increasingly seeing: Companies are forking create-react-app and...

Pattern I'm increasingly seeing: Companies are forking create-react-app and adding their unique opinions into it. Here's why: - Avoid reinventing t...

Excited for the enhancements coming to Babel 7: - 60% faster 🚤 -...

Excited for the enhancements coming to Babel 7: - 60% faster 🚤 - babel-polyfill now only polyfills what your env needs = smaller bundles - Scoped...

So true

So true. For today's developers, formal education is just the beginning. Long-term success requires self-guided reading, coding, and experimentatio...

"99% of the time, when you think you need to mock a module, the real answer...

"99% of the time, when you think you need to mock a module, the real answer is that you should decouple the part that uses the data from the part t...

Need something fixed/enhanced in an open source package that you use at work

Need something fixed/enhanced in an open source package that you use at work? Consider just doing the work. "It's part of my job to deliver what I'...

React tip: You can eliminate constructors for state and binding

React tip: You can eliminate constructors for state and binding. Use class fields instead (stage 3, transpiled via Babel). Making this change all o...

"Comment the why, not the how." is the most succinct and useful maxim for...

"Comment the why, not the how." is the most succinct and useful maxim for handling code comments that I've found. If I feel the need to comment the...

The number of options for automated testing in #javascript today is amazing

The number of options for automated testing in #javascript today is amazing. Here's the most epic post I've seen for outlining all the options: htt...

JS tip: console.log accepts multiple arguments

JS tip: console.log accepts multiple arguments. Each argument is conveniently output with a space in between. Can't believe I've been concatenating...

Realization: Putting Redux in our company framework by default was a mistake

Realization: Putting Redux in our company framework by default was a mistake. Result: 1 People connect *every* component. 2 People embed Redux in "...

Fascinating overview of Spotify's desktop app, built in JS

Fascinating overview of Spotify's desktop app, built in JS. I typically avoid iframes, but Spotify's iframe use is compelling. Why? 1. As an instal...

An epic read for #javascript app best practices/project guidelines

An epic read for #javascript app best practices/project guidelines. Tons of great tips in here: https://buff.ly/2H1WY9h

🔥 Confirmed: 🔥 1

🔥 Confirmed: 🔥 1. npm install Node@8 (saves Node 8 as dependency in package.json) 2. Your app will run using Node 8 for *everyone* - even Yarn us...

Git tip: Have a lot of old branches on your machine

Git tip: Have a lot of old branches on your machine? Here's a Bash script that removes local branches that are no longer remote: git fetch -p &...

Motivation hack: Leave an incomplete task at the end of your work day

Motivation hack: Leave an incomplete task at the end of your work day. Why? 1. Partially complete tasks motivate you to get started the next day. 2...

Impressed with the regex enhancements in ES2018

Impressed with the regex enhancements in ES2018. Named capture groups make regex so much easier to read and parse! 1. Declare a named capture in an...

ES2018 has been finalized

ES2018 has been finalized. Features: 1. Rest/spread properties 🎉 2. Asynchronous iteration 3. Promise.prototype.finally() 4. New regex features Mo...

Common question: "How do I build a big SPA?" My take

Common question: "How do I build a big SPA?" My take? Don't. Build multiple small SPAs. Share common elements like navigation via npm. There's noth...

Remote work benefit: Interacting via text fosters reading & writing skills

Remote work benefit: Interacting via text fosters reading & writing skills. 1. You can carefully read and consider your co-worker's input at yo...

JavaScript tip: You can easily simulate named function parameters

JavaScript tip: You can easily simulate named function parameters. 1. Accept an object instead of separate arguments. 2. Use destructuring. Slick....

A successful development team is like a bees nest

A successful development team is like a bees nest. Give them trust and autonomy to do their work, and they'll happily make you honey. But if you co...

Woah, automatically convert your plain JavaScript React components to TypeScript

Woah, automatically convert your plain JavaScript React components to TypeScript. Reads PropTypes and converts! Slick. https://github.com/lyft/reac...

Watch out: You may unknowingly be addicted to complexity

Watch out: You may unknowingly be addicted to complexity. “Simplicity is a great virtue but it requires hard work to achieve it and education to ap...

"I've heard from several people that they've consolidated their companies...

"I've heard from several people that they've consolidated their companies tool dependencies into a single package and this worked really well for t...

6 years ago: I was terrified of public speaking

6 years ago: I was terrified of public speaking. Today, I’m presenting my 120th session. This quote hit me hard. I’ve never felt more grateful. Or...

Slick way to update an element in an array in an immutable manner *without...

Slick way to update an element in an array in an immutable manner *without changing the array's order*. Just use map and replace the relevant eleme...

Seriously, if you haven't tried automated testing with @Cypress_io, do it now

Seriously, if you haven't tried automated testing with @Cypress_io, do it now. Spent the morning adding integration tests to React Slingshot with C...

Career tip: If your boss doesn't see it, you won't get credit for it

Career tip: If your boss doesn't see it, you won't get credit for it. Document your work. Present demos. Promote the good stuff. Don't expect your...

Three ways to design a reusable React component: 1

Three ways to design a reusable React component: 1. Uncontrolled 2. Controlled 3. Controllable Option #3 is most flexible (and quick to implement t...