Swizec Teller - a geek with a hatswizec.com

    Want to become a JavaScript expert?

    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.

    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.

    Curated JavaScript Essays

    Get a series of curated essays on JavaScript. Lessons and insights from building software for production. No bullshit.

    Join over 14,000 engineers just like you already improving their careers with my letters, workshops, courses, and talks. โœŒ๏ธ

    Latest JavaScript articles from Swizec

    Using DynamoDB Streams with the Serverless Framework

    DynamoDB Streams are a convenient way to react to changes in your database. And surprisingly easy to use ๐Ÿฅณ
    January 4th, 2022

    pg-mem and jest for smooth integration testing

    The cult of TDD leads you down a dark and stormy path towards brittle code with a false sense of security. But there is a better way. A sweet spot between unit and heavy integration.
    December 21st, 2021

    Why null checks are bad

    Every null or undefined check doubles the number of tests you need ๐Ÿ˜ฑ
    December 10th, 2021

    Small choices can wreck your codebase

    wanna see the strangest looping construct I've found in production code?
    December 3rd, 2021

    Finding unresolved promises in JavaScript

    JavaScript is a fantastic server-side language because it's async. That also makes it tricky. ๐Ÿ’ฉ What happens when you swallow errors? Forget to resolve promises? Or run into a number of other anti-patterns
    November 3rd, 2021

    How to configure Jest with TypeScript

    Using plain Jest on a TypeScript codebase is kinda rough. No types in tests no thanks. Making Jest and TypeScript work together smoothly is something you do just rarely enough to forget the details. Hope this helps you and future me too โœŒ๏ธ
    October 19th, 2021

    Learn TypeScript in 5 minutes

    TypeScript solves many of JavaScript's sharpest edges. You don't need much to get started โœŒ๏ธ
    October 12th, 2021

    Stop SHOUTING = 'shouting'

    A hill I will die on ๐Ÿ‘‰ global CONSTANT = 'constant' are bad
    September 21st, 2021

    A surprising feature of JavaScript optional chaining

    This blew my mind, thought you'd like it too. You can do more with ?. than you thought.
    June 24th, 2021

    2 quick tips for 250% better Lighthouse scores โ€“ CodeWithSwiz 28

    Your site may be fast for users, but Google don't care. Official metrics or bust.
    April 27th, 2021

    A TypeScript trick for reusable hooks

    Reusable hooks are all fun and games until TypeScript starts yelling at you about incompatible types.
    February 19th, 2021

    Modern backend is a JavaScript function

    Many engineers think server-side code is the scary domain of True Engineers. Something newbies, juniors, and frontend engineers shouldn't touch. They're wrong. Modern backend is a joy. โค๏ธ
    September 22nd, 2020

    In 2020's, what is "frontend"? ๐Ÿคจ

    "He's a frontend guy, is this even a fair question to ask?" The head of engineering was worried about our systems design question โ€ฆ
    August 7th, 2020

    The Big Mac index and Jest fetch testing

    The Big Mac index is a purchasing power parity index published by The Economist. Jest fetch testing is a tech task so frustrating that it almost made me quit the industry. I'm writing this so you don't have to read 8234721 different blog posts, stack overflow answers, and GitHub threads with conflicting info on how to get Jest and fetch to play together.
    August 22nd, 2019

    Just for fun ๐Ÿ‘‰ React vs. jQuery vs. Svelte, same ๐Ÿฑ app

    I was bored Monday night and decided to see if I still know how to build with jQuery. Nothing better to do, no pressing ideas, a bit of fun. Also a favor for a friend who's preparing to talk about React to a bunch of people who've never seen it before ๐Ÿ˜›
    May 24th, 2019

    LOLCODE-to-JavaScript compiler babel macro

    A fully functioning LOLCODE-to-JavaScript compiler implemented as a Babel macro. You never thought you wanted this and now here it is. You're welcome. ๐Ÿฑ
    May 16th, 2019

    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?
    February 1st, 2018

    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.
    November 16th, 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
    September 21st, 2017

    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_.
    September 14th, 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.
    May 11th, 2017

    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!
    November 1st, 2016

    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.
    September 9th, 2016

    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.
    November 18th, 2015

    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.
    January 14th, 2015

    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.
    June 26th, 2014

    My very own daily WTF


    January 10th, 2013

    Testing socket.io apps


    November 30th, 2012

    Cool thing Thursday: Ceylon


    September 27th, 2012

    The commonest javascript bug


    February 24th, 2012

    Learning me a Haskell


    December 23rd, 2011

    Fun javascript feature


    December 7th, 2011

    A cool JavaScript property you never noticed

    A few years ago I was playing around with JavaScript trying to find the cleanest way to implement callbacks in functions. Primarily I wanted a readable way to make certain the last argument passed is a callback, withut having to rely on knowing how many arguments there are and so on. Instead I stumbled upon a pretty cool feature of how javascript handles function arguments.
    April 16th, 2011

    Did you enjoy this article?


    Want to become a JavaScript expert?

    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.

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

    Curated JavaScript Essays

    Get a series of curated essays on JavaScript. Lessons and insights from building software for production. No bullshit.

    Join over 14,000 engineers just like you already improving their careers with my letters, workshops, courses, and talks. โœŒ๏ธ

    Have a burning question that you think I can answer?ย I don't have all of the answers, but I have some! Hit me up on twitter or book a 30min ama for in-depth help.

    Ready to Stop copy pasting D3 examples and create data visualizations of your own? ย Learn how to build scalable dataviz components your whole team can understand with React for Data Visualization

    Curious about Serverless and the modern backend? Check out Serverless Handbook, modern backend for the frontend engineer.

    Ready to learn how it all fits together and build a modern webapp from scratch? Learn how to launch a webapp and make your first ๐Ÿ’ฐ on the side with ServerlessReact.Dev

    Want to brush up on your modern JavaScript syntax?ย Check out my interactive cheatsheet: es6cheatsheet.com

    By the way, just in case no one has told you it yet today: I love and appreciate you for who you areย โค๏ธ

    Created by Swizec with โค๏ธ