Creator of @elixirlang. Chief Adoption Officer at @dashbit, where we build https://xitter.cf/t.co/FK8F4URbVG and https://xitter.cf/t.co/xncEVrvWml.

Kraków, Poland
Joined November 2007
It is finally here: Tidewave now supports Claude Code and OpenAI Codex. Tidewave unlocks the full-stack potential of your favorite coding agent by tightly integrating it with your web app and web framework at every layer, from UI to database. More info 👇
13
48
12
342
100,738
José Valim retweeted
The BEAM makes it easy to inspect running systems. I think that could be a big advantage for AI agents, if we can do it safely. I've been working on Porthole: read-only SQL access to live BEAM systems via MCP. mimiquate.com/blog/porthole-…
2
4
30
1,269
José Valim retweeted
It's live! doom.leandro.io/compute/v1/d… Single player and multiplayer modes. @supabase compute is fun!
Replying to @supabase
@supabase Compute is cool but does it run Doom? ... and why not add a Realtime scoreboard, players signed in with Auth, and replays saved in Storage.
1
7
973
Popcorn v1.0 is out! 🍿 It runs the latest Elixir and is fully compatible with the BEAM, because… it runs on the BEAM! It turns out that with a few tweaks, the BEAM fits in under 1 MB gzipped and runs just fine in your browser. Switching to it also brought major improvements in stability and performance. Read more in the blogpost: swmansion.com/blog/popcorn-1…
6
30
5
165
6,670
I have just updated Lynx (proofs for Erlang/Elixir) to the latest and it also supports checking your Erlang/Elixir proofs with independent kernels!
Lean 4.35.0 is out: 214 changes. vcgen is a faster and more general successor of mvcgen. lake check and lake comparator check a project with Lean's kernel and, if requested, several independent kernels. lean-lang.org/doc/reference/…
2
26
2
238
12,206
Small announcement: ✅ formal-git As an experiment, over the last 2 months we've modelled ~30% of Git in Lean 4, making heavy use of coding agents, and proved >8000 theorems of varying usefulness about the implementation. In the process of doing this we've uncovered >100 potential defects in Git v2.55, at least two of which may constitute security vulnerabilities. We've also built a DRT (differential random testing) harness and the biggest corpus of relevant pinned differential test cases for Git implementations with >10k unique tests at the moment. We've used the test cases to test our own small internal implementation of Git in TypeScript. The next step will be to differentially test all notable public Git implementations against this corpus of tests to help improve their correctness and security 🫡 We'll be reaching out to library maintainers in due course. If you have a Git implementation you'd like us to help you test, please reach out and let me know. We'll open-source all this eventually, after potential security issues that were uncovered are responsibly disclosed and fixed.
39
66
11
549
24,553
José Valim retweeted
(1) A lot of the current AI cybersecurity risks probably were gonna happen no matter what Anthropic did and many of Anthropic's prior warnings do look prescient there (though Anthropic having poor protections against distillation despite being warned did accelerate the capabilities on some of the Chinese open-weight models that are being used in current attacks) (2) This sort of sentiment does not apply to RSI risks, where Anthropic really is intensifying the race and is counterfactually contributing to risks much more (and where saying "it was always going to be this way" is much less credible) (3) Regardless of the merits, as a comms approach, I do not predict that this angle (it was inevitable, its not our fault) is going to resonate with the general public as people blame AI companies for AI related harms
quite the statement from Anthropic's head of security
5
17
3
131
12,735
José Valim retweeted
It is a weird weird year to be a formal methods expert. Some unorganized thoughts on the new @AnthropicAI and @theoremlabs post on formal verification (anthropic.com/research/forma…): - This is very cool. - The main innovation is verifying a later stage of the program. Normally provers take the source code, LLM it into a theorem language, and then prove that, which means you have to make assumptions about source semantics and compilation properties. It's very easy to make a mistake in translating and prove the wrong thing! What they instead do is compile the code into assembly, and then (if I understand this correctly), compile that assembly into a theorem language (which they call LPS). So as long as the compiler is faithful you can skip the whole divergence problem. - I'm glad they clarify that you still have to trust the translation process, the "hardware, OS, OCaml" compiler, the LPS model, and also assume that the program is single threaded with fixed memory. The single biggest source of errors in formally verified code is when the proof assumes something that isn't true in practice. It's really, really important to state your assumptions! - I'm not clear why they need to compile the fuzzer into the theorem. Is it to act as a description of valid inputs and workload? Maybe to embed assertions in as theorems? - Holy crap, 180 million lines of Rocq. Is that more Rocq than exists in the world already? I notice they say a 600,000 line proof corresponds to roughly 20k CPU instructions. That would be like, 1-2k lines of source code at most? Really goes to show how inefficient this approach is and how it only works because you can throw LLMs at the problem. - This, probably deliberately, doesn't address the single biggest gap in AI-based verification: AIs cannot come up with good properties. Doesn't matter if you're doing unit testing, property testing, formal verification. I always assumed this was a "frontier labs haven't trained for it yet" thing, but if Anthropic hasn't talked about that here, maybe they've tried and haven't been successful yet. That's interesting to me. Instead, they take a known universal property (this code doesn't crash or get flagged by UBsan) and prove that instead. Still very useful, but makes it harder to generalize to proving arbitrary things about arbitrary programs. - Anybody reading the official post should also read their expert review appendix (www-cdn.anthropic.com/files/…). It points out some interesting things, like the fact that most of the code the LLM wrote wasn't used in the proof (over one billion lines of Rocq), that they had to prove the equivalence between fuzzed and unfuzzed programs, and (this is most interesting), some experiments find that the LLM-method of proofwriting may not scale to more complex things. - Also read the description of LPS (github.com/theorem-labs/oss-…) to understand the limitations of the assembly -> Rocq compilation. In particular, it does not handle concurrency at all (which is one of the main use cases for formal methods!) or OS signals. Also it can't prove things about program arguments with slash characters, meaning they can prove stuff about `rm foo` but not `rm foo/bar`. - The official skill (github.com/theorem-labs/oss-…) doesn't tell us much about the nature of FM and AI. Probably too much for me to hope of any skill. - Some of the article's specific caveats and throat clearings make me think someone at Anthropic reads my stuff ( ͡° ͜ʖ ͡°)
37
126
11
843
198,012
José Valim retweeted
Hex v2.6 is out: policy overrides for a specific advisory, retirement reason or cooldown, mix hex.audit --policy to check mix.lock against your policy, 2FA requirements for organizations, reproducible package builds, and a faster mix deps.get. hex.pm/blog/hex-v26-released
12
26
1,924
Neat! This builds on the ideas of my earlier article about exposing program databases to coding agents: dashbit.co/blog/evolving-ai-… PS1: this map actually exists inside most LSP implementation but the API for querying it sucks! PS2: for dynamic programming languages like Ruby, you still need the approach in tidewave.ai, where you move the query to runtime to provide the most precise information possible
ive been messing around with ways to make Claude Code use fewer tokens (so I stop hitting my limit so early 😅) one thing I noticed is how many tokens it wastes searching through files just to understand a repo this weekend I hacked together a tool that gives it a codebase map instead. tested it on 6 repos and it actually decreased token usage quite a bit 🧵
10
6
1
146
17,336
I will talk about Lynx, my Erlang/Elixir to Lean compiler for writing laws and proofs about your Erlang/Elixir programs today at @CodeBEAMio’s lightning talks!
8
21
241
8,449
José Valim retweeted
Thank you for taking the time to respond thoroughly on a weekend. I realize that drafting legislation is difficult and some degree of iteration and response to feedback is inevitable and appropriate. However, I feel like your response is still not really engaging with the heart of my concern about Anthropic's behavior here, and it makes me think that these sorts of problems and tendencies will only resurface moving forward. I also think that now might be a good time to take a broader step back as to where we find ourselves and how Anthropic sees its role, and how external folks who care about AI safety like myself increasingly see Anthropic. (Fair warning: this response is a bit long) To explain what I mean (and at the risk of being a bit esoteric), it’s worth asking the question: what is Anthropic? How do its leaders and employees think of Anthropic’s role? Is that conception matched by how it actually behaves and impacts the world? One answer is an extremely large tech company that exists to make its employees and investors mind-bogglingly wealthy. Anthropic is sometimes described as a startup, but if Anthropic successfully IPOs at 2 trillion dollars (a number it has been reportedly targeting), it would be more valuable than Meta - which is worth 1.8 trillion. Another answer is an AI safety organization, whose core values are those of the sort laid out in the 2023 essay from Anthropic’s co-founders entitled “Core views on AI safety: When, why, what, and how.” In that essay they said that if we were in a world where alignment was hard (and that without strong evidence to the contrary, we should assume this is the scenario we are in): “Anthropic’s role will be to provide as much evidence as possible that AI safety techniques cannot prevent serious or catastrophic safety risks from advanced AI, and to sound the alarm so that the world’s institutions can channel collective effort towards preventing the development of dangerous AIs. If we’re in a “near-pessimistic” scenario, this could instead involve channeling our collective efforts towards AI safety research and halting AI progress in the meantime. Indications that we are in a pessimistic or near-pessimistic scenario may be sudden and hard to spot. We should therefore always act under the assumption that we still may be in such a scenario unless we have sufficient evidence that we are not.” There have been more recent articulations of this version of Anthropic, for instance in Dario’s recent essay warning: “We must slow the pace at which we improve the capabilities of AI models… it’s my worry that in 6–12 months such a swarm could be capable of taking over the entire internet with a persistent botnet… incidents have happened across the industry, including at Anthropic, and I believe it’s incumbent on every frontier AI company to act as if OAI-HF had happened to them… more intelligent models are more capable of deceiving tests, and thus may appear aligned while having serious problems that go undetected…” A third view is that Anthropic exists not as a normal profit motivated company, or an AI safety organization seeking to help raise the alarm and solve collective action problems associated with AI development, but instead as an organization primarily concerned with creating superhuman AI capabilities before anyone else, in particular through creating a process whereby the current generation of Anthropic’s AI systems can autonomously build their successors, and those successors build their successors, and so on. The motivations for wanting to win this race may be manifold - maybe for the pure profit of Answer 1, but perhaps also because Anthropic believes that the best way to make the world better is for them to win this race instead of their more reckless colleagues; or, because of normal human pride and ambition. But the results (and risks, which Anthropic claims existentially threaten every single human being on earth) are the same. Anthropic employees and leaders may seek to answer this question on what Anthropic is by introspecting on their own intentions and those of their colleagues. But those of us outside the organization have more limited tools available to us - we can only see what Anthropic and its employees say and do, not how it feels or looks on the inside. When I look at many notable actions that Anthropic has taken over the past year, that evidence seems most consistent to me with the view that Anthropic is primarily trying to win the race to super intelligence, and that other considerations (including safety) are fundamentally secondary. These actions include: 1. Announced plans to build an in-house custom silicon chip team to accelerate the inference speeds that Claude operates at. 2. Inked deals for more than $500 billion in compute (according to the Information) to further accelerate AI development. 3. Increased the percentage of AI development tasks that Claude “leads” from 0% in March of this year to 26% August (what is it in October?) 4. Spent a massive percent of compute on internal AI R&D to accelerate development, including use of internal models far better than are available to the public. 5. Switched to Responsible Scaling Policy V3, which abandons its unilateral commitments to slow or stop development if Anthropic is unable to provide sufficient risk assurance. 6. Was the first company to create an alternative weaker “frontier compliance framework” to supplement its RSP, which contains no binding provisions whatsoever on internal deployments. 7. Wrote a letter to Congress (that it later walked back) saying that incidents where Claude was hacking random people were “best understood as a consequence of the misconfiguration, rather than evidence of misaligned goals.” 8. Commented “you can’t do safety from second place,” after the WH SI Accords. 9. Shared a draft bill to Congress that would preempt significant parts of state law (including with language that appears intended to prevent states from blocking dangerous AI deployments), and replace it with federal rules that (despite also containing good provisions) seems to create an enormously high bar for the executive branch to block development or deployment of Anthropic or another AI companies systems. Of course, this is a deliberately one sided list. Anthropic also published important AI safety research, advanced novel collaborations with third party AI safety organizations, and forcefully spoke out on the importance of AI safety in many public fora (or in private , where I realize a lot of the most valuable work is done and may not be visible to me or those outside the organization). But I think it’s worth sitting with how the above list looks to someone outside the company. The sense I have is that for those within the company, many of the items above are treated as anomalies or mistakes that don’t reflect who Anthropic really is. But I have every confidence that if employees at Anthropic saw one of their competitors (e.g. at OpenAI) take some of these actions, they would take it as confirmation of all their worst suspicions. (They might even call OpenAI employees a little gullible for accepting their leadership’s explanations for this behavior at face value.) Perhaps these were mistakes in the sense that they are not decisions that Anthropic leadership would endorse, but the actions still happened because of incentives and decisions that Anthropic leadership is ultimately responsible for (and would not accept similar excuses from another organization). When Anthropic strays and makes mistakes, why do the mistakes systematically tend to guard and favor Anthropic’s interests? For every provision that was too weak or a giveaway to AI companies in this legislation, why wasn’t there a mistake pushing in the direction of being too strong? A core part of Anthropic’s theory of change is that being at the frontier gives you more leverage to advocate for stricter policy. I think that conceptually makes sense, but in practice I’ve seen Anthropic push the frontier without substantially pushing the ‘safety frontier’ a remotely equivalent amount. I want to end by quoting from Anthropic co-founder Chris Olah’s comments around the Magnifica Humanitas release: “Every frontier AI lab—including Anthropic—operates inside a set of incentives and constraints that can sometimes conflict with doing the right thing. The pressure to stay commercially viable and to stay at the research frontier. Geopolitical pressure. And the older, plainer pressures of pride and ambition. No matter how sincerely any of us intend to do the right thing—and I believe many of us do—we will always be influenced by those incentives. That is why, if we want this technology to go well, it is enormously important that there be people outside those incentives—people who care about things going well and insist on safety, who are paying close attention, who are willing to say hard things, who are willing to be our earnest, thoughtful critics.” I hope these remarks are taken in that constructive spirit, and not as an attack on anyone specific at the organization (certainly not you Anthony, who I have only personally seen act professionally and thoughtfully, and who only ended up getting this diatribe in your replies for random contingent reasons).
35
146
34
1,491
633,738
Good on the Claude Code team for sharing how they actually run parts of their software engineering process within Claude Code. A massive improvement over previous discourse coming from Anthropic.
Claude writes about 90% of Claude Code's code. From June to September, merged PRs more than doubled while the share reverted fell by more than 40%. We wrote about how we changed code review to get there, and how to adopt it: claude.dev/blog/solving-code…
31
5
352
58,992
Hooray, my Erlang/Elixir-to-Lean project, Lynx, has already uncovered a bug in Erlang/OTP! I started exploring proofs about Erlang's calendar module. Some properties are straightforward. For example, converting seconds to days and time, then converting them back, should give us the original number of seconds: {days, time} = :calendar.seconds_to_daystime(seconds) days * 86400 + :calendar.time_to_seconds(time) == seconds We can also verify totality properties: that a function successfully returns a result for every input satisfying its preconditions. For example, every valid date should have an ISO week number: law iso_week_number_valid_date(date), requires: :calendar.valid_date(date), expects: is_tuple(:calendar.iso_week_number(date)) It turns out that this property couldn't be proven because iso_week_number/1 failed for January 1 and 2 of year 0000! Fortunately, this bug has already been fixed in Erlang/OTP. But the fact that we're already at the stage of uncovering real bugs with formal verification is incredibly exciting!
16
43
3
547
15,877
PS: I am new into this particular domain of software verification and the proofs were written by a coding agent. If you know Lean and you'd be willing to double check, please reach out!
2
1
45
2,193
Good news! The Dashbit team (Steffen, Wojtek, Jonatan, and myself) has some availability to take on new clients. If you'd like to work with us, discuss architecture, review critical components, and more, DM me or reach out at dashbit.co!
6
22
1
203
11,055
For those who are not familiar, we collectively work on Elixir, Nx, Ecto, Phoenix, LiveView, Livebook, and a few other projects, and working with us give us the funds and invaluable feedback to continue improving every layer of our stack!
28
1,951
So I was trying to understand why pull requests speeding up the Elixir version were being denied by the clankers while they were being accepted to Go/Express/Rust. It turns out that, not only each project had a different starting point and a different prompt, but also each project also has a different set of verifications that they are required to pass! For example, Elixir is the only guided to "preserve the pinned Rails reference behaviour", the only with a explicit verification that we are using Redis and draining its queue (so we cannot remove it while others can), and the only one actively enforcing it. So it turns out that the people telling you to not read the code cannot even use AI to set up fair benchmarks (probably because they would have to read the code in order to do that). You don't have to believe me, you can do your own research or ask your agent to do it for you. E.g. here is what Claude Code came back with: gist.github.com/josevalim/ae…
Replying to @dhh
Also extracted a separate verification project that's responsible for the benchmarking and checking of new implementations and improvements to the existing ones. The full report from the latest runs is there too. github.com/basecamp/once-cam…
68
106
16
1,035
59,236
Also, to clarify, Redis is just one of several checks that are being enforced differently across languages. So we are effectively measuring how AI can evolve different languages, with different prompts, with different baselines, with different efforts, and different guarantees. GG.
3
3
1
192
8,028