How we use efficient and deliberate communication at Ashby to keep Slack notifications and meetings to a minimum, focus 36h out of a 40h week, and have fun along the way 😀.
9 minute read
Async Postmortems in a Global, Remote Team
How Ashby's collaborative postmortem process adapts industry best practices to a global, remote team and helps us move faster, learn from failure, and build a healthier engineering culture.
7 minute read
Detecting Node Event Loop Blockers
Our application code runs in a single thread with Node.js. The thread can get blocked by requests with CPU-intensive computation and significantly slow our response times. We'll walk you through how we identify and eliminate these blocking requests.
7 minute read
Switching Rich Text Editors, Part 1: Picking Tiptap
Switching rich text libraries in a production app with many daily users isn't easy. We recently changed ours with minimal issues and are sharing our research and process with the hope that it helps you make a similar switch.
Continous Deployment via a GitHub Actions Reminder
An automated reminder to deploy as an effective way to keep deploys small and safe.
Type Safety with ES2022's Array.prototype.at
Array.at provides better type safety than the standard index operator, and it works with Node 16!
Querying JSON and XML with jq and xq
How I use command line tools to inspect JSON and XML data that would be impossible to do by eye.
Flexible Types that Support Autocomplete with Template Literals (Oh My!)
Use template literals to create flexible types that accurately check possible values at compile time and support autocomplete in common editors (like VSCode).
Testing Using Jest Table Syntax
How to write similar Jest tests without copying and pasting code.
Using Generic Arrow Functions in .tsx Files
How to fix Typescript compiler errors from generic arrow functions in .tsx files.