Latest Updates
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 files in the repository and use an LLM to create a short description of each one.
- Core loop:
- Get a task from plan.md
- Use file_map.yaml to ask about relevant files, add these to Aider.
- Generate a plan to implement this task. Lay out the interfaces between the frontend and backend, but do not generate any code except for type definitions.
- Generate integration tests for the plan
- Generate the frontend code based on the plan.
- Generate the backend code based on the plan and the generated frontend code.
- Check types and edit until type checks pass
- Generate unit tests for the code
- run/edit loop on tests
- once tests pass, run format step
- run postmortem step updating docs and lessons
- update file_map.yaml file to describe any newly added files or files that
- As I make progress on this I may need to also come up with a system for developing detailed plan documents for each task. It can be done in ChatGPT/Claude but it gets a bit hard to manage all the different feature-specific chats all in one, and it would be nice to have this live alongside the actual coding agent and be informed by the repository structure.
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 machines to direct the high-level behavior of your agent feels like a very obvious thing to do, and a lot of people in the LLM space have been talking about it for a while now.
See more daily updates...
About Me
Work
I'm currently taking some time off, but previously I co-founded and spent
nine years working on
Carevoyance (acquired by
H1 Insights), a sales acceleration tool that
analyzes healthcare data and enables healthcare sellers to zero in on their
best prospects and generate custom reports and insights with just a few
clicks.
I spent most of my time there creating new data analyses, working on the
backend API and database systems, and developing tooling to research data
anomalies and automate repetitive tasks. I also successfully transitioned
the entire frontend application from AngularJS to SvelteKit.
In the past I worked almost exclusively in C++ and various assembly
languages. Now that I'm more in the web ecosystem, I'm mostly writing
Javascript for work, using Rust when I can justify it, and grudgingly
dealing with Python's package system for AI/ML work.
Before starting my own venture, I interfaced with advanced network switching
chips at
Arista Networks and worked on JTAG
hardware debuggers and embedded operating systems at
Green Hills Software. Running a small
startup feels very different from working at these companies, and it has its
ups and downs, but I love it.
Life
I usually have a few side projects going on, and I have a selection listed
on my projects page. There you'll find a bunch of
data workflow stuff, a personal dashboard, an AI assistant to amuse my kids,
and other things in various states of done-ness.
Sometimes I wish I could code all day and night, but when not hacking on
something or spending time with my family, I enjoy good coffee, nature
photography, reading nonfiction and sci-fi, and improving my nascent design
and UX skills. I'm also active in my church and run the sound board there
every few weeks.
Where to find me
Twitter is probably the best
way to contact me. You can also email me at daniel at this domain
or find me on
Github.
About this site
The website is written using SvelteKit,
Tailwind, and hosted on
Vercel. Icons sourced from the
Refactoring UI icon set and
iconmonstr.
The prose content on this site is licensed under a
Creative Commons Attribution 4.0 International License. The code can be viewed on
Github. The underlying code
as well as all code examples are licensed under the
MIT license.