# Hi, I'm Evan! > Software Engineering and Product Management Leadership. I build teams that create world-class digital products. I'm the Head of Engineering at Arcade.dev and the creator of Actionhero, Keryx, and more. ## Table of Contents - [2020 Actionhero Developer Survey Results](/blog/post/2020-03-01-actionhero-developer-survey-results.md): Thank you to everyone who took out 2020 developer survey — Here are the results. Also, the launch of Actionhero Office Hours! - [A Blog!?](/blog/post/2011-11-02-a-blog.md): Yep, I made a blog. - [A memory leak in node (ActionHero)](/blog/post/2016-05-28-a-memory-leak-in-node.md): We recently found & solved a memory leak in ActionHero. If you use ActionHero to serve static assets, you should see a significant memory reduction! - [A reminder that the webKit console is also rendered (sometimes)](/blog/post/2011-12-03-the-webkit-console-is-rendered.md): I love doing web development in Chrome and Safari, as they have excellent built-in develop tools. There is one catch that I need to keep… - [About Evan Tahler](/about.md): About Evan Tahler — Head of Engineering at Arcade.dev, formerly Airbyte (via Grouparoo acquisition), Disney, TaskRabbit, ModCloth, Airbus. - [Accelerating Alpha Connectors to Airbyte Cloud: 57 New Connectors Ready For Takeoff](/blog/post/2023-03-01-accelerating-alpha-connectors-to-airbyte-cloud.md): Releasing 57 Connectors to Airbyte Cloud - [ActionHero + Bootstrap + Angular + CORS + CSRF](/blog/post/2015-10-15-actionhero-bootstrap-angular.md): We’ve had a simple ActionHero demo site for a while now, which shows how easy it is to get started with the framework, but until now, we’ve… - [Actionhero + Standard.js](/blog/post/2016-12-14-actionhero-and-standardjs.md): I don’t want to talk about ESLint ever again. I don’t ever want to talk about "code style" ever again. I want to write code, and I want the… - [ActionHero + Tessel2](/blog/post/2016-04-24-actionhero-and-tessel-2.md): I just received my Tessel 2 in the mail. - [ActionHero 7.x.x](/blog/post/2013-12-04-actionhero-v7.md): A quick post to say that I’m very happy about where ActionHero is going. - [ActionHero and NewRelic](/blog/post/2014-03-10-actionhero-and-newrelic.md): There is now a plugin for ActionHero + New Relic if you ar using actionhero version 10 or later. - [ActionHero and Node.JS v7](/blog/post/2016-10-26-actionhero-nodejs-v7.md): Does ActionHero work with with the newly released Node.js v7? - [Actionhero Community - Now on Slack](/blog/post/2016-05-16-actionhero-community-on-slack.md): This week the Actionhero Community moved from Gitter to Slack - [Actionhero for Real-time Games — The Illustrated Actionhero Community Q&A](/blog/post/2019-09-30-actionhero-for-real-time-games.md): Introducing to the Actionhero Illustrated Community Q&A! - [ActionHero Tutorials](/blog/post/2013-07-05-actionhero-tutorials.md): I wrote a few tutorials for actionHero recently at the behest of the community: - [Actionhero v14 and a problem with recursive configuration](/blog/post/2016-06-24-actionhero-v14-and-a-problem.md): Actionhero is now at version 14.0.1! - [ActionHero V15.0.0 and Release Cadence](/blog/post/2016-08-07-actionhero-v15.md): A quick note to say that ActionHero has reached version 15. You can read the full release notes here. - [ActionHero v15.1.2: Security Release](/blog/post/2016-10-28-actionhero-v5-1-2-security-release.md): Today we released the first-ever security release for ActionHero. - [ActionHero V18: Async/Await](/blog/post/2017-10-07-actionhero-v18-async-await.md): Today we’ve released ActionHero v18.0.0! - [actionHero V3: Return of the Hero](/blog/post/2012-08-02-actionhero-v2.md): That’s Right, the rumors were true: ActionHero is now @ V3! - [ActionHero v4.1.0](/blog/post/2013-06-06-actionhero-v4-1.md): A quick post to say that a new version of actionHero is out tonight: v4.1.0 This update contains some breaking changes to the Tasks and… - [ActionHero v4.2.2](/blog/post/2013-01-13-actionhero-v4-2-2.md): This was a busy week for actionHero! We are now up to version 4.2.2. Note that this release again changed some of the internal API’s. - [ActionHero v9.0.0 release candidate](/blog/post/2014-06-06-actionHero-v9-0-0.md): V9.0.0 of ActionHero went live on 2014–06–24 - [actionhero-client turns 1.0.0](/blog/post/2012-11-17-actionhero-client-turns-1.md): actionhero-client is a nodeJS package to allow a remote nodeJS app to connect to and consume an actionHero API. - [ActionHero: Actions vs Tasks](/blog/post/2012-04-11-actions-vs-tasks.md): I recently got a note from an actionHero user asking about the difference between tasks and actions within the framework. Here’s a bit of a… - [ActionHero.js is now at version 1](/blog/post/2012-03-18-actionhero-v1.md): HUZZAH! - [ActionHero’s Resque UI](/blog/post/2016-07-07-actionheros-resque-ui.md): Today I released a Resque UI for ActionHero, ah-resque-ui. - [ActionHero++ (now at level 2!)](/blog/post/2012-03-23-actionhero-now-at-level-2.md): actionHero is growing up so fast! - [Actions, Tasks, and Destructured Params- The Illustrated Actionhero Community QA](/blog/post/2019-10-21-actions-tasks-and-destructured-params.md): Welcome to the fourth installment of The Illustrated Actionhero Community Q&A! - [active_record, MySQL, and emoji](/blog/post/2014-04-24-active-record-mysql-and-emoji.md): No more Emoji! - [Agile Business Intelligence @ Pivotal Labs](/blog/post/2011-11-02-agile-business-intelligence.md): A few months ago, Kate, Jenn, and I (all Modcloth co-workers) gave a talk at the world-famous pivotal labs about our unique "agile" way of… - [Airbrake and ActionHero](/blog/post/2014-02-13-airbrake-and-actionhero.md): If you are using ActionHero version 10x or higher, you can now use the plugin: - [Airbyte Checkpointing: Ensuring Uninterrupted Data Syncs](/blog/post/2023-06-01-airbyte-checkpointing.md): Airbyte Checkpointing: Ensuring Uninterrupted Data Syncs - [Announcing ActionHero.js](/blog/post/2011-12-23-announcing-actionoero-js.md): I am working on a nodeJS framework! It’s out in beta RIGHT NOW. I would love some feedback. - [Announcing Keryx: A Full-Stack TypeScript Framework for APIs and MCP Servers](/blog/post/2026-03-13-announcing-keryx.md): 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. - [Announcing Record Change History: Increasing Resilience Against Problematic Rows](/blog/post/2024-04-04-announcing-record-change-history.md): Don't stop syncing just because your data is bad. - [Ansible Static Dynamic Inventory](/blog/post/2015-03-12-ansible-static-dynamic-inventory.md): Using Ansible with a Dynamic list of hosts - [Ansible Tips and Tricks](/blog/post/2015-07-14-ansible-tips-and-tricks.md): On Monday 2015–07–14 I gave a (remote) talk as the Pittsburgh Code & Supply Meetup entitled "TaskRabbit’s Ansible Tips & Tricks”. - [Ansible, LetsEncrypt!, NGINX, and ActionHero](/blog/post/2016-07-23-ansible-lets-encrypt-nginx-and-actionhero.md): If you don’t already know LetsEncrypt! is an awesome project which aims to bring free HTTPS certificate to every site on the web. HTTPS… - [API-First.com reboot](/blog/post/2013-03-10-api-first-reboot.md): After siting idle for over a year, Fiona (Fiona ODMC) and I have decided to reboot API-First.com. - [Architecture Notes: 2022 CFT](/blog/post/2023-01-03-architecture-notes-2022-ctf.md): How I solved the Architecture Notes 2022 Capture the Flag Puzzles - [Authentication with ActionHero](/blog/post/2013-02-18-authetntication-with-actionhero.md): !! This post is out of date! For an up-to-date version, click here - [Authentication with ActionHero Again](/blog/post/2013-06-10-authentication-with-actionhero-again.md): An update look at authenticating with Actionhero - [Background Tasks in Node](/blog/post/2015-02-16-background-tasks-in-node.md): On Thursday 2015–02–05 I gave a talk as the awesome SFNode Meetup entitled "Background Jobs for NodeJS". - [Background Tasks in Node.js: A survey with Redis.](/blog/post/2016-05-11-background-tasks-in-nodejs-a-survey-with-redis.md): Today I gave a talk at RedisConf in San Francisco entitled: Background Tasks in Node.js: A survey with Redis. - [Building and Testing ActionHero Plugins](/blog/post/2016-07-25-building-and-testing-actionhero-plugins.md): Over the past few months, I’ve been working on projects which grew to become ActionHero Plugins. ActionHero is a Node.js framework for… - [Building Software for Humans and Agents](/blog/post/2026-05-01-software-for-humans-and-agents.md): 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. - [Bundle and Distribute Next.js Sites via NPM](/blog/post/2021-06-03-distributing-nextjs-via-npm.md): Or, how to make your NPM packages 300mb smaller with this one strange trick! - [Choose a Database with Hybrid Vector Search for your AI Applications](/blog/post/2024-10-31-choose-a-database-with-hybrid-vector-search-for-your-ai-applications.md): RAG needs a database - [CloudFlare and Server-Side React: Overzealous Optimization with Auto-Minify](/blog/post/2017-08-14-cloudflare-and-ssr-react.md): I spent a few hours today sorting out why a new React + Next.JS site was working great locally, but when deployed to production I was… - [Continuous Deployment for NPM Packages](/blog/post/2020-05-07-grouparoo-monorepo-deployment.md): 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 - [Controlling your Magic Painting with your words](/blog/post/2019-01-08-controlling-your-magic-painting-with-your-words.md): Or, how to control your Meural Canvas with the API and connect it to all the things! - [Cost-Conscious Advanced ELT Strategies for Data Deduplication](/blog/post/2024-04-17-cost-conscious-elt-strategies.md): Saving money while moving data - [curl for MCP: Why Coding Agents Are Happier Using the CLI](/blog/post/2026-03-13-curl-for-mcp.md): 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? - [cURL your way into the Google Analytics API](/blog/post/2012-04-04-google-analytics-curl.md): Whenever I am about to start integrating with a new API, I like to walk though the steps with cURL. For those of you who have been living - [Customizable "Other" Option in Google Forms](/blog/post/2018-06-22-customizable-other-option-in-google-forms.md): Hi Google! - [Data Science vs Analytics](/blog/post/2018-11-01-data-science-vs-analytics.md): Data Science vs Analytics are two related disciplines in most startups. I’ve also heard a number of ways to describe the distinctions… - [Defer Transaction Side-Effects in Node.js](/blog/post/2021-01-21-defering-side-effects-in-node.md): Using AsyncHooks, you can collect side-effects within a database transaction and only run them if the transaction succeeds - [Delete old git branches already merged into master](/blog/post/2012-12-20-delete-old-git-branches.md): Keep your git branches clean! - [Deploying node.js applications with Capistrano](/blog/post/2012-04-04-deploying-node-apps-with-capistrano.md): I really like Capistrano. - [Deploying to Flynn from Travis.CI](/blog/post/2016-10-29-deploying-from-flynn-to-travisci.md): In my previous post, I shared some tips on creating a production Flynn cluster. If you don’t know, Flynn is a an open-source self-hosted… - [Designing SQL Tools for AI Agents](/blog/post/2025-07-23-designing-sql-tools-for-ai-agents.md): Build production SQL tools for LLM agents with proper auth, least-privilege access, and injection protection. PostgreSQL examples included. - [Developing Grouparoo on macOS Big Sur](/blog/post/2020-11-13-developing-grouparoo-on-macos-big-sur.md): Learn how to run a Typescript app on macOS Big Sur. Find out more. - [Don't be a Jerk - The Open Source License](/blog/post/2017-04-03-dont-be-a-jerk-oss.md): A few years back, I was disappointed that so many open source licenses were opaque and hard to understand. So in 2011 I created a satirical license. - [Don't Do Background Jobs on Google Cloud Run](/blog/post/2021-04-13-google-cloud-run-no-background-job.md): Google Cloud Run is a great platform as a service, but not for background jobs - [Don’t use Underscores in your HTTP Headers](/blog/post/2021-03-17-dont-use-underscores-in-http-headers.md): Don't use underscores in your HTTP headers... at least according to AWS and Nginx! - [ElasticDump](/blog/post/2014-01-06-elasticdump.md): ElasticDump - The Node.js CLI tool for importing and exporting Elaticsearch data - [ElasticSeach Production Notes: Part 2](/blog/post/2015-01-07-elasticseach-production-notes-part-2.md): Fast and Stable Elasticsearch in production... again! - [ElasticSearch in Production](/blog/post/2014-07-18-elasticsearch-in-production.md): Fast and Stable Elasticsearch - [Electric Imp](/blog/post/2012-05-22-electric-imp.md): Where have I been for the past month? Well, I’ve been heads-down helping to launch the internet of things. Now that we have launched, I can… - [Evan Tahler: Contact](/contact.md): Get in touch with Evan Tahler. - [Evan Tahler: Open Source Software](/open-source.md): Evan Tahler's contributions to open source software including Actionhero, Grouparoo, Airbyte, and node-resque. - [Evan Tahler: Speaking](/speaking.md): Talks Evan Tahler has given on Node.js, Ruby, DevOps, AI, Data Engineering and Product Management. - [Exception Patterns in node.js](/blog/post/2012-12-04-exception-patterns-in-node-js.md): Recently we added support for a ‘developer mode’ to ActionHero which reloads parts of your project on the fly as you develop. Doing so… - [Failing a Task —  The Illustrated Actionhero Community Q&A](/blog/post/2019-10-07-failing-a-task.md): Welcome to the second installment of The Illustrated Actionhero Community Q&A! - [Forklift: Moving Big Databases Around in Ruby](/blog/post/2013-04-14-forklift-moving-big-databases-around-in-ruby.md): Moving Big Databases Around in Ruby - [Fullstack Typescript - Create an API](/blog/post/2020-10-16-typescript-frontend-backend.md): Use Typescript to more tightly couple your React apps to your API - [Gifit: Turn Screen Recordings into GIFs](/blog/post/2021-02-12-gifit.md): With open source tools, you can easily share and embed your screen recordings - [Git Whereami](/blog/post/2015-04-17-git-whereami.md): I’ve been traveling a lot for work, and I thought it might be cool to somehow signal where I was physically when checking in code. I knew… - [GitHire](/blog/post/2012-01-14-githire.md): David Padilla of Crowd Interactive recently realized he was on this recruiting site called GitHire. They use algorithms to inspect your… - [GitHub Resume](/blog/post/2012-10-04-gitHub-resume.md): This site had the wonderful idea to generate resumes from Github. I like this idea. The more time passes, the more invaluable to the… - [Github Sponsorship](/blog/post/2019-10-19-github-sponsorship.md): My dream of working on Actionhero full time - [Good Old Games, Modern Resolutions, and Windows gaming on OSX](/blog/post/2016-05-14-good-old-games-osx-resolution.md): I’ve been itching for some nostalgic games lately. - [Goodbye Scoreboard Guru](/blog/post/2018-01-04-goodbye-scoreboard-guru.md): Feb 1 Scoreboard Guru shuts down - [Hacked! (or: A reminder about why unix permissions matter)](/blog/post/2012-02-24-hacked-or-a-reminder-about-why-unix-permissions-matter.md): Note: I have included links to some of the malicious PHP code which attacked me in this blog post. I had a hard time deciding whether this… - [Heroku Slack Notifications](/blog/post/2021-06-11-heroku-slack-notifications.md): Get a Slack notification when your Heroku App Deploys! - [How to Build Software Products Faster by Thinking Like a Data Engineer](/blog/post/2022-12-19-build-software-products-faster-by-thinking-like-a-data-engineer.md): Things I learned at Airbyte - [I am a nerd](/blog/post/2012-07-31-i-am-a-nerd.md): I received some stickers at work today from Joyent and, like I have been doing for the past many years, I stuck them to the back of my… - [Introducing Airbyte Destinations V2 - Typing & Deduping](/blog/post/2023-08-29-introducing-airbyte-destinations-v2.md): Making Database destinations faster better, and stronger - [It has been so long](/blog/post/2012-08-02-it-has-been-so-long.md): I’ve been pretty bad at posting lately, but that’s not to say that I haven’t been busy! - [Jekyll, Markdown, and More](/blog/post/2012-12-23-jekyll-markdown-and-more.md): Jekyll: Where have you been all my life?! - [Keep that VPN Connected (MacOS)](/blog/post/2019-08-09-keep-that-vpn-connected-on-osx.md): I recently found myself traveling regularly, and I wanted to ensure that no matter when I opened my laptop, that my connection would be… - [Life Manifesto: Jan 2012](/blog/post/2012-01-21-life-manifesto-2012.md): A Life Manifesto is a collection of short "bullet points" which describe what your goals in life/love/society are and how you might… - [Looking for a new ElasticDump Maintainer. It could be you!](/blog/post/2017-06-09-elasticdump-maintinaer.md): There often comes a time in an open-source project’s lifecycle when the original maintainer needs to move on. Today, that person is me, and… - [Makara — a read-write splitting adapter for Active Record](/blog/post/2013-01-29-makara.md): A read-write splitting adapter for Active Record - [Markdown in React and Custom Page Elements](/blog/post/2019-12-02-markdown-in-react-and-custom-page-elements.md): I recently moved the Actionhero tutorials from the Actionhero Docs site docs.actionherojs.com to the main Actionhero website… - [MoVember 2011](/blog/post/2011-12-01-movember.md): Beard - [Node for Not HTTP](/blog/post/2014-12-07-node-for-not-http.md): On Thursday 2014–12–04 I gave a talk as the SF Node.js Club entitled "Node for Not HTTP". - [Node Spider (writing a real time messaging relay in nodeJS)](/blog/post/2011-12-01-node-spider.md): Sometimes nodeJS amazes me. - [node.js running on a Phidgets SBC2 board!](/blog/post/2012-01-16-running-nodejs-on-sbc2-phidget-board.md): After almost 15 hours or compile-try-fail-repeat, I’ve figured out the formula for compiling nodeJS on a Phidget SBC2 board! - [NodeChecker — Big Board Dashboarding](/blog/post/2011-12-11-node-checker.md): At ModCloth, our Ops team wanted to have a real time dashboard of important site information so they could know ASAP if something was wrong… - [nodeChecker update: now with SSH and Sockets!](/blog/post/2012-01-30-nodechecker-update-now-with-ssh-and-sockets.md): The nodeCheker project which I spoke about a few months ago got an update today. Now you can execute arbitrary SSH commands to other… - [nodeSpider updated: Now based on ActionHero](/blog/post/2012-02-13-node-spider-now-on-actionhero.md): A quick update about the nodeSpider project (my first public node.js project!): It is now based on ActionHero. - [npm and generators](/blog/post/2012-08-12-npm-and-generators.md): Today I learned that npm (the node.js package manager) has support for arbitrary commands and chained commands. I guess I always knew this… - [NPM and run-script](/blog/post/2012-09-09-npm-run-script.md): Just a handy reminder that you can add "arbitrary" commands to your node NPM modules without creating binaries. - [On ActionHero Routing](/blog/post/2014-01-04-on-actionhero-routing.md): I’ve been seeing questions about how actionHero’s routes interact with the actions. Here’s a bit more of an explanation (which I’ll keep to… - [On Domains and Connections with node.js](/blog/post/2012-12-13-domains-and-nodejs.md): Solved! - [On Ethical Ad-Supported Businesses](/blog/post/2016-12-23-on-ethical-ad-supported-businesses.md): Listen to this wonderful interview on KQED (NPR)’s "Forum" with Dr. Tim Wu On Advertising, Fake News and ‘Attention Harvesting’ - [On Inclusion](/blog/post/2013-10-14-on-inclusion.md): The topic of the day is inclusion. - [On NodeJS and Phidgets](/blog/post/2012-01-14-on-node-js-and-phidgets.md): For those of you who don’t know what Phidgets are, they are small robotic prototyping boards which can handle (binary) input and output… - [On Task Systems](/blog/post/2013-03-24-on-task-systems.md): Why Task Systems? - [Online and Offline Sync — The Illustrated Actionhero Community Q&A](/blog/post/2019-10-15-online-offline-sync.md): Welcome to the third installment of The Illustrated Actionhero Community Q&A! - [ownCloud + DreamHost: Your own Unlimited DropBox for 13$/mo](/blog/post/2013-01-07-owncloud-and-dreamhost.md): Intro - [Permissions for AI Use Cases](/blog/post/2025-01-14-permissions-for-ai-use-cases.md): AI can see too much if you aren't careful - [PhoneGap and Push Notifications](/blog/post/2012-04-11-phonegap-and-push-notifications.md): Mobile Apps with JS - [Pivotal Tracker, Phidgets, and Nerf Guns](/blog/post/2012-02-15-pivotal-tracker-and-nerf-guns.md): Nerf Guns and Product Management - [Production Deployment with node.js Clusters](/blog/post/2012-09-10-production-deployment-with-node-js-clusters.md): How do you deploy a node.js app reliably? - [Production Node Applications with Docker — 3 DevOps Tips for Shutting Down Properly](/blog/post/2020-02-18-production-node-applications-with-docker.md): Tips and tricks to shut down your docker applications properly. No more lost data! - [Productionizing Flynn and Hosting your Root Domain(s)](/blog/post/2016-10-28-productionizing-flynn.md): Flynn is a an open-source self-hosted Heroku replacement… and it is great. - [Proxying free Heroku Dynos though Cloudflare to a custom domain](/blog/post/2019-12-30-proxying-free-heroku-dynos-though-cloudflare-to-a-custom-domain.md): The Actionhero project runs a number of websites for the community — documentation, sample apps, etc. We often rely on Heroku’s free… - [Pull the Data you Actually Want](/blog/post/2020-05-22-pull-the-data-you-actually-want.md): Streaming event data becomes costly and less useful over time. Reverse ETL solves these problems. - [Rebuilding Capistrano with Ansible](/blog/post/2015-03-12-rebuilding-capistrano-with-ansible.md): Solid Ruby deployments with Ansbile - [Repeat Rate: What are you Actually Measuring?](/blog/post/2018-12-31-repeat-rate.md): Second-Order Measurements and your Product - [Ruby and Mavericks](/blog/post/2013-10-28-ruby-osx-mavericks.md): Are you developing in Ruby and have just upgraded your OSX Machine to Mavericks (OSX 10.9)? Are you suddenly having trouble installing or… - [Ruby, Homebrew, and OSX Sierra Upgrades](/blog/post/2016-09-22-ruby-homebrew-and-osx-sierra.md): Say you are a developer and you recently updated to OSX Sierra… - [Running a Node app on both IPv4 and IPv6](/blog/post/2021-08-16-node-js-and-ipv6.md): Grouparoo can speak IPv4 and IPv6 - Here's how we did it. - [Running node on a Phidget Board](/blog/post/2012-01-14-running-node-on-a-phidget-board.md): My last post was about creating a generic npm package to talk to a phidget board. This post is about compiling nodeJS to run on a phidget board - [San Francisco from a Yinzer’s Point of View](/blog/post/2012-02-17-sf-from-a-yinzers-pov.md): I have a hard time answering the question "where are you from?". I’ve lived in over 15 different homes in 8 cities. I was born in New… - [Save your High Water Marks as Strings](/blog/post/2020-09-14-save-your-high-water-marks-as-strings.md): Asking the database to return the High Water Mark as a string prevents a number of bugs. - [Scoreboard Guru Initial Release](/blog/post/2017-03-23-scoreboard-guru-initial-release.md): I’m happy to announce the initial release of Scoreboard Guru! - [Sharing Code in Next.JS Apps with Plugins](/blog/post/2020-07-23-nextjs-plugins.md): How does Grouparoo use Next.js to load pages and components from plugins to modify our web user interface? - [Small update to npm phidgets package](/blog/post/2012-02-16-small-update-to-node-phidgets.md): After all the hoopla about node.js and Nerf guns yesterday I revisited the phidgets package and fixed a few bugs. Most importantly there… - [SQL Dialect differences in Sequelize](/blog/post/2021-03-04-sql-dialect-differences.md): Grouparoo works with both SQLite and Postgres databases. This post shares what we've learned about the differences. - [StatusBot](/blog/post/2014-08-27-statusbot.md): Keep track of your uptime with Statuspage.io and Node.js - [switchboard.chat](/blog/post/2016-01-09-switchboard-chat.md): Today I want to announce the beta of a new website I built, switchboard.chat - [Testing actionHero with blitz.io](/blog/post/2012-03-30-testing-actionhero-with-blitz.md): I recently had a chance to try out blitz.io (or click my affiliate link thing and get me some free tests), a new load-testing tool from… - [Testing javascript applications with Selenium, Async/Await, and Jest](/blog/post/2018-03-28-testing-node-apps-with-selenium.md): 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! - [The Components of an AI Context Pipeline](/blog/post/2025-01-15-the-components-of-an-ai-data-pipeline.md): The ELT/ETL for AI - [The Real Reason I Will Not Be Your Technical CoFounder](/blog/post/2013-02-28-the-real-reason-i-will-not-be-your-technical-cofounder.md): I have been reading quite a few posts lately concerning the topic of becoming a ‘technical co-founder’ of a startup. Just search for the… - [The Road to GA: Understanding Airbyte Connector Release Stages](/blog/post/2023-01-19-airbyte-connector-release-stages.md): Airbyte Connector Release Stages - [The Voom Software Engineering Interview Process](/blog/post/2019-03-02-the-voom-software-engineering-interview-process.md): Building an inclusive and efficient interview process for a pair-programming team - [Tips for Building International Products and Companies](/blog/post/2018-10-09-tips-for-building-international-products.md): 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… - [Too many Chrome Tabs = Node.JS Server Crash](/blog/post/2016-10-11-too-many-chrome-tabs.md): Here’s a fun bug report: - [Travis-CI is raising money. Give them Money!](/blog/post/2012-02-07-give-travisci-money.md): Travis CI is raising money to keep their free community continues integration server up and running. This is an awesome service which I use… - [TypeScript Types from Class Properties](/blog/post/2022-01-06-typescript-types-from-class-properties.md): Use TypeScript to compute types from complex Objects - [Unicorns & Web Servers](/blog/post/2012-01-27-unicorns.md): At ModCloth, our website uses the Ruby on Rails framework, and we use the unicorn web server. When deploying code via Capistrano, we have a… - [Unicorns in Node or When does the cluster module mater?](/blog/post/2012-02-01-unicorns-in-node.md): At work the other day, an engineer most familiar with Ruby asked "What is the equivalent to Unicorn in Node?". Unicorn is a great… - [Upgrading our Community Pull Requests Experience](/blog/post/2023-04-28-upgrading-community-prs.md): Getting the Airbyte Community involved - [Using Next.JS to build Static Dynamic Websites… and never pay for font-end hosting again!](/blog/post/2019-09-13-using-next-js-for-static-sites.md): Use tools like Circle.Ci, Github, and Next.JS to host production-grade websites for free! - [What do you do when Softpedia scrapes you projects?](/blog/post/2012-11-24-what-to-do-when-softpedia-scrapes-your-project.md): Today I woke up to learn that I had made it big! - [When does API-First Not Apply?](/blog/post/2013-03-19-when-does-api-first-not-apply.md): When should you not use an API-First methodology? - [Why are database columns 191 characters?](/blog/post/2021-05-14-varchar-191.md) - [Why Choose Actionhero](/blog/post/2017-02-28-why-choose-actionhero.md): or: Actionhero is the Node.js server for when your project grows up