RSSAmplifier

Blog

kettanaito.com

Artem Zakharchenko's blog

kettanaito.comRSS feed ↗31 posts

Latest posts

Symbol.iterator Is Pretty Neat, Actually

Design custom spread syntax experience with Symbol.iterator.

Container Formats and Where to Find Them

This is how you create custom file formats.

Monitoring JavaScript Bundle Size Changes in Remix

Improve your Remix apps by analyzing the cost of every change you make.

Mocking in Node.js Has Just Changed Forever

The two largest API mocking libraries in JavaScript now use the same interception algorithm.

Build-time Open Graph Images in Remix

Generate Open Graph images in Remix on build time with this neat library.

Catching Flaky Tests Before It's Too Late

Learn how you can use reporting tools to automate flaky test discovery

Thirty Years and Counting

Listen as I reminisce about the past ten years of my life.

Don't Sleep on AbortController

Learn how to make anything abortable in JavaScript.

Why Patching Globals Is Harmful

Why I believe patching globals is a bad API design.

Making Sense of TypeScript Generics

Here's what you need to understand about generics in TypeScript.

The Difference Between Null and Undefined

In JavaScript, null and undefined cannot be more different. Here's why.

2023 Year in Review

The good, the bad, and the ugly of the year 2023.

Looking For a Job As an Open Source Maintainer

Learn about the precautions to take if you are an open source maintainer looking for a job.

Why Fetch Promise Doesn't Reject on Error Responses

The fetch Promise doesn't reject on error responses and that's entirely correct! Here's why.

One Thing Nobody Explained To You About TypeScript

One of the most common mistakes in configuring TypeScript.

Debugging Like A Pro-xy

Learn how to use Proxies to debug tricky issues in JavaScript.

My Struggle With Remix

Remix is a fantastic framework but it's not without its issues. Here are some of my struggles after building a few different projects with it.

A Total Mess Behind GitHub Accelerator

GitHub Accelerator is a life-changing program on paper. In reality, it turned out a bit differently.

Practical Guide to Custom Jest Matchers

Learn how to create custom Jest matchers to reduce the repetition in your tests and make them more readable.

The Dark Side of Open Source

Drawing from personal experience how open source can be a double-edged sword.

Why I Wouldn't Want to Have an Engineering Degree

Coming from a non-technical background is challenging. Yet I wouldn't want to have studied software engineering regardless because it would've taken one little but incredibly important thing from me.

Writing a Custom Webpack Loader

Learn how to write custom webpack loaders with this example that transforms MP3 file imports into interactive audio players.

Thinking in Functions, Part II: Higher-order Functions

Let's take a dive into what "higher-order" functions are, what problems they solve, and learn how to use them in practice.

How To Ask Questions?

Asking the right questions in engineering is hard. This article makes it a bit easier.

The Plague of Linters

If you ever had a debate about which linting rule to use, you must read this.

Building a Tree-shakable Library with Rollup

A missing guideline for JavaScript library authors on building and distributing a tree-shakable library using RollupJS.

Efficient CircleCI debugging with SSH

Stop wasting hours on debugging failed CI jobs, when you can go to the very remote machine that run your tests, open its state, and solve the issue spot-on.

Debounce vs Throttle: Definitive Visual Guide

A complete guide to learn the difference between debounce and throttle using visual examples. Never confuse the two again.

Thinking in Functions, Part I: The Input/Output Pattern

Function is a synonym for action. It's good when your actions have purpose, and their intent is clear. But how to write such functions?

The Art of Code Review

Lessons learned from reviewing a team of 15 people throughout 2,5 years.

Advanced forms in React made easy

Learn how to create clean and performant forms using React Advanced Form package.