Read JavaScript and TypeScript lessons from production

Learning from tutorials is great! You follow some steps, learn a smol lesson, and feel like you got this. Then you go into an interview, get a question from the boss, or encounter a new situation and o-oh.

Shit, how does this work again? 😅

That's the problem with tutorials. They're not how the world works. Real software is a mess. A best-effort pile of duct tape and chewing gum. You need deep understanding, not recipes.

I took a bet on JavaScript in 2005 when it was known as DHTML. It's been my favorite language ever since. These essays are the good stuff you can't learn from a tutorial.

Leave your email and get the JavaScript Essays series - a series of curated essays and experiments on modern JavaScript. Lessons and insights learned from practice building production software.

Latest JavaScript articles from Swizec

February 2018

You don't want to build your own list virtualization

Chatroom is slow? I know, I'll just use list virtualization! List virtualization is hard, dear reader. So, how do you virtualize a list?

January 2018

How to populate react-redux-form with dynamic default values

November 2017

How to add real web push notifications to your webapp

You've probably seen web notifications before. YouTube shows them when it goes to a new song, Facebook pings them when a new message comes in, scammy websites ask for permissions and you say no. The usual. You can fire those notifications from anywhere inside your JavaScript.

September 2017

JavaScript promises are just like monads and I can explain both in less than 2 minutes

There's a joke in functional programming that once you understand monads, it becomes impossible to explain them to others. The nuance is nuanced, the details are hard, let’s focus on practice

How JavaScript linters cause bugs

I was doing code review for a coworker, and it soon became obvious that he used a linter and that the linter gave him a bright idea: _use strict comparisons_.

Livecoding Recap #45: Almost building a ballistic missile with React and AR.js

May 2017

Counting web sessions with JavaScript

How many touch points does your sales process require? Do you need 2 ad clicks or 5? Two shiny demos or one fat video? As an engineer, you might not care, but this is the stuff that keeps your CEO and growth lead and head of product up at night. A business owner that can answer that 👆 question reliably is god.

November 2016

How to waste hours of life with fetch() and a bit of brainfart

Both superagent and fetch() enable you to talk to a server. The first produces clean code that gets nesty if you need many things. The second produces clean code that is Promis-y and sometimes cumbersome. The difference between superagent and fetch() isn't that one sends your headers as-given and the other lowercases their names. The difference is that superagent sends a cookie and fetch() doesn't!

September 2016

Livecoding #23: Slackbots and OAuth

Object clone performance: preliminary results

A puzzle in JavaScript objects

This is a puzzle you can run into if you’re not careful, and sometimes, despite your best efforts, even if you are careful. It happened to me when I had a settings object that I passed into a view. The view then did things. When I made a new view from the settings object, it looked like the view I had just cleared.

July 2016

Livecoding #16: canvas.drawImage performance is weird but magical

Livecoding #15: Reaching the limits of canvas redraw speed

March 2016

Animating with React, Redux, and d3

December 2015

Don't Worry; It's a Compiler Bug

November 2015

A day is not 60*60*24 seconds long

Days aren't 60*60*24 seconds long. They are 1 day long, which on most days maps to 60*60*24 = 86400 seconds. But not on all days.

There's a "bug" in ES6 modules

October 2015

React+Flux can do in just 137 lines what jQuery can do in 10

August 2015

React components as jQuery plugins

June 2015

Webpack lazy loading on Rails with CDN support

March 2015

How to wait for DOM elements to show up in modern browsers

January 2015

How to run JavaScript tests in Chrome on Travis

Javascript debugging [slightly] beyond console.log

My favourite tool for javascript debugging is `console.log`. I mean, I love `console.log`. If I ever get a programming tattoo, it's going to be `console.log` or some variation thereof. Simple to use, works every time, and every programming language I've used since I was 9 has had some variation of it.

November 2014

Kids, always remember to clear your intervals

June 2014

My new favourite Javascript trick

Using returns and callbacks in the same function. Sounds like crazy talk I know, but hear me out, I have good reason. I think.

January 2014

Mixing mixpanel into backbone

October 2013

About achieving polymorphism in Javascript

September 2013

Are map, reduce, and filter turing complete?

July 2013

Writing modular Backbone with Backbone.SubRoute

May 2013

Dynamic languages have jumped the shark