Event Recap: What Does It Mean to Be a Developer in the Age of AI Agents?
What Does It Mean to Be a Developer in the Age of AI Agents? October 15, 2025, Philadelphia, PA At a recent Chariot Solutions panel discussion hosted at Certara (thanks Martin Snyder!), technology leaders gathered to explore one of the most pressing questions facing the software industry today: how is the developer’s role evolving as … Read More
Adding Conversational AI to Your App — Part 3: The UX of Chat Interfaces: What We Gain and Lose
In Part 1 and Part 2, we focused on the mechanics of translating natural language into commands and making the chat more context aware, leading to a more conversational experience. But stepping back, there’s a bigger question: what does a natural language interface actually do for the user experience? After all, if we’re going to … Read More
Adding Conversational AI to Your App — Part 2: Adding Conversation History to the Context
Tool Limitations In Part 1, we went over converting natural language requests into commands, using LLMs. That’s a nice improvement from having to enter slash commands, but the current tool still has two major limitations: No flexible editing: There’s no way to update or delete an existing item using natural language. When referring to a … Read More
Adding Conversational AI to Your App — Part 1: Converting Natural Language into JSON Actions
What We’re Building When I recently paired with Claude Code to build a text-based to-do app (code available on Github, disclaimer: mostly generated by Claude), I wanted to add a simple natural language interface. In this post, we’ll build that feature using TypeScript, Node, and an OpenAI model, without using any special frameworks that might … Read More
Chariot Day 2022: Finding the Signal in the Noise
One of the greatest joys of working at Chariot is having coworkers who are curious and eager to share their knowledge.
Simply explained: Akka Streams Backpressure
Backpressure Food for thought Very simply put, the idea behind backpressure is the ability to say "hey slow down!". Let's start with an example that has nothing to do with software: Imagine you own a factory that produces doughnuts (lucky you!) and just signed a contract with the largest grocery chain in the Northeast US. … Read More
SBT: Group annotated tests to run in forked JVMs
SbtTestGrouping Running tests that use a HiveContext On our current project, we utilize Spark SQL and have several ScalaTest based suites which require a SparkContext and HiveContext. These are started before a suite runs and shut down after it completes via the BeforeAfterAll mixin trait. Unfortunately due to this bug (also see this related pull … Read More
Slick 3.1.0, Oracle 11g, and UUID columns
SlickUUIDs UUIDs to the rescue I recently decided to change our primary key strategy from an auto-incrementing Long to UUID (aka globally unique IDs). Early on in a project, this should be a relatively simple refactoring (neither the software nor any data has been released yet). First of all and most importantly, UUIDs provide uniqueness … Read More
Binding custom types in plain SQL queries in Slick
Hierarchical Queries Hierarchical Queries and Oracle Not everything is as fun as the first time you discover the power of monads and for-comprehensions, or realize the state machine you wrote with pattern matching is super easy to read and follow! Some days its business as usual, which as a software developer means you’re usually trying … Read More