RSS Amplifier

Blog

Daniel Imfeld's blog - All Content

Daniel Imfeld's Writing and Notes

imfeld.devRSS feed ↗20 posts

Written by

Latest posts

2025-01-07

Building Most of my time lately has been spent between my new startup and my new baby, but when I can squeeze in some free time I'm trying my hand at an autonomous programming agent based around Aider. First attempts with prompts I found from elsewhere were just mediocre, but I'm thinking something like this: Aside from Aider's internal repo map, I'll create a list of all the…

JS Sidecar

This is a Rust library which, instead of embedding a JavaScript engine directly into the application, communicates with a persistent pool of engine instances that are set up to execute code. It's somewhat difficult right now to embed a well-equipped JS engine instance into your application if you want to have full API availability, and so this gets around that problem while avoiding the…

2024-07-11

Learning Today I read StateFlow: Enhancing LLM Task-Solving through State-Driven Workflows . This paper talks about using state machines to explicitly model the problem that an agent is trying to solve. They got great results, and I agree that it's a good way to go about solving a problem, but I'm not sure what's really new here. Maybe it's just my background, but using state…

2024-07-10

Learning Today I presented a review of The Landscape of Emerging AI Agent Architectures for Reasoning, Planning, and Tool Calling: A Survey at the Latent Space paper club. While it wasn't recorded, my slides are published on Google Slides .

The Landscape of Emerging AI Agent Architectures for Reasoning, Planning, and Tool Calling - A Survey

The Landscape of Emerging AI Agent Architectures for Reasoning, Planning, and Tool Calling: A Survey Introduction The paper defines agents as a system that uses planning, loops, reflection, and other control structures, as well as leveraging the model's reasoning abilities to accomplish a task. This paper focuses mostly on the difference between single-agent vs. multiple-agent architectures.…

2024-07-09

Building Fixed some issues with svelte-maplibre and Mapbox's Draw plugin today. Both of these turned out to be general incompatibilities with Maplibre, where the Mapbox plugin (understandably) assumed the presence of certain Mapbox CSS classes. I released v0.9.9 of the package which includes some new CSS which allows the mouse pointers to work properly in Maplibre. And an example is also now…

2024-07-02

One of the best parts about tools like Phind is you can ask it a question, follow up with "I'm on a Mac and this didn't work" and it will just tell you why. Turns out Mac tools often use libedit instead of readline, so your keybindings need to go in .editrc instead of .inputrc.

2024-06-15

Building I've managed to avoid learning Kubernetes for years, but it's finally time, so I'm setting up SBBP to run with it. I'll probably put Caddy in front. Aside from the learning, the main purpose of this is just so I can easily add the transcribed videos to Readwise. Learning SIEVE is a smarter change eviction algorithm that also manages to be simpler and faster than most…

2024-06-12

Learning Hit an unusual problem today where reading pixels back from a canvas HTML element won't always give you the same value you wrote, if Brave's anti-fingerprinting measures are on. (Anti-aliasing is an issue too, but we knew about that already.) I remember reading something about how browser-fingerprinting libraries can sometimes use techniques like this to determine unique users,…

Aviator CLI Cheatsheet

Aviator is a tool for managing stacked branches and PRs. Their CLI can be used separately from the rest of the product. Here are some useful commands for it: av stack sync rebases branches within the current stack and pushes av stack sync --trunk is like the above, but also brings the stack up to date with the trunk branch av stack sync --prune deletes branches for merged PRs av stack sync --all…

Chronicle

Provides a proxy which can be called instead of the normal URL, then passes a request to the LLM provider and returns the response. Chronicle can be embedded directly into a Rust application or can run as a standalone server. Task List Up Next Write documentation Basic UI for visualizing runs, steps, etc. Soon Option to skip logging model messages Python client This should be both a normal client…

Ramus

Ramus is an in-process DAG and state machine executor designed for running agents with a focus on observability. Task List Up Next Probably drop this and use LangGraph instead? Completely serialize and restore an agent This needs to account for tool context as well, shared state between nodes, nested state machines, etc. Probably split up "context" and "tools" where "context" always needs to be…

2024-03-11

Building Filigree Got the object storage abstraction and configuration finished up over the weekend. Now I"m starting on a "File" type of model, which will allow the template system to generate code that handles uploads, and optionally stores things like file hash, image type, etc. in the database.

2024-03-06

Building Filigree Starting on object storage support. Once done, this will add a File type to the database model, set up the client, and also make it easy to do things like stream files to and from the client. And of course the template system will initialize everything for you.

2024-03-05

Building Smelter The worker framework now handles SIGINT for you, and gives your code a channel that will change when the task should be cancelled. Published v0.1.0 of the Smelter crates, since it's about to go into production at work! Effectum More work on outbox pattern. The code is pretty much done, just needs tests.

2024-03-04

Building Effectum Started on support for transactional outbox pattern, since I'm starting to add background worker support to Filigree Smelter The AWS Rust SDK doesn't handle the ThrottlingError returned from the ECS API, and so they don't get retried. I added a custom `ClassifyRetry` layer to make this work. Improved job cancellation on error, specifically around ensuring that…

2024-03-03

Building Smelter Worker containers collect statistics such as RAM used and load average, and return these to the job manager. Added comments to all the public exports, in preparation for the first published version on crates.io

2024-03-02

Building Smelter Added better job cancellation support Each job now as its own UUID QOL improvements around status messages

AWS VPC Configuration

AWS sets up a bunch of convenient things in the default VPC for an account, which you may need to recreate when making a new VPC. Here's how to do that in Terraform. First, the VPC and subnets: resource " aws_vpc " " my_app " { cidr_block = var . my_app_cidr tags = { Name = " my_app " } } resource " aws_subnet " " my_app " { vpc_id = aws_vpc . my_app . id cidr_block = var . my_app_cidr # Set…

2024-03-01

Smelter had been on hold for a while, but this week at work a need came up for parallel processing, so I finished it up and ran the first real job! This data processing pipeline formerly took 6 hours to run with a single process on a 24 vCPU machine, and now runs in 23 minutes using 32 8vCPU containers on Fargate. The original vision for Smelter was to run it with Lambdas and other similar FaaS…