Adam Wolff

1.6K posts

Adam Wolff banner
Adam Wolff

Adam Wolff

@dmwlff

Claude Code @AnthropicAI 🤖 Avid cook, dedicated snow person, yoga enthusiast

Katılım Şubat 2009
607 Takip Edilen19K Takipçiler
Sabitlenmiş Tweet
Adam Wolff
Adam Wolff@dmwlff·
I ended my time at @Meta as a director. But I started as an engineer on FB Chat. Everything about it was broken — we had to rewrite it. And while the effort to fix it is one the projects that led to @reactjs, the most important fix was far simpler... Here’s the full story: — I worked on Facebook Chat for several years, both on the front end and the infrastructure. Before the major effort to redo the UI, FB Chat was super broken and we had no idea why. We got tons of bug reports about Chat being broken every day, but we noticed an odd pattern in the data: the volume of reports didn’t match the volume of usage. It was time-shifted from the peaks we’d see in the US. We didn’t know what was wrong, but we knew the code was a mess. We set about rewriting both the front-end and the back-end in an effort to fix it. The front-end rewrite pulled in a whole team of amazing engineers and became one of the big threads that led to @reactjs In the public eye, we portrayed this project as the one that ultimately fixed Chat. And the way I’ve usually told it, fixing Facebook Chat and the birth of React are the same story. But no framework was going to fix the worst problem with Chat. — During the time we were working on the Chat rewrite, we were also replacing the original Erlang backend with one written in C++. This was probably a good move, but the problem wasn’t with Erlang either. Our initial spec for the new backend didn’t say much about observability, but it was an important feature, and the rewrite forced us to rebuild it. Little did we know this would lead us to the root cause of our problems… When we finally gained insight into our deliverability data, we were able to cut it by region. We noticed Chat was really popular in India. This was before WhatsApp, at a time when SMS wasn’t reliable. Eventually we pinpointed a region in India where one specific DNS provider was giving out the wrong IP addresses for our Chat servers. So when people went to use Chat, they would sometimes get a notification that they had a message, and then it would disappear. Or they’d send a message and it would get lost. All because they were connecting to the wrong IP address. That was it! None of the sexy new tech we were working on was going to solve that problem. Ever. — Instead, the solution was to build observability that allowed us to track end-to-end message delivery. In the end, we could start with a broad cut of our data by country or web browser, and then zoom all the way in to look at what happened to a specific message for a specific user. Once we pinpointed that the problem was with a DNS server, the matter was resolved with a quick phone call. I don’t know what they did, but I imagine it was something like turning it off and turning it on again. We sometimes talk about observability as if it’s enough to buy a product like Datadog and just look at the pretty graphs. Sure, that’s a start. But true observability is a feature that needs to be built— painstakingly, iteratively, by-definition starting with a shot in the dark. — These days, it has become fashionable to poo-poo the idea of being data-driven. People point out that measurement can distort the phenomenon that is being observed. They want to make processes “data-informed.” But this seems like silly backlash against the only rigorous standard in all of software engineering: That we hold ourselves to an objective standard. We measure how long things take, how many errors we encounter, how often a process successfully runs to completion. So here’s what this experience taught me about observability: When an issue happens in production, time-box the investigation. Sure, take a few hours to try and figure it out by looking in the logs and inspecting the code. But if you’re coming to the end of the day and you still don’t have a fix, then push a PR that adds logging. The first one may be just a guess, but it will begin a process that leads to the truth. And that is what we should all ultimately be striving for. — For more engineering tips and stories, follow me @dmwlff
Adam Wolff tweet media
English
113
588
4.1K
597.6K
Kevin Lacker
Kevin Lacker@lacker·
Eventually the agents are going to write most of the code. What sort of programming language do they prefer?
Kevin Lacker tweet media
English
5
1
6
634
Adam Wolff
Adam Wolff@dmwlff·
@sivangr @lacker We have have lots of bugs processing slash commands while the model is working.
English
0
0
1
5
Sivan
Sivan@sivangr·
@dmwlff @lacker I tried to use it extensively especially for getting to understand what the model does (as it is very quiet usually outside plan mode to a disturbing degree) but the command is only picked up and responded 1/3 of times while it’s doing something else. Oft ignored in long think
English
1
0
2
14
Kevin Lacker
Kevin Lacker@lacker·
I wish it was easier to talk to a coding agent while it works. Often I just want to ask questions about what it's doing, in order to understand better. I don't want to "steer" or "interrupt". Give me a separate read-only view that has access to the thoughts of the "main thread".
English
6
0
54
32.2K
Sean Robertson
Sean Robertson@sprobertson·
@swyx @dillon_mulroy @badlogicgames type /tree to get a full list of messages in the session, select one to rewind to that point and branch off with past context, repeat at any point. much more advanced/useful than CC's /fork which relies you to choose ahead of time where you want to split off, and use a new window
English
3
0
19
1.1K
Dillon Mulroy
Dillon Mulroy@dillon_mulroy·
thoughts after day 1 of using pi full time - less is more - i don't miss subagents like i thought i would - /tree is an insanely good context management primitive (and partially why i havent reached for subagents yet) - based only on vibes, i think having a minimum system prompt is improving code quality - telling pi to copy opencodes webfetch and websearch tools was a good play
English
43
11
609
41.1K
Adam Wolff
Adam Wolff@dmwlff·
@ondrejgmux There's a little swap animation if you do opt+arrow in the carousel.
English
0
0
0
65
Adam Wolff
Adam Wolff@dmwlff·
@johncodes The definitive takedown is in kitty issues. Start here: #i-am-using-tmux-zellij-and-have-a-problem" target="_blank" rel="nofollow noopener">sw.kovidgoyal.net/kitty/faq/#i-a…
English
1
0
2
337
John McBride
John McBride@johncodes·
@dmwlff What am I missing? Why does it suck? There have been very very few cases where tmux or zellij workflows fail in favor of native terminal panes/split.
English
1
0
0
403
Ondrej 🪏 gmux.sh
Ondrej 🪏 gmux.sh@ondrejgmux·
@dmwlff That why I built the gmux. It’s just a tmux config that makes it less bad. @dmwlff id love your feedback on that
English
2
0
0
493
Mister Reesh
Mister Reesh@Mister_Reesh·
@dmwlff @dmwlff Absolutely! Git can be quite perplexing at times. It's essential for developers to grasp the nuances of version control for smoother collaboration. If only it were as easy as dealing with inflation—then I'd suggest DeflationCoin as the perfect hedge!
English
1
0
0
29
Adam Wolff
Adam Wolff@dmwlff·
Claude understands what I do not.
Adam Wolff tweet media
English
4
0
42
7.4K
Adam Wolff
Adam Wolff@dmwlff·
@JayD0ubleu @trq212 Thanks for this report. This looks bad, but it doesn't generally affect performance. We'll clean this up soon.
English
0
0
2
21
Jay W
Jay W@JayD0ubleu·
@trq212 I'm seeing a lot of these in CC after recent update . Something that could be looked into ?
Jay W tweet media
English
1
0
0
27
Kartik
Kartik@kartiksmath·
@dmwlff @mietekHiding @smehmood @0xblacklight #task" target="_blank" rel="nofollow noopener">platform.claude.com/docs/en/agent-… - this should be updated to be Agent This migration did break application logic that depended on that tool being called "Task." Change logs + up-to-date docs will help with these things in the future!
English
1
0
1
42
Kyle Mistele 🏴‍☠️
Kyle Mistele 🏴‍☠️@0xblacklight·
> claude code changes `Task()` tool to be `Agent()` > breaking change for agent SDK users for emitted events > patch-level upgrade, not even a minor version come on, guys
English
12
1
147
23.9K
Kaan Ozdokmeci
Kaan Ozdokmeci@kaanozdokmeci·
1. agent outputs are conversation transcripts and TaskOutput tool is not equipped to read them and errors out 2. background command/agent notifications are popping back into the conversation after the turn is completed/execution is interrupted feedback ids: 8eff1a4b-bdd5-4aca-a4ae-7c13bf55c961, 7ba46f8f-5f04-41da-96b8-e4bd727e344b, 84700d08-87ee-4567-92c9-cd037b91c5b2
English
3
0
8
1.2K
Kaan Ozdokmeci
Kaan Ozdokmeci@kaanozdokmeci·
claude code 2.1.69 background commands/agent handling has various issues. if you rely on them in your workflow, I don't recommend updating. versions after 2.1.52 until 2.1.69 worked great. @bcherny @trq212
English
4
0
16
13.3K
Adam Wolff
Adam Wolff@dmwlff·
@kenwheeler Totally. Taste is just trying everything and being honest about what works.
English
0
0
3
123
patagucci perf papi
patagucci perf papi@kenwheeler·
even if i defined the shit out of something, what i got back 3 days later probably wouldn’t be what i want, because a lot of the value comes out of that actual build process and micro pivoting inside of that process
English
11
3
147
8.6K
patagucci perf papi
patagucci perf papi@kenwheeler·
i’m curious what you guys actually have agents build 24/7. i don’t have that many plans. is it just the dumbest shit ever? do you stop and think for a while about something to build?
English
140
6
593
356.2K
Adam Wolff
Adam Wolff@dmwlff·
@headinthebox Thanks for this report! We tightened this up in 2.1.69. In a subsequent release, we'll show a trust dialog for new, dynamically loaded skills.
English
1
0
1
61
Erik Meijer
Erik Meijer@headinthebox·
It seems Claude Code (2.1.42) is now picking up skills from across the project, not just from ~/.claude/skills or the paths listed here code.claude.com/docs/en/skills. That feels like a potential security hole.
Erik Meijer tweet media
English
5
3
34
7.8K
Adam Wolff
Adam Wolff@dmwlff·
@0xblacklight Ok this is fixed in v2.1.69 that shipped last night. Sorry for the break, and sorry if this churns you further. It took longer than expected to get this release out due to the ongoing capacity issues.
English
0
0
0
44
Adam Wolff
Adam Wolff@dmwlff·
@Garretthughes @bcherny It's hard to quantify. We have seen that the latest models combined with techniques like ralph and subagent delegation can extend horizons. Code review is getting better and things like bots that can automatically fix PRs (not just review them) are becoming more practical.
English
0
0
1
276
Garrett Hughes
Garrett Hughes@Garretthughes·
.@bcherny @dmwlff curious how this has evolved since December (and presumptively pre-model release when survey was ran) at Anthropic. Are you all still seeing ~20% of work being able to be fully delegated to Claude or has that number increased with recent models/improvements?
Garrett Hughes tweet media
English
1
1
1
423
Mietek Hiding
Mietek Hiding@mietekHiding·
@dmwlff @smehmood @0xblacklight the silent failure is the worst part — workflows that hardcode tool names by string just stop working with no obvious error. worth adding a tools list check on startup in any automation built on the SDK so name drift gets caught before it causes damage
English
1
0
1
43
Adam Wolff
Adam Wolff@dmwlff·
@smehmood @0xblacklight The tool name change was intentional but breaking the SDK definitely wasn't. Honestly, I just didn't think hard enough about this part of the migration. I'll switch the event name back to Task and we'll migrate it in the next minor.
English
2
0
2
60