Shout out to Airtable engineering on this gutsy, impressive migration! medium.com/airtable-eng...
Shout out to Airtable engineering on this gutsy, impressive migration! medium.com/airtable-eng...
exe.dev's CLI and API are one and the same, as it should be. blog.exe.dev/apis-for-the...
Serverless is a mess. Persistent VMs for the win. blog.exe.dev/persistent
A coding agent UI. User asks "What is the answer to life, the universe, and everything?" Agent answers, "1."
Today in the ambiguity of Markdown, I asked Shelley (a coding agent) what the answer to Life, the Universe, and Everything was, and it responded, "1." Which is, of course, the Markdown rendering of "42.", which is, of course, a numbered list.
I've been saving my prompts (and thereby intentions) by using a git commit hook. Surprisingly easy, because you can have "git commit" error out with instructions for the agent. 10/10, will hook again. philz.dev/blog/git-com...
ttl.sh is very cool. Limited-duration container registry, perfect for testing things!
Wrote blog.exe.dev/expensively-... to dig into how cache reads costs dominate LLM agent conversations. Several visualizations and one terrible pun included!
docs.stripe.com/stripe-data/... looks like they’ll deliver a parquet file to s3 which is pretty close. Duckdb will happily read it.
Look on my Works... This is the coding agent I've been busy building.
Thanks for the kind write-up!
Follow the “login” button (top right) on the front page and try it without a laptop!
It’s not supposed to. Ping us on discord or DM or whatever and we can look into it.
ssh exe.dev
"PRAGMA busy_timeout=1000;" is often helpful.
Ctrl-P Ctrl-Q detaches from "docker -it alpine:latest sleep 10000". (And ~^Z or ~. for SSH.) (And Ctrl-B d for tmux.)
This was fun. Wrote a bookmarklet to add an agent (bring your own anthropic key) to any (excluding strict CSPs) website. blog.philz.dev/blog/itsy-bi...
Inject requestids into a function name (generate a pass through dynamically one way or another) and attach a sampling profiler. Log slow requests and then find them in the profile.
Wrote up a complete example of managing Grafana dashboards in code at philz.dev/blog/grafana/.
A pie chart, showing "CPU Usage Distribution", with Iowait at 56%, User at 28%, System at 16% and Softriq at 0%.
I'm ready for data visualization competition.
LLM agents loops with tool use are handy and surprisingly quick to write.
sketch.dev/blog/agent-l...
Rejecting git pushes because prettier et alia failed... just to run the formatter and push again is nonsense. Big quality of life improvement to just let the merge queue take care of it. sketch.dev/blog/lightwe...
If you want to try out the next version of sketch.dev (that you can run on an existing code base), send me a message and I'll add you.
I've seen the "root span" be the "page load" (i.e., the HTTP request that then initiates the websocket connection).
Ultimately a profile is a collection of stacks and you can convert into a greppable format and filter appropriately. I spent too much time on blog.philz.dev/blog/flamedu... at some point :)
In which we learn a bit about language servers: blog.philz.dev/blog/languag...
Found myself nodding along to the entirety of https://jeremymorrell.dev/blog/a-practitioners-guide-to-wide-events/. Log one, wide, structured line per request. Include everything you can think of. (And then, hook up your data warehouse and tooling to it!)