Great video on the caveats of not understanding the systems we're building (relevant nowadays with AI writing most of the code):
https://t.co/rPIncV5qqw
I'm trying something new with my blog, making it interactive
first article is about something I care deeply about: logs
logging sucks so much
https://t.co/mdFhxEvpjB
Recently I learned about a subtle difference in the execution order of nextTick vs microtasks (eg promises) in the nodejs event loop based on whether CJS or ES modules are used. Here is a short summary:
https://t.co/FYxA35ddep
As a fun Saturday vibe code project and following up on this tweet earlier, I hacked up an **llm-council** web app. It looks exactly like ChatGPT except each user query is 1) dispatched to multiple models on your council using OpenRouter, e.g. currently:
"openai/gpt-5.1",
"google/gemini-3-pro-preview",
"anthropic/claude-sonnet-4.5",
"x-ai/grok-4",
Then 2) all models get to see each other's (anonymized) responses and they review and rank them, and then 3) a "Chairman LLM" gets all of that as context and produces the final response.
It's interesting to see the results from multiple models side by side on the same query, and even more amusingly, to read through their evaluation and ranking of each other's responses.
Quite often, the models are surprisingly willing to select another LLM's response as superior to their own, making this an interesting model evaluation strategy more generally. For example, reading book chapters together with my LLM Council today, the models consistently praise GPT 5.1 as the best and most insightful model, and consistently select Claude as the worst model, with the other models floating in between. But I'm not 100% convinced this aligns with my own qualitative assessment. For example, qualitatively I find GPT 5.1 a little too wordy and sprawled and Gemini 3 a bit more condensed and processed. Claude is too terse in this domain.
That said, there's probably a whole design space of the data flow of your LLM council. The construction of LLM ensembles seems under-explored.
I pushed the vibe coded app to
https://t.co/EZyOqwXd2k
if others would like to play. ty nano banana pro for fun header image for the repo
@marclou@sunglassesface@marclou another approach with fewer security concerns (with some friction for users, though): pull the data using the uploaded key and not store it, update the UI to show "last updated..". Then people can manually upload a key and update their numbers once in a while.
@dwarkesh_sp@karpathy Erik Hoel's "The Overfitted Brain" is not a book but a peer-reviewed scientific paper outlining his "Overfitted Brain Hypothesis" (OBH), which proposes that the purpose of dreams is to prevent the brain from overfitting to its daily experiences.
https://t.co/g31oTGsH5K
@testdrivenio Good point. Branching at the code/implementation level can lead to less readable code. I use dependency injection and inject a mailer instance to the send_welcome_email function. An email is sent in production, and the email is logged in dev (branching when setting up the app).