RSSAmplifier

Blog

Evan Tahler

Evan Tahler — software engineer, leader, writer. Head of Engineering at Arcade.dev, creator of Actionhero, Keryx, and more.

evantahler.comRSS feed ↗147 posts

Latest posts

Building Software for Humans and Agents

I've been building a library and a framework in parallel, and the same design constraint keeps showing up in both: every piece of software now has two audiences, humans and agents. Here's what that changes — for libraries, and for frameworks.

Announcing Keryx: A Full-Stack TypeScript Framework for APIs and MCP Servers

After 14 years of building Actionhero, I built a new framework from scratch. Keryx lets you write one Action class and deploy it across HTTP, WebSocket, CLI, background tasks, and MCP — all with the same validation and middleware.

curl for MCP: Why Coding Agents Are Happier Using the CLI

We're building increasingly complex integrations to connect coding agents to MCP servers. But these agents already know how to use the CLI. So why are we teaching them a new interface?

Designing SQL Tools for AI Agents

Build production SQL tools for LLM agents with proper auth, least-privilege access, and injection protection. PostgreSQL examples included.

The Components of an AI Context Pipeline

The ELT/ETL for AI

Permissions for AI Use Cases

AI can see too much if you aren't careful

Choose a Database with Hybrid Vector Search for your AI Applications

RAG needs a database

Cost-Conscious Advanced ELT Strategies for Data Deduplication

Saving money while moving data

Announcing Record Change History: Increasing Resilience Against Problematic Rows

Don't stop syncing just because your data is bad.

Introducing Airbyte Destinations V2 - Typing & Deduping

Making Database destinations faster better, and stronger

Airbyte Checkpointing: Ensuring Uninterrupted Data Syncs

Airbyte Checkpointing: Ensuring Uninterrupted Data Syncs

Upgrading our Community Pull Requests Experience

Getting the Airbyte Community involved

Accelerating Alpha Connectors to Airbyte Cloud: 57 New Connectors Ready For Takeoff

Releasing 57 Connectors to Airbyte Cloud

The Road to GA: Understanding Airbyte Connector Release Stages

Airbyte Connector Release Stages

Architecture Notes: 2022 CFT

How I solved the Architecture Notes 2022 Capture the Flag Puzzles

How to Build Software Products Faster by Thinking Like a Data Engineer

Things I learned at Airbyte

TypeScript Types from Class Properties

Use TypeScript to compute types from complex Objects

Running a Node app on both IPv4 and IPv6

Grouparoo can speak IPv4 and IPv6 - Here's how we did it.

Heroku Slack Notifications

Get a Slack notification when your Heroku App Deploys!

Bundle and Distribute Next.js Sites via NPM

Or, how to make your NPM packages 300mb smaller with this one strange trick!

Why are database columns 191 characters?

Don't Do Background Jobs on Google Cloud Run

Google Cloud Run is a great platform as a service, but not for background jobs

Don’t use Underscores in your HTTP Headers

Don't use underscores in your HTTP headers... at least according to AWS and Nginx!

SQL Dialect differences in Sequelize

Grouparoo works with both SQLite and Postgres databases. This post shares what we've learned about the differences.

Gifit: Turn Screen Recordings into GIFs

With open source tools, you can easily share and embed your screen recordings

Defer Transaction Side-Effects in Node.js

Using AsyncHooks, you can collect side-effects within a database transaction and only run them if the transaction succeeds

Developing Grouparoo on macOS Big Sur

Learn how to run a Typescript app on macOS Big Sur. Find out more.

Fullstack Typescript - Create an API

Use Typescript to more tightly couple your React apps to your API

Save your High Water Marks as Strings

Asking the database to return the High Water Mark as a string prevents a number of bugs.

Sharing Code in Next.JS Apps with Plugins

How does Grouparoo use Next.js to load pages and components from plugins to modify our web user interface?

Pull the Data you Actually Want

Streaming event data becomes costly and less useful over time. Reverse ETL solves these problems.

Continuous Deployment for NPM Packages

Grouparoo leverages the Node.js and NPM ecosystems to manage distribution to our customers. Our open-source software is distributed via the public via NPM

2020 Actionhero Developer Survey Results

Thank you to everyone who took out 2020 developer survey — Here are the results. Also, the launch of Actionhero Office Hours!

Production Node Applications with Docker — 3 DevOps Tips for Shutting Down Properly

Tips and tricks to shut down your docker applications properly. No more lost data!

Proxying free Heroku Dynos though Cloudflare to a custom domain

The Actionhero project runs a number of websites for the community — documentation, sample apps, etc. We often rely on Heroku’s free…

Markdown in React and Custom Page Elements

I recently moved the Actionhero tutorials from the Actionhero Docs site docs.actionherojs.com to the main Actionhero website…

Actions, Tasks, and Destructured Params- The Illustrated Actionhero Community QA

Welcome to the fourth installment of The Illustrated Actionhero Community Q&A!

Github Sponsorship

My dream of working on Actionhero full time

Online and Offline Sync — The Illustrated Actionhero Community Q&A

Welcome to the third installment of The Illustrated Actionhero Community Q&A!

Failing a Task —  The Illustrated Actionhero Community Q&A

Welcome to the second installment of The Illustrated Actionhero Community Q&A!

Actionhero for Real-time Games — The Illustrated Actionhero Community Q&A

Introducing to the Actionhero Illustrated Community Q&A!

Using Next.JS to build Static Dynamic Websites… and never pay for font-end hosting again!

Use tools like Circle.Ci, Github, and Next.JS to host production-grade websites for free!

Keep that VPN Connected (MacOS)

I recently found myself traveling regularly, and I wanted to ensure that no matter when I opened my laptop, that my connection would be…

The Voom Software Engineering Interview Process

Building an inclusive and efficient interview process for a pair-programming team

Controlling your Magic Painting with your words

Or, how to control your Meural Canvas with the API and connect it to all the things!

Repeat Rate: What are you Actually Measuring?

Second-Order Measurements and your Product

Data Science vs Analytics

Data Science vs Analytics are two related disciplines in most startups. I’ve also heard a number of ways to describe the distinctions…

Tips for Building International Products and Companies

Voom is an Airbus subsidiary working to make booking a helicopter as easy as booking a car… while we build out the infrastructure for the…

Customizable "Other" Option in Google Forms

Hi Google!

Testing javascript applications with Selenium, Async/Await, and Jest

The last time I used Selenium, in 2015, I hated it. It was slow, brittle, and difficult to get working. These days, it can actually be fun!