2026 50

Things I Learned - 23 Aug 2026

This week, I learned: DuckDB 2.0 adds a CONNECT command that can connect to databases like MySQL, PostgreSQL, etc. making DuckDB the only DB client I need. EQ-Bench evaluates models on capabilities like: does it follow direction, does it challenge you, how good are its insights, does it build rapport, etc. Very interesting to see that the Gemini models are the most “yielding” to your pressure and “validating” your beliefs (Anthropic’s are the least) while OpenAI models are the most “directive” (give concrete actions) #ForNow. There are other benchmarks such as Creative writing which Opus 5, Kimi K3, and GPT-5.6 Sol lead #ForNow. OpenRouter offers several models at a discount. #ForNow, GPT-5.6 Sol is at a 50% discount, DeepSeek v4 Pro at 62%, and Gemini 3.7 Flash at 75% discount. There’s also a Free Models collection that #ForNow includes Nemotron 3 Ultra and more. For a few years, I’ve been feeling useless, that I don’t contribute anything tangible to my organization. No measurable metric I’ve improved. Today, it strikes me that this is a good thing if I don’t want to be fired. As AI eats up more of our work, measurable contributions naturally shrink (AI does more, you do less/different work), and the vague “Oh, he’s probably doing some good” is a safer bet than “He contributed 10% to this metric last year, this year it’s 1%, can we justify his cost?” (I’m sure marketers will come up with a good term to cover this feeling of uselessness that is actually a good thing.) ChatGPT Desktop - Work is a layer on top of Codex #ForNow (which I sort-of expected, but the session logs confirm this). It adds instructions that cover: Memory: from memory_summary.md, MEMORY.md, rollout summaries, and saved skill notes. Recheck decaying ones, mention if unverified. Folders: Temo work in work/, final in outputs/, local files use absolute paths. Coordination: How to start, fork, inspect, message, wait for, rename, … Codex tasks, how to use subagents. Automations: Available tools for reminders, schedules, monitors, follow-ups, and wake-ups. Knowledge management: known project → memory; specialist task → skill; external object → connector; subtask → subagent; recurring work → automation; finished artifact → Work UI primitive. Presentation: Use shell/scripts internally but hide it, describe outcomes in user terms. Apps/Connectors: Gmail, Drive, GitHub, Dropbox, etc. Skills: via SKILL.md Neither ChatGPT Work nor Claude Work can read the ChatGPT / Claude chat conversations. But the chat conversations can access past conversations via “Memory”. That’s a pity, and one of the reasons I’m more often on “chat” than on “work” - it can refer to my past chats automatically, which helps build a kind of unstructured knowledge base. The other reason is that, at least on ChatGPT, chat does not consume usage limits #ForNow. ChatGPT work and Claude - both chat and work - consume usage limits. Weird that there’s a “make a lot of money” button and nobody’s pressing it (take your SaaS, make it headless, let agents use it, charge per interaction esp for enterprises). Thariq AI is accelerating discoveries in cyber (definitely) and maths (reasonably) but not as much in algorithms. METR “Match your prompt style to the desired output.” Clear guidance from Anthropic that “The formatting style used in your prompt may influence Claude’s response style.” OpenAI says something similar - adapting implicitly to the user’s tone. But this is not a very strong signal - examples are better guides. Why model routing must be in the harness. Makes perfect sense. “Only the harness can judge when a model switch is worth the cache miss.” I’m sure some popular harness (like OpenCode, Codex, Claude Code) will enable an “auto model” mode that’ll pick and change the model by itself by the end of the year. Microsoft Print to PDF can, sometimes, generate PDFs with no highlightable or selectable text - all fonts get converted to paths. A crude solution is below. This is a poor solution but often good enough for an LLM to process. (Of course, if you’re passing it to an agent, you could just upload the file and it’ll figure it out.) sudo apt install ocrmypdf tesseract-ocr ocrmypdf --output-type pdf input.pdf ocr.pdf pdftotext ocr.pdf - When my train neighbor started talking to me (asking personal questions but was self-aware, rambling but was partly interesting), I asked if he was an extrovert. He said “No”. People who talk a lot can still be introverts if they’re: socially competent (like me at work) in “performance mode” (like me when I’m on stage) are high energy and engaged by topics (maybe him - or me when, like now, when I just HAVE to tell the flight attendant Ollama + Gemma 4 + Pi answering a psychology question is a delight!) ambiverts (maybe him) not self-aware and are mistaken (maybe him) ffmpeg can embed subtitles. ffmpeg -i video.webm -i subtitles.srt -map 0:v -map 0:a? -map 1:0 -c:v copy -c:a copy -c:s srt -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" -disposition:s:0 default output.mkv adds subtitles.srt to video.webm and creates output.mkv with embedded subtitles. Note: On VLC, MKV works better than WEBM if you want to embed subtitles. On the browser, you need to use the <video> tag with a <track> tag to display subtitles. ffmpeg can burn subtitles. ffmpeg -i video.webm -vf "subtitles=subtitles.srt" -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a copy output.webm re-encodes the video with subtitles added to the video. ffmpeg can offset subtitles. For example: ffmpeg -itsoffset 10 -i input.srt -c copy output.srt creates output.srt with subtitles starting 10 seconds later than input.srt. When I hear my father’s tales from his childhood, I’m struck by how much India moved forward in half a century on child mortality, consumerism, and communication (mobiles). Also surprising are what feels the same: legal system, travel (trains made it easy), food (tasted better, then), entertainment (theatres made it easy), gardening, education (scholarships made international study more accessible than I thought), I asked ChatGPT how I adapt my message based on the audience. It discovered that I tailor messages to the audience’s (A) Objectives (B) Examples (C) Expertise - e.g. tell vs ask (D) Risk appetite. But what’s distinctive is that I often surrender, i.e. I don’t defend my view, but drop it and run with their framing. “People with taste are picky. The only way to make money is by satisfying those who can’t discern quality.” Adrian Hanft. I’ve been telling people that taste is our differentiator against AI. And yes, it’s a fickle differentiator. I mean, how do you build a taste that thousands or millions will adopt? Or… is taste marketed more often than organically adopted, in which case, persuasiveness matters more than taste? But either way, unless most people disagree with you, you’re building conformity, not taste. On a flight, I tried ollama launch pi --model gemma4:e4b-it-qat. It’s a reasonably sensible model. Power consumption is high, though. I was at about 8 watts with ~7 hours of battery life. While running, power spiked to ~50W (1.5h) and settled down to ~12W (4h) when idle. The llama-server process consumes some CPU/GPU even when idle, but I couldn’t get it back to the ~8W even after ollama stop. (It eventually did return to 8W after an hour. Not sure why.) When I tried again on 21 Aug, it went up from 8W (8h life) to 28W (3h life) and back to 8W, so looks like when idle, it doesn’t consume power. I look forward to using local LLMs more! Pain is good. Struggle is good. Stretch is good. Not new. But worth reminding, worth seeking. T3 Code is a coding agent orchestrator. It lets you “remote control” multiple coding agent sessions across systems. The ecosystem of tools around coding agents is growing. Observability, e.g. AgentsView, is one such area.

What to do less because of AI

Some ideas on what we can do less, thanks to AI. Why? Because less is more and we keep getting advice on what to do more of, not what to do less of. Skip meetings you don’t speak in. Agents can summarize the transcript. Stop taking notes. Agents can summarize a recording. Stop reading group chats. Agents can summarize WhatsApp groups, Hacker News, Twitter, and more. Stop translations. Agents translate on the fly. For you, and your audience. Stop weekly status reports. Agents can tell you (and your manager and team) the status. Stop building dashboards. Agents tell you “what’s wrong” or “what’s next” directly. Stop building software at first. Tell the agent to do the work. Let it write software if needed. Save it if you use it often. Stop writing requirements. Agents can prototype. Test if that’s what you need, first. Stop teaching coding. Agents can code. Teach people to use agents. Also - a few things that were true pre-AI: ...

Local agents are good but slow

Last year, I shared how local LLMs are expensive. There are only 3 reasons to use them over an inference API: You have no choice, e.g. Government, pharma, finance, or other sensitive data. You have free GPUs, e.g. your laptop, local data center with sunk cost, free cloud credits, etc. This doesn’t scale. You want to learn. This year, I finally started using them for a combination of #1 (on flights) and #2 (my 8 GB NVIDIA RTX 2000). ...

What can AI not do

Over the last few weeks, I asked 166 people: What’s something you did not ask AI last week, because it can’t do it? There were 4 groups of responses. 37% said “Reliability”. AI tries but fails often enough. Like: Verify & return exact source of information. Generate accurate images. Completing PDF accessibility reliably according to the WCAG 2.2 standard. Converting 2D interior design to 3D view as vision models are not good keeping things as per scale. Create a user manual based on my codebase. I have asked this before and it has failed. 27% spoke about “Reach”. AI can’t access tools, data, or do something. ...

Ask AI Anything Email

I ran, an experiment in Straive. I asked my colleagues to mail me any questions or tasks that they had. I’d use my agents + my knowledge as context and reply based on that. A few interesting things came out of it. First: It often does a better job than me - it has more patience and speed. For example: One colleague sent a detailed pitch. My agent spotted a tiny arithmetic averaging error. Another asked if I knew an ontology SME. The agent found a perfect match in my contacts - someone I would not have thought of (and reached out to.) Another asked why a slide (screenshot) was empty. The agent searched Google Drive, found the slide, analyzed it, and replied: “It’s white-on-white text. But don’t bother. The slide two pages earlier is better for your meeting!” One colleague asked: “Instead of sending this to your email id, why can’t we ask this directly into Claude or so?” It replied: ...

Things I Learned - 09 Aug 2026

This week, I learned: Kamakoti: “Entry (to the course) is relatively easy but the exit is extremely hard”. Generalizing, quality is determined by the exit criteria; loosening entry criteria is just openness / diversity. The Hindu “Once I have a persistent system that I pay to keep thinking, learning, and acting 24/7, I think that will decisively look like AGI.” - Dan Shipper AI has expert-level capabilities in many (increasing) tasks #ForNow. If your edge is OUTSIDE of those, use AI for other tasks you couldn’t do before, insourcing or expanding horizontally. But your edge may be short-term - so move upstream / specialize. Your competitors’ edge may be short-term, too - so plan to attack. Analyzing Anthropic Economic Survey, it looks like people in rich countries are asking Claude for advice (explain this spreadsheet) while poor countries are asking Claude for output (build this website) #ForNow. Maybe because rich users already have tools / people that create output for them? Humans can’t define all laws of language but LLMs have learnt them anyway. What if there are laws of nature that humans can’t understand but AI can? Actually, this is already true of black-box models (loan approvals, weather forecasts, …) where benefit/control > understanding. But as data & compute scales, this might “solve” entire fields like psychology, economics, etc. Noah Smith In each area, there might be a limit to how much intelligence is possible/useful. For example, we’re pretty good at recognizing food and emotions - there’s not much benefit / possibility of more intelligence. But we can copy and share this intelligence - and that might help more than we think. Noah Smith The ChatGPT Dropbox plugin can read Markdown files if you specify the path, but can only read PDF, Word, PPTX, Excel, etc. when searching. It cannot update files on Dropbox, but can add and delete. #ForNow Given how long agents run without mistakes, verification is increasingly “drift correction”. You can’t spot it easily. Learn writing specs that EXPOSE drift. Build and test against “oracles” (verification systems). Reduce cost of error. Permissions, in the context of multiple agents, is complex. If agent A can read my email but wants to consult agent B, can B see the email? We’d need to make permissions pretty specific, like: principal: “anand” agent: “agent-17” purpose: “insurance-coverage-check” allowed_data: [“email:read”, “dropbox/notes:read”] allowed_effects: [“email:send”] audience: [“anand”] expires_at: “…” delegation_depth: 1 After struggling to understand where to apply loop engineering, here’s my guess. If you have a metric (or something really well defined) that you want to optimize, and a single agent iteration isn’t enough, loops are a way to get there. Kaggle competitions, benchmark optimizations, etc. are examples. This means that any complex system that you can benchmark (or at least where you can robustly compare results) is loop engineerable. (This means that the ability to benchmark, and using agents to benchmark, will become a key ability.) Ontologies, state machines, etc. can be used to create verifiable systems, e.g. nodes become states, relations are valid operations. That’s great for building verifiable systems (leading to things like LEAN). Of course, a key skill will be knowing what to put into the state, what relations to allow/disallow, what reflects reality well, how it might evolve (e.g. temporal graphs), how that might change in the future, etc. Having said that, this is just creating a neural network of sorts - so according to the bitter lesson, we should just toss data at an agent and have it build a graph (or not) as required. BTW, I shared this with a bunch of speakers at Data Hack Summit who were speaking about knowledge graphs. There was silence for a while. Then, gently, they all agreed. Some people blab. Interrupting with a question is a good diversion mechanism. Some blab even after that. Exiting politely is both wise and surprisingly un-rude. To control your mental state, breathe slowly. 5–6 times/min for five minutes (that’s longer than I thought was needed), exhaling slower than you inhale. PubMed Once a ChatGPT conversation uses a developer plugin, #ForNow it refuses to use other plugins. So, if you need to use a GMail plugin AND a plugin you built yourself, you’d need to use the GMail plugin first, get stuff into the chat, then switch over to yours. I suspect conversations with developer plugins might not be accessible when using other plugins, too - but that’s untested. There’s a jagged edge of AI adoption as well, not just AI capability. Several organizations limit users to weaker agents #ForNow (e.g. only Microsoft Copilot or Gemini). Many have never seen the power of Codex or Claude Code on their systems. It’s hard to convince them that AI can do much more than they think. There’s a “data engineering” industry incentivized by structuring data. This is partly enabled by poor enterprise agent adoption #ForNow (e.g. Microsoft Copilot). The sequence works like this: “AI does not solve something with the data it’s given. Let’s structure the data. It solves it. Therefore, we need to structure data - all data.” The alternative which I believe is: agents will structure it themselves. I noticed that when you submit a prompt on ChatGPT, it changes the URL to https://chatgpt.com/c/WEB:... and once it starts processing it on the server, changes it to https://chatgpt.com/c/... giving it the actual conversation. So, if you see a WEB: in the URL #ForNow, make sure you copy the prompt before reloading the page - because it hasn’t been saved or sent to the server. I assumed inflammation was mostly a bio/chemical process. Looks like neural signals are involved, too, and electrical simulation can control inflammation. This leads us to a new territory: bio-electrical medicine. The Anthropic Economic Index indicates that, on average, if you prompt Claude like an 8th grader, it responds for a 9th grader. Does that mean (a) that more sophisticated prompts get a better response, and (b) if you repeatedly meta-prompt, you increase the sophistication by about a year each iteration, and hence can get very smart prompts by just getting out of the way and with little hope of understanding the question? This might actually make sense if AI will action the result without you needing to understand. The geometric mean is always less than or equal to the arithmetic mean. This is why a “smooth” 8% return is worth much more than a “wild” 8% return. @lumenxbt Quantum cryptography can give us unclonable encryption, i.e. if someone copies a message midway (or you publish it), you can’t independently decrypt both. We knew how to do this in 2020. Now, ChatGPT helped “indistinguishable security”. Between 2 messages, people can’t figure out (e.g. from the length, or other attributes) which message is which. Gemini Agents can record network requests into a HAR file and reverse-engineer an API for many websites. More efficient than browser control. dax The Anthropic Economic Index dataset is on Hugging Face - released quarterly #ForNow. The longitudinal analysis is likely to be interesting. BusinessCaseBench solved over 238 business cases with AI agents and they’re doing well and improving #ForNow. Not surprising. Frontier AI performance across the business disciplines OpenAI Presence shows a pathway for deploying agents. Deploy for a specific job, with only required access to knowledge and systems, company defined policies for approval, agent periodically reviews logs & escalations and proposes updates for testing and approval. A lot of work people are doing on ChatGPT is OUTSIDE their area of work. “… a substantial part of work-related ChatGPT use is from users expanding their role.” OpenAI

MCP vs Shell

I’m a fan of the Code Mode approach - i.e. letting agents run code rather than narrow functions. Many people agree: CircleCI, Perplexity, etc. In fact, mcp2cli gives MCPs a CLI interface. I feel the main reason is UNIX composability. I can run CLI commands in a loop, pipe them, etc. I tested it out on ChatGPT. ChatGPT has an @Gmail Plugin. I build a Local MCP Server that exposes my CLIs, including gws (Google Workspace CLI). I gave it 3 tasks in a single prompt: ...

Things I Learned - 02 Aug 2026

This week, I learned: I continue to be amazed at how efficient video codecs are compared with animated image formats. When compressing 38 PNGs, the final WEBM was smaller than many of the individual PNGs! 2343k: magick -delay 50 -loop 0 file-*.png file.gif 398k: magick -delay 50 -loop 0 file-*.png file.avif (slow) 284k: magick -delay 50 -loop 0 file-*.png file.webp 82k: ffmpeg -framerate 2 -i file-%03d.png -c:v libvpx-vp9 -pix_fmt yuva420p file.webm Please use AI by Shawn Smucker is the best guide I’ve read about where NOT to use AI. I need to be more mindful of this. gpt-transcribe is released at 0.45 cents / minute or 27c / hour. Gemini 3.6 Flash costs about the same ~27c. Gemini 3 Flash costs ~15c and that’s what I use today. Gemini 3.5 Flash Lite costs ~6c / hour but it follows my instructions very poorly. To benchmark this, I just re-run my transcribe_calls.py script on a recent conversation (that I remember well) with a different model to see if it’s clearly better or worse. No fancy benchmarking. Creating / maintaining formal benchmarks isn’t always worth it. ruff 0.16 is out and has a 350+ new default rules. I mean, who would check that functools.cache on instance methods has a memory leak? But its output is so agent-friendly that agents would just fix these on the fly anyway, so it does make sense. It’s another step towards code-writing becoming less accessible to humans. npm install --no-package-lock installs packages ignoring and without creating / updating package-lock.json. Useful for dev environments. Astral has published prebuilt GPU wheels for Flash Attention, vLLM, PyCUDA, and many others. One characteristic of good benchmarks is that they are easy to verify. I see a lot of comparisons of Fable vs Opus by having them generate 3D worlds (e.g. threejs, Blender, melt) - something that’s not trivial for agents, but evaluatable at a glance. Maybe it makes sense to open source the intermediate steps in ALL knowledge work, to make AI as good at it as with code? Arvind Narayanan Open-source software and culture is a historical accident. We take it for granted that not only are the outputs of software engineers’ creative work available publicly, but so are all of the intermediate steps (specifications, plans, mockups), tacit knowledge (StackOverflow, documentation culture), detailed process traces (issues, pull requests, bug fixes, code reviews), collaboration records (version control, project boards), and more broadly a culture of learning in public. This level of explicit description would be completely alien in most professions. ...

Agent Experience is the new User Experience

Agents are increasingly the consumers of things that used to be made for humans: Docs are increasingly for agents to read. E.g. llms.txt Code is increasingly for agents to edit. E.g. AGENTS.md Tests are increasingly for agents to satisfy. E.g. SWE-bench, GitHub repository Software is increasingly for agents to operate. E.g. --json, --schema, --dry-run, CLI-Anything, AXI Websites are increasingly for agents to invoke. E.g. WebMCP Capabilities are increasingly for agents to discover. E.g. MCP tools, MCP Registry Procedures are increasingly for agents to follow. E.g. SKILL.md, Agent Skills Products are increasingly for agents to choose. E.g. Universal Commerce Protocol Money is increasingly for agents to spend. E.g. Agent Payments Protocol Identity is increasingly for agents to prove. E.g. Visa Trusted Agent Protocol Agents are increasingly for agents to delegate to. E.g. A2A Agent Cards and Tasks Humans are increasingly for agents to escalate to. E.g. MCP Elicitation Agent Experience or AX is the new UX. ...

Case Study

Create a training pack to help analysts (business analysts, data scientists, strategy consultants, forward deployed engineers, etc.) improve their investigative judgment. Success for the analyst is not recovering the hidden truth you designed. It is making the best evidence-based judgment available from the materials. Design and score for that. First, formulate the underlying dynamics - the hidden mechanisms, reasons, processes - e.g. - why the processes are not/poorly/wrongly documented - why the data is stored, structured, and labelled the way it is - why it has the quality issues that it does - what are the underlying unstated organizational dynamics, etc. Discovering some or all of these would be key to the analyst's success in the exercise. Don't state these dynamics directly anywhere the analyst can see. But they may be partly mentioned, disputed, denied, euphemised, or misunderstood by people who each see only a part of it. That is how it works in real-life. For each dynamic, plan two or more independent channels through which an analyst can detect it (a data pattern, a silence in a thread, a timeline that doesn't line up, a form field abandoned mid-year), and at least one innocent explanation that fits any single channel on its own. Also plant anomalies that mean nothing - in real-life, not everything is a clue, and we want to train for the intuition to tell the difference. Create an instructor-only `case.yaml` that includes all of this as the primary context. Include entities, systems, timeline, people, the process (how was it designed, documented, believed to run, actually runs), the dynamics and where and how each dynamic plays a role. Record every anomaly in the pack in case.yaml, marked as: designed and critical / ambient noise / benign quirk / accidental defect. Fix the accidental defects. Generate every artifact below from `case.yaml` to avoid ACCIDENTAL contradictions. Create realistic documents and datasets that an analyst will likely get when investigating a process like below. This includes: - Documents explaining the process. Reflect real-life, where some processes are undocumented, poorly documented, or wrongly documented. - Datasets. - Both structured (spreadsheets, SQL dumps, geospatial, proprietary formats, ...) and unstructured (text, images, documents with a mix, audio, video, ...). - This may include large transactional/reference data as well as smaller datasets, across a variety of realistic formats. - Think about how organizations realistically store data. There are underlying historical and organizational reasons for why their data evolved the way it did. In real-life, datasets have varying quality, based on the process of collecting and processing them. Datasets are often sourced from multiple systems and processes. The nature of gaps / errors / other quality attributes typically reflect the underlying sources. - Use a format only if this organization would likely produce it and it serves an exercise - not just for variety. - For large transactional data, Use a fake data generator skill when available. Write seeded generator scripts rather than static files. - Supporting material. This may include emails, chat logs, meeting transcripts, system logs, people profiles, etc. that are usually passed to an analyst for context. In real-life, these supporting materials are windows into and reflections of organizational structure, politics, constraints, etc. How it is said, and what is unsaid, is often more important than what is said. - People the analyst can question. Add the profiles to `data/`. Include instructor-only notes explaining what each person knows, believes, is wrong about, and would rather not say. Enough for an instructor (or AI agent) to role-play them and answer questions like them. Deciding whom to ask, and what, is a critical skill. That's how analysts go beyond incomplete / incorrect briefs. The same pack can be used for multiple exercises. Include exercises, each containing: - Objective - a page explaining their task. Realistically, these may be loosely, incompletely, or wrongly defined, or unsolvable without additional data or context, etc. This, too, needs to reflect real-life based on a hidden dynamic. Where the brief is wrongly framed or underdetermined, analysts should reframe it, say what's missing, ask for it, and act safely under uncertainty. If they do that, that's a success, not failure. Don't make something wrong in every objective. Deciding whether to dig is part of the training. Mention who the objective is for, how long it should take, which tools (e.g. AI agents) are allowed, and what output to submit. Require an evidence table - claim | source | confidence - and the hypotheses they rejected, with why. Without this, we can't differentiate between judgment and lucky guesses. Some exercises can be small: one artifact, ten minutes, "does anything here smell wrong?" - including some where the answer is no. Intuition comes from many quick exercises with fast feedback, not just from one long case. - Rubric - not shared with the analyst, but explaining to the instructor: - What the analyst needs to discover in order to succeed in the exercise - mentioning the relevant dynamic. - How to evaluate the analyst's work. Share this as a prompt that can be shared with an expert or an AI agent. The prompt will be shared along with the same inputs passed to the analyst (documents, datasets, supporting material, this exercise's objective) as well as the dynamics. The prompt should clearly explain the steps to evaluate the analyst's work and the scoring rubric along with evaluation criteria and clear definitions of what constitutes a good/bad response, with an emphasis on the hidden dynamics that the analyst needs to discover. Because the evaluator is handed the dynamics, say explicitly: score the evidence and reasoning first, THEN the conclusion. A well-supported alternative conclusion can score as high as the intended one. But the intended conclusion asserted without evidence should not score high. You can use the tone, omissions, timing, and other "non-verbal" aspects of the response as a signal, but treat that as hypotheses needing proof. - Write behavioural anchors for each score level. - Then write test submissions for this exercise, as an analyst would write them - not as someone who knows the answer. For example, if a "good" submission clearly states the dynamic, that's unrealistic. Recommended submissions: 1. Strong: real evidence, traced to files, calibrated, some things still open. 2. Polished but shallow: confident, well written, restates the brief, no evidence. 3. Right conclusion without evidence - a lucky guess. 4. A different conclusion that the evidence actually supports. 5. Says the evidence is insufficient, and asks for the right things. 6. Treats a decoy as a finding. Target what this rubric is most likely to get wrong. - For each submission, write what the evaluator should return: its expected rank against the others (a band for each dimension, not an exact score), and the specific text in the submission it must cite for that score. We'll test the evaluator based on whether it gets the right rank using the cited reasons. Exact numbers vary between evaluators and are not a fair check. Generate this pack as a set of files with this structure: - `README.md` - for the instructor, containing a full overview of the case, including the underlying dynamics, explanation of the data. An instructor reading this for the first time would understand everything they need to know about running this training exercise. Layer this. Begin with an overview, an explanation of the dynamics, a walkthrough of the data, a list of exercises and what they uncover and how to evaluate them. Then go into the details of how each dataset was generated and what dynamics it reflects. - `case.yaml` - instructor-only source of truth. Everything else is generated from it. - `data/` - for the analyst, containing all documents and datasets to be shared with the analyst. Nothing here (including metadata, hidden sheets, comments, ...) should reveal the dynamics DIRECTLY - `src/` - generator scripts and seeds, so the pack can be rebuilt and re-seeded for the next cohort. Not all `data/` needs to be generatable - some of them can be hand-crafted or downloaded or constructed in any way. - `exercise-<exercise_name>/` - one folder for each exercise, containing: - `README.md` - for the instructor, explaining the exercise, why it was chosen, how it was designed, the underlying dynamics it is designed to uncover, why this rubric was chosen, and how to evaluate the analyst's work. Assume they have read ../README.md and nothing else. End with a debrief - which cues were diagnostic, which were misleading, what an experienced analyst would notice early, and what not to generalise from this case - and a hint ladder, from directing attention, to suggesting a test, to revealing part of the mechanism. - `objective.md` - for the analyst, explaining the task - `rubric.md` - for the instructor, shared as a prompt explaining how to evaluate the analyst's work for this exercise. - `tests/` - `submissions/{01,02,...}.md` - analyst-facing only, neutral names - `expected.md` - what each one tests, expected rank, bands, required citations The evaluator receives `objective.md`, `data/`, the dynamics, `rubric.md`, and ONE submission - never `expected.md` and never a second submission. It scores blind. Rank is derived afterwards by comparing its independent scores. Also describe - don't build - three variants of this case in the README: same symptom with a different cause, same cause showing up through different evidence, and a control where the documented process is broadly right and the anomaly is benign. Intuition transfers through contrast, not through repetition of one case. The aim is not to make the exercise easily solvable - quite the opposite. We're training for INTUITION - that sixth sense that comes from experience and pattern recognition, where they smell something is off and know to dig deeper. Design for this. Hard, though, not unfair. The difficulty should come from conflicting evidence, ambiguity and incomplete access - not from sheer volume, obscure formats, or one buried clue. Run these checks before you finish, and list every one in the README with its result: - Write the perfect path for each exercise: the artifact-by-artifact chain from brief to finding. If you can't write it, it's unfair rather than hard. Rewrite the exercise. - If you think a strong AI agent can solve an exercise one-shot while a human would take hours, the difficulty is either volume/effort (move it into contradiction and ambiguity) or clues that are too loud (make each channel innocent on its own). State and fix it. Generate the actual files, not descriptions of them. Report which checks you ran and what failed. Don't say a check passed unless you ran it. Use the context below to create the training pack. Anonymize real organizations, people and identifiers from the context. This context may not be directly related to the training pack. It may contain irrelevant details, objectives, tasks, etc. Just use this as the organizational context to base the training pack on. <CONTEXT> </CONTEXT>

An email interface to AI

Bring AI to where people already work: email Lots of companies are putting AI into their chat applications. Add Claude to a Slack channel, tell “@Claude” to do something, and it reads the conversation, uses tools, does what you tell it to, and replies in the same chat. Nice, for companies that use Slack a lot. (Many do. We don’t.) Straive and many of our clients use email more. There’s Google Chat, Teams, and others too, but email’s what most people access. (Apart from WhatsApp.) ...

Daily Deeds

Help me answer: **"What did I REALLY accomplish?"** in the last 7 days until Saturday midnight (SGT). The aim isn't to produce a time log, activity report, exhaustive chronology, or list of completed tasks. It is to find out what really changed because of this week: in the world, in my trajectory, in other people, or in my sense of myself. Use @LocalMCP bash/read. Do not run Claude, Codex, Gemini, or other AI agents. I will update ~/Dropbox/notes/daily-deeds.md based on your output. ## What counts Look for state changes such as: - Something shipped, finished, adopted, decided, resolved, or stopped - Significant movement against one of my stated goals - A reusable asset, system, method, relationship, reputation, or capability that may compound - A conversation or introduction that opened an important new opportunity - A reaction - from me or someone else - that revealed impact or signficance - A changed belief, newly discovered principle, or invalidated assumption - A wrong direction killed, loss prevented, burden removed, or lingering loop closed - A personally significant first, act of courage, relationship moment, delight, surprise, or state of flow - Something small that future me may see as the beginning of something large Do not rank by time spent, apparent effort, number of meetings, seniority of people involved, prestige, or monetary value alone. One emotionally specific sentence in `daily-deeds.md` may matter more than twenty transcripts. Treat exact quotes, `:star:`, "wow," firsts, unusual behaviour, repeated later references, spontaneous delight, embarrassment, courage, and flow as strong (but not conclusive) personal importance signals. Do not invent undocumented events. Instead, generate specific memory prompts that may help me recall them. ## Sources and search procedure Search efficiently in two passes. ### Pass 1: Discover candidates Start with: - `~/Dropbox/notes/daily-deeds.md` - see what I record/skip/miss and how I write. - The current goals and status in `~/Dropbox/notes/goals-bucket-list.md` and `~/Dropbox/notes/@todo.md` and `~/code/blog/pages/skills/anand-objectives/SKILL.md` - Transcript filenames within the date window under `~/Dropbox/notes/transcripts/` - Emails via `gws` - both work ([email protected]) and personal ([email protected]) - WhatsApp messages via `~/Documents/data/whatsapp` - Dated completed and open entries in `~/Dropbox/notes/@todo.md` - Overlapping `~/Dropbox/notes/about/week-*.md` files, using them as leads rather than trusting their ranking - `~/code/talks/README.md` - `~/code/datastories/config.json` - `~/code/til/README.md` - `~/code/blog/description.md` - `~/code/README.md` - `~/code/llmdemos/config.json` Check file shapes and indexes before opening large files. Locate candidate files first, then read only relevant passages. Use calendar, email, chat, WhatsApp, browsing history, and repository history only through targeted date/name/topic searches to verify candidates or detect state changes. Do not dump or broadly scan archives. Browsing time and meeting duration are not accomplishments. Create a private raw list of roughly 20-40 possibilities before ranking. ### Pass 2: Verify and rank For the strongest possibilities, find direct `path:line` evidence where available. Judge each candidate separately on: - **State change:** What is now different? - **Goal movement:** Did it significantly advance an explicit or durable objective? - **Leverage:** Can it compound through an asset, person, system, method, or reputation? - **External evidence:** Did anyone adopt, approve, respond, quote, pay, publish, merge, invite, or change behaviour? - **Personal importance:** Are there signs that I may remember or value it unusually strongly? - **Durability:** Is it likely to matter three months from now? - **Counterfactual:** Would omitting change the week's story? Keep importance and evidence confidence separate. Small personal moments may be very important but low-confidence. Detailed meeting notes may be high-confidence but less important. There'll be plenty of work-related content. Balance by probing deeper for personal life signals (family, relationships, health, body, play, service, art, courage, joy, and unusual experiences). Include meaningful failures and closures - don't make the week look artificially successful. ## Output Keep the entire response reviewable in about two minutes. # What I may have REALLY accomplished ## Best current answer Write three concise bullets representing your best current interpretation of the week. Phrase them as changes, not activities. Prefer constructions such as: - "I proved that..." - "I moved ... from ... to ..." - "I created ... that can now..." - "I opened..." - "I stopped..." - "I discovered..." - "I experienced..." Do not simply say "I attended," "I worked on," "I discussed," or "I spent time." ## Candidate slate List up to 10 candidates, most significant first. For each: **1. Short candidate title** - Category: Outcome / Goal / Leverage / Seed / Learning / Closure / Moment - **What changed:** One sentence. - **Why it might matter:** One sentence explaining the possible long-term, goal, leverage, or personal significance. - **Evidence:** Concise `path:line` references. - **Your guess:** Importance: High / Medium / Wildcard. Evidence confidence: High / Medium / Low. Use **Wildcard** for something that might be deeply significant but whose importance cannot be inferred reliably. Do not fill all slots merely because they are available. ## What the record may have missed Ask at most three highly specific memory questions derived from the week's actual events. Good questions resemble: - "After the [specific event], was there one audience remark or private conversation you kept replaying?" - "During the trip to [place], did anything off-stage matter more than the scheduled event?" - "You had [specific demanding sequence]. Was there a moment of fear, courage, delight, embarrassment, connection, or flow that the records would not show?" Include: 1. One event-specific backstage or reaction prompt 2. One personal, relationship, body, play, or joy prompt 3. One quiet decision, failure, refusal, closure, or changed-belief prompt Do not ask generic questions such as "Anything else important?" ## Goal movement Mention only explicit goals that appear to have moved. Distinguish: - **Outcome movement:** the goal itself advanced - **Leading evidence:** behaviour or capability improved, but the goal did not necessarily advance - **No reliable evidence** Do not turn routine habit compliance into a headline unless something changed. ## Suggested `daily-deeds.md` additions Provide copy-ready lines for items that are important and absent or weakly recorded. Use this structure: `- Day YYYY-MM-DD. [What changed]. [Exact reaction, why it mattered, or what it may enable].` Preserve memorable exact words. ## Likely motion, not accomplishment Optionally list at most two items that consumed visible activity but did not appear to change anything important. Explain briefly why you excluded them. End with: `Reply with Keep: ... / Drop: ... / Missing: ... and I will turn this into the final weekly answer.`

Things I Learned - 26 Jul 2026

This week, I learned: Thinking traces vanished in ChatGPT Work (or did they never exist) and seem to be vanishing in Claude. Not sure if it’s because Chinese models are using the thinking traces as signals. ChatGPT Skills is available in the Plus plan. This was available to Enterprise and Edu, but since I saw this on ChatGPT just today, I guess it’s a recent feature. Peter Gostev compares Opus 5, Fable 5, Kimi K3, GPT 5.6 Sol, GLM 5.3, etc. on a variety of visual tasks in this video. The most intruiguing prompt I spotted was: “I would like you to research the most interesting, impressive dataset where I would learn something about the world and you can visualize in the most creative way, making it something completely unexpected. Then create the most elaborate version of it possible.” This apart, I got the general sense that Opus 5 is quite good at visualization and design, perhaps even better than Fable 5. After reflecting on Knowledge graph construction with Claude, I believe that knowledge graph construction is roughly: “Tag each document with people, place, org, event, etc.” - and it’s good enough for agents to use. Increasingly, the real question isn’t “What interesting things you doing with agents?” It is the followup? “What lets you do that (when I can’t)”? For example, Naveen asked me, “Can I set up your email reply agent?” I said, “No, you don’t have transcripts, blogs, notes, or exports like I do.” LinkedIn lets you save a profile as PDF. While it formats text reasonably well, it doesn’t preserve newlines in the “About” section - so what looks good on the browser looks terrible in the PDF. Such PDFs are sent to interviewers, making it a bit of a bad experience for the interviewee. (Of course, it could also be a signal to see how well interviewees pay attention to small details like LinkedIn PDF formatting.) The ability to measure an outcome is (and has always been) important. It lets you capture value (outcome pricing) when you control the outcome, or de-risk (insurance) when you don’t. But what might be new is that metrics are outdated at an increasingly faster pace - so (a) setting an expiry date and (b) knowing if it’s expired have become important. I wasn’t using AI to reply to emails because (a) it didn’t have enough context and (b) it didn’t write in my style. I spent a few months making sure I give them context and style guidance. Given the current intelligence of models and my email reply prompt, I’m now happy for AI to answer my emails. My learnings based on YC request for startups Fall 2026 - which probably means we’ll see many more startups in these spaces. Here are my takeaways: Self-Maintaining APIs: Nice idea. When a service changes an API, they share an agent/skill that can fix YOUR code to upgrade the API! AI-Native Compliance Infrastructure: So, compliance becomes cheaper => MORE and STRICTER regulation. Licensees become valuable (AI rollup). Private regulator feedback becomes valuable. Compliance companies will themselves get regulated (like auditors). Multiplayer AI: Claude Tag is a step in this direction. WhatsApp’s @Meta is too. I expect most chats will allow AI as participants. Most collaborative software, too - GitHub, JIRA, Figma, GMail, HubSpot, maybe even VS Code, Office/Notion, Chrome, Games, … A Cloud for Small Software: Systems of record are likely to be safe, but software AROUND it will explode into tiny tools. Access control, ratings, … is what’ll be important, not generation / managing them. Grok 4.5 took 14 iterations to write an essay about Cheese before Pangram declared it “Human”. Pangram is increasingly becoming the new Turing Test. Rahul Notes from a Claude Code interview with Simon Willison: Fewer examples. More examples don’t help Fable and Opus 4.8. “… removing examples was extremely helpful, because it was just more creative than the examples we gave it.” Fewer hard constraints like “fewer “do not do this” instructions, because that’s a very strong impulse for Claude, and especially if it conflicts with user instructions”. “Do X when …” or “Do X because …” is more helpful. Fewer tools. A few general-purpose tools work best. Fewer sandboxes. Auto-mode is safe enough. Sonnet judges every tool call with context, enabling dynamic permissions. Fewer software / integrations. Use Claude Code itself as the software / integration layer. Fewer components. Memory is just a Markdown file in the right folder. Fewer interventions. “… given a COMPLETE definition of a task… does Claude make the right decisions” Fewer decisions. Fewer reviews. Generation is cheap, so let people who need something get there immediately, as long as a good AI judges and its reversible. “We actually have a different system prompt per model now”. Claude Tag is next evolution of Claude Code: Multiple people interacting per channel, working with Claude on a task. (Claude tag contributes to 65% of our PRs) Apache Ossie is a YAML standard for dataset metadata. If adoption grows, it could be a useful machine and human readable way to document and describe datasets. Databricks, Snowflake, Qlik, are part of the group. If more join, this could become a useful standard. An interesting technique to build an efficient video understanding agent. Use AI to generate transcripts with timestamps. Have it identify key moments, e.g. where the presenter explicitly (“as you can see”) or implicitly (“these two cells”) flags something on screen. Extract up to ~50 of the most important frames. claude-video SKILL.md Cangjie Skill converts books, videos, etc. into AI skills, like Poor Charlie’s Almanack skills. However, since AI has already read most of these, the value of this (compared with “Apply principles from Poor Charlie’s Almanack”) is unclear. Alt+Shift+Right Arrow expands selection in VS Code, and Alt+Shift+Left Arrow shrinks selection. That’s useful in Markdown, HTML, etc. to select sections. Since Jun 2026, this also lets you select a specific Markdown table cell, row, or entire table. Also, since Jan 2026, double-clicking just inside quotes or brackets selects the entire contents inside. I analyzed the Claude Code session of a domain expert building an enterprise application without knowing how to code. Here’s what I learnt about expertise: An expert can instantly see errors / misses and their causes - amateurs can’t. An expert can point to specific nitty-gritty details - amateurs can’t. An expert knows what’s possible/easy and what’s not - amateurs don’t. An expert has strong opinions that’re often right - amateurs don’t. Claude gave me $100 credits until 19 Sep and Fable 5 will now consume those. My queries cost about $1, so I have ~100 queries to exhaust in ~60 days. About 1.5 Fable queries a day. That’s about what I normally ask Claude, so I think I should just stick to Fable 5 until my promotional credit expires - it’ll expire otherwise anyway. But using it with Claude Code is quite expensive ($7 is common.) I asked ChatGPT to analyze an MRI report and compared it with the doctor’s. Problem: they agreed on what problems most people in that age group face; they disagreed on things I have no way of validating! Maybe it’s best to use a doctor / radiologist to read the MRI, diagnose, and prescribe - but use AI to translate and cross-check (e.g. is this a typical age-related problem, is this the standard treatment, etc.) Both ChatGPT and Claude subscriptions offer an OAuth based coding agent API access - Codex SDK and Claude Agent SDK - which is how coding agents like Pi, OpenCode, etc. are able to authenticate and use the subscription. This means that anyone can build their own harness using existing subscriptions. ChatGPT A useful way to improve your SKILL.md files from others’ skills or prompts is: “What cool prompting / SKILL.md techniques does this have?” “Based on my usage patterns and objectives, which of these have the highest impact (provides highest uplift to my chats) x frequency (relevance)?” “Review all my skills. See what applies where. Filter what has HIGH impact. Draft the full diffs for the relevant skill files.” GPT 5.6 Sol attempted the Cycle Double Cover Conjecture. An interesting learning from the prompt is how they listed tempting outputs that APPEAR to satisfy this request, but would not actually, and told it to avoid them: “Use adversarial agents throughout: every candidate proof must be checked for exact-two multiplicity, repeated-edge closed trails masquerading as cycles, …”

No Juniors, No Experts

Read out by Anand, who is not an AI. See Beating Pangram and AI detectors. These days, AI is reducing the number of entry-level jobs that we have. The trouble is, these are the jobs that are actually training tomorrow’s architects. How do we solve this? This is not a new problem. Zoho’s Sridhar Vembu posted something that’s been bugging me. He said, AI makes senior architects more productive and reduces the need for junior engineers. Then he says, if nobody starts junior, how can anyone become an architect? The data supports his concern. Stanford found that since late 2022, the employment for 22-25 year olds in jobs where AI is strong, like software, fell by as much as 16% compared with older workers who were doing the same jobs. Matt Beane at UCSB also saw this happening in robotic surgery. A phenomenon that happened even before AI came into the picture, because robotic consoles would allow surgeons to do what the residents used to do, and therefore, surgeons stopped bothering to train the residents. ...

Things I Learned - 19 Jul 2026

This week, I learned: Writing is slightly, but only slightly, better than typing (for adult learning.) One factor is that typing is faster, so many people take notes verbatim, summarizing and thinking less. ChatGPT + Claude Graphology for personality is pseudoscience. ChatGPT + Claude When I decide to spend time, or someone says “Let’s do X”, it’s worth checking: is this something AI can easily try, and is it clear to verify? If so, reinforcement learning loops could make AI good at it, making it a depreciating asset. Studying how to live in an AI world is exhausting. (Not as bad as my MBA days, but not as easy as my data scientist days, either.) It requires me to make a larger mental shift, i.e. change my perspective, than I have since 2000, and that feels like work. Both nl FILE and cat -n FILE add line numbers to files, but nl skips blank lines by default, cat doesn’t. After using rtk for 2 months, I’m slightly downgrading it. It saves tokens but agents mess up shell commands when using it. It’s still probably a net saving, so I’ve changed my AGENTS.md from “Always prefix with rtk” to “Prefix supported, high-output commands with rtk… skip for bash builtins, pipes, loops, etc.” I find 🔴🟡🟢 convenient status indicators in my notes. Similar ones are: 🟥🟨🟩, ❤️💛💚, 📕📙📗. I’m not fully convinced by: 😄😐😞, █ ▒ ░, ↑ → ↓, ▁▂▃▄▅▆▇, ■ ⬔ □, ● ◐ ○, ⚫ ⚪ 🔘, 🌕 🌗 🌑, etc. though they might have their uses. Model updates means a SKILL.md and a plugin review / update, e.g. with GPT 5.6 Sol. So, like with any open source repo, use from people who update it regularly and benchmark it and version control it by model. I asked Gemini 3.5 Flash thinking: “Which of our employees have worked on Microsoft PowerApps? Search @Google Drive and @Gmail”. It found one employee and a referral in under a minute. I asked ChatGPT with GPT 5.6 Sol with gws access. It found 3 more, plus 5 possibilities, in 12 minutes. Truly a rottweiler. Parallel Search Turbo seems like a pretty good search API, especially for agents. Low price, high speed, and maybe good quality. #ForNow ChatGPT Group chats in ChatGPT will probably get deprecated #ForNow. What I learned from benchmarking my Ideation Protocol skill extensively: Once you know the rubric, models can easily create a good prompt to optimize for a known rubric #ForNow. So rubric design matters more. ⭐ Rubric design is really knowing what you want/need. To do this, iterating on output matters. Position bias is real #ForNow. Always check if an (P, Q) comparison matches a (Q, P) comparison. Models are still biased towards longer content, and potentially towards their own output #ForNow. How to optimize a prompt or skill: Research and figure out what you really want, first. Then, ask a smart model for a prompt that optimizes for it. Benchmark only if you’ll use it a lot - it’s still a lot of work, and meta-prompting does a good job #ForNow. gbrain skillopt might be premature optimization. You can use GPT 5.6 Sol in Claude Code #ForNow. (But what’s the point? Harnesses seem to be working better with their own models #ForNow.) Our clients keep saying “We need to build a data lake” or “We need an enterprise data strategy.” I keep telling them, “No, agents can do it for you.” What I missed is: technology is the smaller part of the problem. Finding who has what data, getting access to it, and sorting out permissions (“governance”) is the bigger part. Giving agents expert task-specific, testable procedures seems better than expert roles or mental models #ForNow. But benchmark in any case. ChatGPT Python 3.3 introduced str.casefold(). It performs more comprehensive Unicode caseless matching than lower(); 'Straẞe'.casefold() becomes 'strasse'. (🟢 Unicode case-folding is standardized.) contextlib.closing(x) calls x.close() when its context exits. (⚪) In a dataclass, use x: list = dataclasses.field(default_factory=list), not a mutable literal default. (⚪) I learnt these while reviewing Codex-generated Python—illustrating, rather than proving, that reviewing AI-generated code can teach and catch errors. (🟡 Review remains useful across tooling. Review 2029.) “Do not discriminate against intelligence—artificial or otherwise” is a rhetorical value judgment, not an empirical conclusion. (⚫ Rhetorical value judgment, not testable. Review now.) Here’s a nice idea from ChatGPT. “When itching to correct or clarify, FIRST restate their position to their satisfaction. ‘Did I get you right, fully?’” This emerged from the prompt suffix: Based on your research, and my past conversations, what are the top areas where and how (specifically) I can apply this principle on myself and others to maximize impact? Automated evals can catch stuff humans miss. And vice versa. And given how many evals we create, we need automated evals to be written in an easy-to-review way. Do Automated Evals Work? The BINEVAL paper reiterates that a bunch of Yes/No binary questions beats scales or ratings for many benchmarks. You know exactly how to grade and WHY you got a certain score. This is more reproducible and easier to learn from / act on. When asked “How long will this software take?” models typically provide estimates assuming human speed #ForNow. Maybe they haven’t been trained enough on agentic timelines. So, when my colleague got a 2-4 week estimate which he was able to solve in hours, it was a surprise. (But, of course, it’s best to verify before promising speed.) SKILL.md dramatically lowers the cost of learning a skill (since you don’t learn it - the agent does). That means that the value of creating skills is much higher - hundreds can use what you create (giving you recognition, if not money). I think I’ve underestimated the number of skills people will have available (I thought dozens - but it may be thousands #ForNow) and the number of skills people will create (I thought tens of thousands - but it may be millions #ForNow.) A Wikipedia (community curated, verified, high quality catalog) of skills might emerge #ForNow, if it hasn’t already. Tacit knowledge is often just un-measured knowledge. Once I put a sensor on the bellboy’s hands at The Curzon Court, AI can figure out how he opens the door with the key and why I can’t do the same. The subset of tacit knowledge that’s AI-resistant is where attempts are expensive (“How to negotiate a merger” rather than “How to open a door”) and feedback is slow/vague (“Does the client trust me” rather than “Did the door open”). The fact that Composio has ~20,000 tools is a market signal that connectors are commoditizing, and are a depreciating asset #ForNow. A weak model needs a forgiving harness - which ends up slowing down model learning. Stricter, accurate verification environments are better for fastest model learning. ChatGPT Work lets you run for longer, faster, install plugins and skills, host a website, etc #ForNow. It’s somewhere between Chat and Codex. It consumes Codex limits - something to watch for (since chat limits are quite generous). Codex temporarily removed the 5-hour usage limit. Tibo. So, since I have 3 banked rate-limit resets #ForNow, I can, in theory, use 4 full weeks of Codex usage at one go. Reality: I don’t have problems large enough for a SINGLE week’s consumption! From what I see of the State of AI Design and State of Prototyping, Figma is way ahead of competition #ForNow, e.g. Adobe, with Figma Make and Weave. I was also surprised how popular Cursor is (#2 behind Claude Code #ForNow). It’s also interesting that designers are coding directly #ForNow, using Figma just for edits / steering. But many research tools (note takers, survey analysis/research, etc.) will likely get eaten up by AI coding agents #ForNow, given how much designers are building their own tools.

Email Reply

Answer the most recent email matching above. Draft the reply that I (Anand) would actually send - based mostly on things I said, decided, or did recently, adapted to this audience and situation. (Not a generic polished email that just resembles my writing.) Guardrails: - Work independently. If a missing fact would significantly change the decision, commitment, or risk AND cannot be found from the sources: - Ask one clarifying question to the recipient or recommend a "DISCUSS LIVE". - Ask me when neither is appropriate and proceeding without the fact could cause material harm. - Draft only. NEVER send or modify email. - Use @LocalMCP, the web, and the coding environment directly. - For external recipients, don't disclose what's not approved for them. 0. **Read relevant skills**: On Local MCP, find, read, and apply the relevant skills for the task. `~/code/scripts/agents/*/SKILL.md` - coding + thinking skills `~/code/blog/pages/skills/*/SKILL.md` - thinking skills 1. **Fetch and understand**: Use `gws` on Local MCP. Find the thread by subject + sender, read all of it (format=full, decode base64url bodies). Determine: - Have I already replied? Has the request changed? Did someone else answer? Is a reply still useful? Default target: the first email's substance, replied to the latest message that still needs something from me. - Read attachments that affect the reply (pdf/pptx skills). Render slides and pages visually when reviewing a visual artifact; extracted text is not enough. Follow Google Drive links that hold the actual material. - Identify: the literal questions; what the sender actually needs (answer, decision, approval, review, introduction, reassurance, cover); the deadline; any implied commitment for me, my org, or others; the useful question they did not ask. - Reframe: if required and appropriate, use reframe-question/SKILL.md and answer their INTENDED question. Research the sender for better context if required. 2. Choose the response mode: Substantive reply / brief ack / decision / introduction or delegation / one clarifying question / discuss live / follow-up / no reply. An email draft is not automatically the right output. Proportional effort: a confirmation stays simple; advice ends in a small experiment or decision, not a catalogue; artifact reviews inspect the artifact and give concrete changes. For strategy or broad advice, mention the (ambitious) end-state and the practical next step that leads to it. Do not expose research just because you performed it. 3. Retrieve my position: Search in widening rings; stop when new sources no longer change the reply: 1. The steer. 2. The thread, attachments, links. 3. My recent sent mail: same person, same project, similar questions (also my best style anchor - imitate 3-5 replies of the same type). 4. For project/client work, use gws (Google Drive). Search filenames, then full text; maybe broaden thereafter. Prefer recent files (<90d). Read only most likely authoritative files. 5. `~/Dropbox/notes/questions-i-am-asked.md` (newest first) 6. `~/Dropbox/notes/transcripts/YYYY-MM-DD*.md` near the email date or with the sender 7. `~/code/blog/description.md`, `~/code/til/README.md`, `~/code/talks/README.md` (find the piece, then read it); `~/Dropbox/notes/about/{Sender}.md` if present 8. The web, only for current external facts (prices, models, dates, roles). When sources conflict, prefer the more authoritative and recent, direct, situation-specific one. Infer the underlying position; don't copy old wording mechanically. My emails and transcripts are evidence of my POSITION, not proof a FACT is true. Verify changing facts against primary sources online. ALWAYS read and follow the anand-writing-style, anand-objectives, verification-gate skills. Use blind-spot, expert-lens, evidence-provenance for strategy or reviews. 4. Draft: - "Hi {FirstName}" ... body ... "Regards" or "Thanks" + "Anand", whichever fits. - Minimize my commitments ("I can help review X", "happy to join one call"). Never invent commitments, owners, timelines, cc additions, links, or facts; if one seems useful, put it under Judgment calls, not in the draft. - Prefer the minimal experiment over the survey: one model, one workflow, one next step, plus "If that's not quite what you need, we can discuss alternatives." - In reviews, separate: confirmed facts / my recommendation / still to decide. - Write based on the recipients' current situation. What do they currently know, understand, and believe? The email should be clear from their perspective, without the benefit of the context I have. - Warmth and humor only where the existing relationship supports it. - Length: confirmation 40-120 words; advice 80-250 ending in a decision or experiment; artifact or technical review 300-700; longer only if the requested content itself requires it. - Plain ASCII. No em-dashes, emojis, corporate filler, inflated praise, or polished LLM-style conclusions. Tentative where evidence is tentative: "Maybe try X?" Say plainly what I don't know. 5. Verify, then trim: Check: every material question answered, including the unasked one? Facts and links verified at primary sources? Any invented commitment, owner, or certainty? Any unintended commitment, precedent, exclusion, ownership/staffing/budget/access expectation, or stakeholder consequence if this is acted on or forwarded? Contradicts anything I said recently? Leaks private context? Longer than I would write? Phrases I would not use? Compare against recent sent replies to the same person or topic. Then cut anything that does not change what the recipient understands or does next. Output: Recommendation: REPLY / REPLY BRIEFLY / DISCUSS LIVE / FOLLOW UP / NO REPLY Status: pending or already replied (with date if replied) Draft: <ready-to-paste body only> Why: up to 3 bullets on the decisive choices Process: bulleted reasoning steps including hypotheses considered, alternatives rejected, why searches widened or narrowed, branches followed or abandoned, why retrieval stopped. List meaningful sources and retrieval steps used (if any) in the step: `query, command, or action -> findings (citing exact file:line, message id, or URL)`. Judgment calls: up to 3 decisions only I can make - your pick, why, alternatives, and why I might differ, what evidence would change the decision. Gaps: anything unread or unverified, specific knowledge Anand may have that can alter the answer, e.g. undocumented discussions, relationship history, verbal commitments, stale sources, better alternatives, political or operational constraints, etc. 11 Aug 2026. Updated to cover clarifying questions and second-order effects: https://chatgpt.com/c/6a7b0370-7030-83ee-a3de-9a12cdad3c3f 23 Jul 2026. Updated based on Ask AI initiative feedback: https://chatgpt.com/c/6a61b1f7-9580-83e8-a4e1-7e88a16538e1 17 Jul 2026. Created. Sources: https://claude.ai/chat/86b76a7f-2b62-42e5-82c7-a2474c8dd23e https://chatgpt.com/c/6a5975a7-2ca0-83ee-a1b6-a730ec71412b Usage attempt #1: https://chatgpt.com/c/6a5986bf-13d0-83e8-b460-5ecb0360bb84

Things I Learned - 12 Jul 2026

This week, I learned: How to become an applied AI engineer is a concise, well-written, and suprisingly current summary of what AI engineering is. Xinjiang seems to be China’s Kashmir problem. Not quite, but similar. Analogies for how forward deployed engineers work: It is like a food truck that brings and serves home food while building a kitchen and restaurant around it. It is like setting up a field hospital: patients are treated from day one, while the equipment and procedures are built around the live work. Froghoppers excrete ~300x their weight daily. ChatGPT There’s a growing shift away from AI-written commit messages, e.g. Kenton Varda. I compared my human written commit messages vs AI-generated commit messages and the AI-generated ones are less helpful. Finally, GPT live gets an update and the new speaking model can delegate to GPT 5.5 when required. I tried it once today, to plan for a teacher workshop, and it was fairly good. It tends to begin with “Hmm” like it’s thinking, which feels comforting. Using a Unicode character like 🟢 is unusually low-risk across file systems today. It works well across OSs, mobile, ZIP, attachments, file share systems, etc. Some old apps might have trouble, but for storing and sharing, it’s fine. I’ve been using Unicode symbols like these a lot in my notes, and extending to file names feels like a natural next step. Though swimming gets the most Olympic medals (11%), for a country chasing its first medals, 78% of first-medal breakthroughs came from Athletics, Wrestling, Shooting, Boxing, Judo, Weightlifting, or Taekwondo (which are 44% of medals) - where single athletes can win without a support ecosystem. ChatGPT JMFL accidentally emailed several people a letter intended for their brokers. It roughly said: “Many of you are recording client calls. That’s a regulatory risk. If you keep doing this, we’ll hold your payments, even fire you.” Several Smart TVs have software that let your TVs act as proxies for data collection companies. Include Security MapDraw is a convenient tool to annotate maps (e.g. routes, boundaries, places) and share or download it. There seems to be no way to edit the “About” message on WhatsApp Web. Though the help suggests steps, and the “About” mood/status is visible, there’s no way to edit it. (Editing on the phone works.) Cloudflare optimised a reader component by sometimes letting the input buffer fill fully. This inadvertently introduced a hard to reproduce race bug because the producer would close the socket if the buffer was full. The producer bug was old (it didn’t check if a flush succeeded or not) but was never visible since the readers never let the buffer fill in the past. Cloudflare A neofirm is a start-from-scratch AI-native business, e.g. Crosby’s AI-first law firm. An AI rollup is where a company buys small traditional firms and AI-enables them - like General Catalyst proposed. AI SaaS is selling AI agents to services firms. Give people free platforms and collect their data. Learn the supply-demand network patterns, what pepole value, and add value-added services. Claude Code checks if you’re working behind a Chinese corporate domain - somewhat sneakily - by changing an apostrophe or slash in the date to visually similar Unicode. Claude Code Is Steganographically Marking Requests You can use the Kaggle CLI via Codex to solve Kaggle problems. (AutoKaggle automates it - but is 2 years old.) But, like GitHub bounty hunting bots, we will probably have a Kaggle bounty-hunting bot ecosystem - maybe already do. OpenSubtitles2024 and subscene are large pre-AI subtitle datasets with a 2024 cutoff. IndicDialogue is a 7.7K OpenSubtitles snapshot of Indic language SRTs. The OpenSubtitles API lets you search by IMDb/TMDb ID and is up-to-date. A soup spoon is better than a table spoon (for soup), though both carry about the same volume, because you can fit a soup spoon it fully into your mouth (a table spoon is too long) and this reduces spilling. Here’s a sign of accelerating AI progress. I used to critique outdated techniques by saying “This feels like a 20th century approach.” Then “This feels like a 2010s solution.” Recently, “This is SO 2025-ish.” Now, “That’s Q1 2026. It’s Q2.” The 7-day week emerged from the Hellenistic planetary week and the Jewish week (not astronomy based), which Rome adopted, then spread by several routes to India, China, and worldwide. Unlike the astronomical year and month, the week is just a convention. Egypt, China, and Athens grouped days in tens; Etruria and Rome used 8-day market cycles; West Africa used varied cycles; Java used five days; Mesoamerica used 13- and 20-day cycles. Gemini I met an ex-photographer and learned that photography is another profession where technology (mobile cameras) squeezed the middle. Generation (taking good pictures) became cheap. Value moved upstream (direction), downstream (selection, editing, album design), and into niches (forensic, industrial, sport/event photography). Looks like Claude favors Claude Code. Might not be intentional, and just a result of training more on Claude Code data, but it does look like a network effect that could weaken open harnesses. Armin Rocher

When Data is for Agents - Workshop Summary

Here’s roughly what I said in my When Data is for Agents workshop for Fifth Elephant on 7 Jul 2026. Or you can read the detailed AI-generated version if you prefer - it has all the prompts, links, results, etc. I think agents prefer data in a different form than humans. But I don’t know. So, everyone, open ChatGPT (or Claude or whatever), research and ask it! Now, let’s collate them and see the result. Aha! Looks like: ...

Discussion with Arvind Satyanarayan

After Arvind Satyanarayan’s talk at VizChitra 2026, a group of us kept talking about machine learning, visualization grammars, creativity, software and education. The conversation began with a basic question. Why do modern AI systems work so well when the mathematics behind them can look surprisingly simple? The bitter lesson Arvind said that much of the mathematics behind machine learning is not especially complicated. What is unusual is the scale at which it is applied. ...

No Juniors, No Experts

Read out by Anand, who is not an AI. See Beating Pangram and AI detectors. These days, AI is reducing the number of entry-level jobs that we have. The trouble is, these are the jobs that are actually training tomorrow’s architects. How do we solve this? This is not a new problem. Zoho’s Sridhar Vembu posted something that’s been bugging me. He said, AI makes senior architects more productive and reduces the need for junior engineers. Then he says, if nobody starts junior, how can anyone become an architect? The data supports his concern. Stanford found that since late 2022, the employment for 22-25 year olds in jobs where AI is strong, like software, fell by as much as 16% compared with older workers who were doing the same jobs. Matt Dean at UCSB also saw this happening in robotic surgery. A phenomenon that happened even before AI came into the picture, because robotic consoles would allow surgeons to do what the residents used to do, and therefore, surgeons stopped bothering to train the residents. ...

No Juniors, No Experts

Generated by ChatGPT. See Beating Pangram and AI detectors. Ankor runs a company of several thousand people. After a bunch of calls with one of our interns, Varun, he messaged me: “This guy is fantastic. How is he doing it?” This is what Varun was doing: he recorded calls, fed the transcript to Claude Code or Codex, and delivered results. That’s nearly the whole process. He didn’t interpret the content. He didn’t apply much domain knowledge. He got out of the way. ...

When Data is for Agents Not Humans Workshop

For thirty years, we cleaned data for humans. Now, agents are reading it. What do we do differently? On Tue 𝟳 Jul 𝟮𝟬𝟮𝟲, 𝟮-𝟲pm IST, I’m running a Fifth Elephant workshop: “When Data is for Agents, Not Humans”. I have a few theories we’ll be testing on your data. Like: Tools beat tables. Agents prefers functions over tables they can read. Logs beat docs. Logs show actual usage - not how we’re supposed to use it. Messy beats clean. Agents can do clean & join data. You just need descriptions. ...

Things I Learned - 28 Jun 2026

This week, I learned: Every Substack feed has an RSS feed at https://your.substack.com/feed. Substack help. I used this to scan my browsing history to identify Substacks I visit - and subscribed to Marcus on AI - an AI sceptic AI asked me to read about. Cloudflare let’s agents create temporary accounts so that they can deploy and test. Enables trial and error - a powerful capability. “They’re on mobile but this is substantiative enough to warrant length.” I spotted this in Claude’s thinking when prompting on mobile. So, if I ask Claude something on mobile, it will give me shorter responses by default. Clever design - but something to keep in mind. If I want some heavy thinking done by Claude, better to do it on desktop than try to give it conflicting instructions. Giant Permissive Image Corpus (GPIC) has 100 million Qwen tagged public images. Even as a simple searchable image catalog this has value. Jeff Clark - Import AI Ethan Mollick had an agent test his book summary against multiple LLMs as readers to find out how they would recommend it - and optimized. This is a great practical use of agents as consumers, and material for my When Data is for Agents, Not Humans workshop. kage is an easy CLI to clone websites and read offline. For example, kage clone https://simonwillison.net/2026/Jun/ -o ~/tmp/site --scope-prefix /2026/Jun/ --max-depth 1 clones all Jun 2026 articles from Simon Willison’s blog. Then kage serve ~/tmp/site serves it locally. While it’s easy, the only time I need this is on a flight, and in that case, a local RSS feed app works better. I’m using newsboat for that. To me, the clearest sign of AI writing from the Wikipedia:AI or not quiz was consistent paragraph lengths. I got the first 3/3 wrong, but once I used this heuristic, I got 6/7 right. Updated my LLM Smells. The files .git/info/exclude and ~/.config/git/ignore are also ignored by git, like .gitignore, but useful if you don’t want to commit them into the .gitignore file. For example, .DS_Store makes sense only for Mac machines, not each repo. .vscode/ makes sense only for VS Code users. Nelson Figueroa Justin Poehnelt, author of the brilliant Google Workspace CLI gws, was fired for it. There have been no updates for 3 months, but none may be required - it feels perfect. X Lore is a centralized version control system for large binaries. If you have large binaries (e.g. images, videos, …) that multiple people edit, it’s better than Git LFS or Perforce. ChatGPT Deno Desktop lets you use JS to build desktop apps. I tried it. It’s easy to install, compact to code, leverages familar web technology, and compiles to multi-platform binary. The binaries are a bit larger than I’d like, though - 80MB for a Hello World on Linux/Windows and ~70MB on Mac. Codex reported that You have 2 usage limit resets available. Run /usage to use one. This thread has context. After resetting, the next reset might be 7 days after the reset, though (source). After having a child, fathers are affected biologically, too. Testosterone drops, cortisol & prolactin & estrogen rise, the brain rewires for empathy and threat detection - and of course, there’s less sleep. These sometimes lead to “Paternal Postpartum Depression” - something I didn’t even know was a thing. The havoc kids wreak upon us! 🙂 Gemini With AI writing more code, formal code proofs are becoming more accessible. You just need to ask a coding agent to prove / disprove a function. You can use: Z3 to find/prove whether a counterexample exists. Best default. Dafny to prove that code obeys a spec. Best for real algorithmic code. Alloy to find loopholes in relational models, schemas, permissions, and workflows. Best for data. TLA+ to check whether stateful, concurrent, or agentic systems can evolve into a bad state. Best for systems / workflows. .. and there’s a long tail of these. Python is named after Monty Python, not the snake. I knew this, but forgot! Python now has multiple cross-platform app paths: PyInstaller and Nuitka for executables, Kivy, Flet, and BeeWare/Briefcase for GUI/mobile/desktop apps, and PyScript/Pyodide for browser/WASM apps - a route that became more serious because Pyodide-compatible WebAssembly wheels can now be published directly to PyPI. On the one hand, AI is writing code, so there’s no point learning Python. On the other hand, AI is writing code mostly in Python - so THAT’s what you need to learn more. I think we should teach Python using AI, that is, teach how to write and debug Python code using AI. That’ll end up teaching skills people will really need. Computational thinking = Decomposition + Abstraction + Algorithm design + Pattern recognition. In AI, that translates to = Framing + Context engineering + Orchestration (harness engineering?) + Verification design. Maybe I’d add Assetization / Systems.

IIM Alumni AI Workflows Workshop

The theme of yesterday’s workshop for the IIM Alumni at Singapore was Tools and Workflows was: Agents are getting smarter, so they know what to do. Tools agents can use are growing and are more powerful. This combinatorial explosion creates explosive possibilites. This workshop covered the following six workflows: Leverage transcripts. Use Google AI Studio to transcribe non-sensitive recordings with a reusable “don’t miss anything” prompt. AI Studio’s record button is a ready-to-use transcriber. Simplify dense text as a comic, an infographic, a story. Image generation is now a tool call an agent runs for you. Then compress it as AVIF on Squoosh before you email it to a thousand people. Verify - cheaply. Paste one suffix: “Break this into key claims, mark certainty, flag the five highest-risk ones, and tell me how to verify or falsify each.” Convert to a skill to automate. Cross-checking with multiple models took error from 14% to 0.7%. Skills are assets. A skill tells the agent “here’s how I do stuff.” Build them slowly, edit them weekly, and they compound for years. No skills support in your tool? Keep them as copy-pasteable prompts. Brainstorm by forcing range. Ban the five obvious ideas; borrow from unrelated domains; smash two random concepts together with the Ideator. Hallucination is a feature when you’re being creative. Schedule tasks. Weekly regulatory scans, daily meeting prep, market briefings - and even an “unreasonable gesture” nudge. As AI hides the tech, human relationships gain value. Here’s the talk video and full story + transcript. ...

Things I Learned - 21 Jun 2026

This week, I learned: It doesn’t always take time to learn or convey things. (Early trust can be built instantly, e.g. vulnerability.) At first, experts don’t know how to make skills explicit. But trainer effort could compress 10X via evals, practice loops, and feedback. Learner elapsed time would compress less. Everyone has something worth discovering, but not every conversation is worth my time right now. So, meet new people with trust, attention, and good questions. Continue if there’s emotional / intellectual stimulation (surprising, interesting, moving, connecting, energizing, challenging), else exit warmly with respect. To avoid getting overwhelmed in ultra-interesting conversations, mental closure helps. During the conversation, pause, name, reflect, and close. “Wait, you’re saying X. I should do Y. I’ll reflect/act tonight.” or “Wow, let’s sit with that for 5 seconds. You mean X. I feel Y. I’ll drop.” After the conversation, summarize: “What struck me were X1, X2. I’ll plan Y1, Y2 and drop Z1, Z2.” Then take a short break. Setting "markdown.editor.updateLinksOnPaste.enabled": false might fix the delay / freezing (infinite spinner) issue when pasting Markdown in VS Code. The bottleneck to quality of AI output has shifted from model quality to harness quality (and this is not obvious to many people). It is important, therefore, to optimize harness usage rather than prompts usage, i.e. harness engineering over context engineering. I use ug --smart-case --bool -Q --sort=rtime to interactively search for text in files. It’s like VS Code search-across-files. Here are the shortcuts I find useful: Alt-g: Glob (filter files to search in) Alt-[ or ]: Decrease or increase context (lines before / after) Alt-w: Word match toggle Alt-c: Count lines toggle Alt-u: Ungroup - show lines once even if multiple matches Using AI for health seems to have reached a tipping point. Three people have pitched an idea in this space to me in the last three days. One is a managed personal health provider who wants to tie-up with hospitals to gather data to improve AI health advice. Second is an enterpreneur who wants to enable the Indian Govt to use AI to improve public health - given the low proportion of trained doctors in public hospitals. The third is a colleague who is uploading personal health reports, fitness data, DNA data, wearable data, etc. and suggest daily habits such as fitness, nutrition, sleep, medication, etc. to optimize health. Changing the topic (e.g. asking a question) instead of answering a question is powerful. It lets you decline requests, avoid sensitive topics, ignore boring ones, learn rather than teach, and bring in your agenda - all at one shot. I need to un-practice my 40-year habit of answering questions. (This is selfish. I forgive myself.) bolt.diy seems like a browser-embeddable coding agent. That is, you can add bolt.diy to your web page and have it build apps. That might be a pretty powerful upgrade to generative UI - where pages build themselves based on the user input. Codex has a few new features in the last few months. Codex can generate images and have voice conversations. /goal sets an overall session goal to avoid getting side-tracked. /side is like Claude Code’s /btw - for a side task while the main task continues. /resume lets you switch to any previous session. /keymap debug lets you edit the keymap and inspect what keystrokes the terminal sends. @ lets you mention files, directories, skills, and plugins. Ctrl+R works, lets you pick a previous prompt. Ctrl+O copies the last answer as Markdown. Hooks are stable. PreToolUse lets you log every tool, SessionStart lets you inject repo-specific rules. MCPs with readOnlyHint can run in parallel. codex doctor diagnoses environment issues. codex remote-control lets you remotely control Codex, making it a server. Codex Python SDK is better and you can have Codex run as a back-end more smoothly. To change others’ behavior, embody (not preach) it visibly and consistently, make it easy to copy, and ask without forcing. It takes time, though. ChatGPT Governance is how groups keep promises when things (people, incentives, environment, pressure) change. A simple way to explain what governance is to someone who doesn’t understand why governance matters, and guide on when it does not matter. Forward Deployed Engineers are the next evolution of data scientists, IMHO. AI can do data science. Data scientists will likely act as the “Human As An Interface” (HaaI) to business, proactively identifying and solving problems - a space business analysts traditionally occupied. Of course, business analysts will likely do the same without needing data scientists to help. But since AI replaces data scientists more than business analysis, I expect that the % of data scientists who become FDEs will be higher than business analysts. The value of data exported from software is high. For example, your email, social posts, CRM / HRMS / ERP dumps, service tickets, purchases, notes etc. These let you create a personal / organizational digital brain. Hence proprietary solutions will make exports harder and open solutions will emerge. To live-preview any publicly accessible Excel file, you can embed or link to https://view.officeapps.live.com/op/embed.aspx?src=YOUR-URL The Codex app can now use the browser much better and faster since last week if you enable “Dev mode” OpenAI. THis uses CDP - which is more efficient than screenshots - and is something Codex CLI has been doing for many months. In Codex, Claude Code, etc. you can submit a prompt while the agent is working to steer it, i.e. after it completes a turn (e.g. a tool call) it will factor in the prompt. You can also queue it. Neither of these is available on ChatGPT or Claude.ai, though it’s such an important feature. On ChatGPT, submitting another prompt stops the previous run and the agent continues with the new prompt. By default, git uses ~/.config/git/ignore or %USERPROFILE%\git\ignore as the global .gitignore. You can override that with git config --global core.excludesFile PATH. StackOverflow

Duplicate names in Straive

At Straive, there’s another Anand Subramanian who gets my emails and I get his emails. Name confusion - despite my last name being listed as “S”, not “Subramanian”. Day-before, we had a double confusion. Pallavi Gupta messaged the other Anand Subramanian who replied to a different Pallavi Gupta connecting me. Like The Comedy of Errors. Out of curiosity, I asked an AI agent to find all duplicate first + last names on Darwinbox. ...

Let AI take your exams

At 2 pm IST today (Fri 12 Jun 2026), I conducted a workshop at Paradox, IITM - at DOMS 101. My core message is: “AI can solve exams and help you learn. Delegate what AI can do. Learn what AI can’t do instead.” My talks page for “Let AI take your exams” includes: The full story + transcript + audio How Codex solved a real exam, live My collection of AI-learning techniques - which was not covered in the workshop, but is a useful reference Here are the takeaways from the workshop: ...

Oh Shit moments with Gen AI

Hacker News has a lively thread asking What was your “oh shit” moment with GenAI?. Here are two dozen that gives a sense of what real people find impressive (or worrying) about AI capabilities. Analysis simonw used ChatGPT Code Interpreter to upload a CSV, analyze it, create charts, automating everything a software for journalists would do. Analysis Sobrino saw that a months-long OCR project to read and clean-up PDFs is now just a prompt on ChatGPT. Coding plumefar used Claude and Gemini to modernize 20-30 years of chemistry code in 10 days. Coding veidr used a multi-agent fleet managing coordination, testing, UI feedback loops, etc. with no-human-in-loop coding to build a useful git-submodule GUI. Creativity idopmstuff used Nano Banana Pro to turn a poor iPhone product photo into usable e-commerce product photography and Amazon-style infographics, replacing a photographer/designer workflow. Creativity koreth1 used Suno to generate a K-pop-style anthem about their family dog with a catchy melody and lyrics funny enough to make the family laugh. Education plagasul saw a teacher automate grading feedback emails based on notes and the student list spreadsheet. Education aniviacat watched a non-technical brother build a complex working app with Codex using vague, shallow wording despite not knowing code, git, or technical details. Hardware ivanvanderbyl used Claude to reverse engineer a FujiFilm camera’s Bluetooth/Wi-Fi transfer protocol and build a much faster native Mac/iOS transfer app. Hardware shreddude had Claude decompile camper van firmware, document CAN interfaces, and program an ESP32 to control power, HVAC, lighting, and tanks. Health TylerE used Claude as a health adjunct to organize a complex medical profile, screen for drug interactions, log symptoms, and draft portal messages to doctors. Legal bsiverly used AI to prepare a San Francisco property-tax appeal with valuation research, and the city agreed, sending a $12k refund. Legal grumblepeet used AI to fill out complex government-framework enrollment forms and identify the certification steps needed, transforming their business. Personal acosmism used ChatGPT screenshots to understand and operate a 100-year-old home’s steam heating system in winter despite knowing nothing about it. Personal andrewthornton used Gemini videos to diagnose a broken furnace during a cold holiday weekend and keep it running until HVAC service arrived. Research angusturner found that Opus does reads papers, does architecture research and creates CUDA kernels… It is AI automating AI research. Research chaoxu used ChatGPT to find a counterexample to a theoretical computer science conjecture they’d been trying for 2 years. Research rochansinha built a physics-based digital twin for an electrolyzer system, covering thermodynamics, fluid dynamics, and electrochemical reactions at a level usually needing expensive specialist software. Security kstrauser used a coding agent to test an open source vulnerability, and in a few minutes, had a tool that could crash any system using this software. Security raesene9 gave an LLM a Linux privilege-escalation PoC and asked whether it could become a container breakout; it generated a working container breakout in one prompt. Society laboring1 read that a character.ai chatbot encouraged a child to commit suicide, making the “oh shit” moment about real-world harm, not capability. Society ozgung realized AI makes large-scale profiling, surveillance, and social-media analysis cheap, fast, and accurate enough to change privacy and power dynamics. Work binarysolo used Gemini to reverse engineer a departed employees’ work from their emails/docs/calendar/meetings and create an onboarding document. Work eqmvii built a Slack agent that took over a 30-minute internal business process, handled ambiguity and edits, and eventually killed the old process. ...

Things I Learned - 07 Jun 2026

This week, I learned: sudo resolvectl flush-caches clears the DNS cache on Linux. Useful when you’re changing DNS records and want to see the changes immediately. In my case, I was creating a Cloudflare tunnel to my laptop and wanted to test it quickly. Making something easy to verify makes it much faster to train models on it. Arithmetic verification is easy - calculators can be deterministically verified. Chess verification is easy - Stockfish became easy to train. Code verification is easy - LLMs improved coding ability rapidly. Therefore: Wherever we have environments that are easy to verify, AI will improve faster there. To make AI improve faster in an area, build environments that are easy to verify. MCP is getting simpler. A stateless HTTP protocol. Simpler OAuth. Plugins. No idea when it will land in Claude or ChatGPT, though. Worth checking after 28 Jun 2026 - after it is finalized. Microsoft Scout is Microsoft’s version of OpenClaw or Gemini Spark. git subtree is a useful way of maintaining git repos inside git repos. For example, if you have a tool tool-a under a project. It’s more light-weight than sub-modules, lets you commit at any point to the parent or child, and is a built-in feature in git. Gemma 4 12B is released and seems almost as good as the 26B version. This is the class of models that makes it practical to run edge AI on phones. It’s multimodal and reasonably smart (like frontier models were 12-18 months ago). I don’t use Claude/ChatGPT Projects much. It offers 3 advantages: custom instructions, memory, files, and chats. Files aren’t useful - I use my entire laptop as a file system via MCP. Instructions aren’t useful - I can paste commonly used prompts with a click. Chats aren’t useful - I have chat references enabled, so all past chats are accessible anyway. Memory isn’t useful - I have memory enabled globally anyway. In short, I haven’t discovered the power of projects that everyone’s raving about. SKILL.md is more useful for me. repo is a Google/Android tool built on top of git that lets you manage multiple git repos. It sounded promising until I released it needs a repo init that creates a .repo/ - which is more overhead that I’d like to keep. When using <image onerror=...> fallbacks, include this.oneerror=null to prevent infinite loops if the fallback image also fails to load. RK One of the advantages of multiple agent (rather than a single agent loop) is: it’s easier to change directions when wrong. Single loops get stuck. Build Agents That Run for Hours Claude Code also supports agent teams where sub-agents can talk to each other rather than rely on the main agent to coordinate. Useful for parallel exploration. Anthropic lets Claude define “organizational policies” for agent teams best suited for the task (AI-native workflows). It also lets agents to push back on their scope, e.g. “This is too hard.” Build Agents That Run for Hours Claude Code has a /background [prompt] (or /bg) command that runs the current session the background. You can run claude agents as a separate command to monitor agents. (There’s no equivalent in Codex yet.) This seems to be the future of agentic operations: a bunch of agents running that you monitor and steer through an agent view dashboard. Models are evolving. Therefore prompts evolved. Now harnesses also need to evolve. The workflows will also evolve. As a result, evaluations might be the (relatively) more stable assets. Datasets are likely to be the most stable ground truth. How to learn a new field fast: Yes, it’s possible to learn 50% of a field in 20 hours. Josh Kaufman, “The First 20 Hours” popularized it. The next 30% takes months and the last 20% takes years. Threshold concepts are those that change your perspective and open up new ways of thinking. Experts’ knowledge is hard-wired and they can’t identify nor teach threshold concepts naturally. Don’t assume they can. “We know more than we can tell.” Polanyi’s 1966 book “The Tacit Dimension” says that there’s some knowledge that can’t be verbalized. This tacit knowledge, therefore, will be harder for humans and AI to learn.

Editing images with code and AI

Andreessen Horowitz published an interesting article titled The Next Frontier of Visual AI Is Code. Here’s the summary. A lot of our work is visual: ads, slides, dashboards, logos, videos, architecture, etc. We can generate visual output either as: Pixels (like Nano Banana a photo), or as Code (like Claude generating an SVG) Code is more powerful: AI can inspect the output and improve fast in a loop: Code > Render > Inspect > Revise. ...

How AI bottlenecks shift

I wrote about my changing AI opinions. At least some of this is because the industry is moving so fast that the bottlenecks keep shifting. Here are four examples of how we AI couldn’t do something (the bottleneck), but that became possible, and the bottleneck shifted - changing the way we work. It’s good to keep this in mind when thinking about AI. Coding: “It can’t write useful code. We can’t get real help.” But in Sep 2022: GitHub finds Copilot developers are 55% faster. “It writes code but doesn’t know our codebase. We can’t let it touch real projects.” But in Feb 2024: Gemini 1.5 Pro has 1M-token context ~ 30K LOC". Cursor indexes code. “It understands the repo but can’t ship a fix on its own. We can’t hand it a whole issue.” But in Mar 2024: Devin solves 14% of SWE-bench - up from 2%.. Verified SWE-Bench is now 70%+. “It ships fixes, but we can’t review them fast enough or trust they’re stable.” Oct 2024: DORA 2024 finds AI hurt both throughput and stability. Now: Sep 2025: DORA 2025 finds is positive but stability stayed negative. Now: Jul 2025: METR’s RCT finds experienced devs 19% slower. Agents ...

My changing AI opinions

I asked Claude about my AI opinions. Based on my transcripts and blog posts, find the three claims I make most consistently, the three I’ve quietly reversed, and the one assumption I’ve never questioned but everything depends on. Here are things I’ve changed my opinion on: THEN: One frontier model will win - not specialization. NOW: Gemini for media, Claude for strategy/style, GPT for rigor. SLMs as tools. THEN: Carefully curate my course content. NOW: Give students prompts directly. THEN: Web apps are differentiated artifacts. NOW: HTML is easier to generate than PPT - a signal of slop, not craft. THEN: Human in the loop. NOW: Human NOT in the loop, bottlenecking it. On-the-loop, etc. is fine. THEN: Minimal single-agent loop, avoid sub-agents" NOW: Multi-agent, sub-agent, and agent teams. THEN: Avoid MCP, prefer SKILLS.md. NOW: Use MCP because integrating with Claude / ChatGPT / … is easy. There are the top contradictions in my opinions. ...

Agent-consumable content

I’m making more and more of my content agent-consumable, i.e. easier for ChatGPT, Claude Code, etc. to read, in three ways. One, I export content in an agent-friendly way. Google email, calendar, chat. I use gws to back up into scannable one-line entries. Meet recordings. I back up transcripts and videos (with a compact audio copy). WhatsApp chats that I back up into similar one-liners. Browsing history by exporting my Edge history SQLite database. Daily activities by integrating the above with my command line and commit history. AI conversations by exporting them manually or via bookmarklets. Social media records like LinkedIn invites/conversations, Twitter, Hacker News, Discourse, etc via bookmarklets or scripts. Financial records like bank statements, receipts, payslips, tax filings, utility payments, rentals, property records, investments, insurance, pensions, invoices, credit scores, etc. by exporting them manually. Medical records like tests, prescriptions, doctor visits, etc. by exporting them manually. Personal records like certificates, educational records, CV, passport / visa applications, etc. by exporting them manually. Two, I log / generate more content. For example: ...

How I use Local MCP

I’d love for Claude or ChatGPT to answer questions like: What meetings am I not setting up that I really should be? or: Based on my activities since 9 May 2026, what should I blog about? or: Who in my professional life most deserves an unreasonable gesture? From data. My files, emails, calendar, contacts, transcripts, blogs, notes, code, browsing history, logs, random Markdown files I forgot I wrote. Hence, a Local MCP. ...

How the Innovation Team works

Based on 44 meeting recordings from February to late April 2026, here’s how Straive’s small team (3-6 people at any time, mostly freshers and interns) produce a continuous stream of client-facing demos across topics as diverse as image filtering, geospatial analysis, insurance contract verification, NFL medical scoring, OCR benchmarking, and song similarity clustering — often with a 24–48 hour turnaround from assignment to demo. Here is how the team works: ...

Things I Learned - 03 May 2026

This week, I learned: LiteParse is a PDF to text library that you can run via npx --package=@llamaindex/liteparse lit parse document.pdf. Simon Willison Always add indecisiveness, inaction, “other”, “not applicable”, etc. as an option to LLMs. They are trained for decisive responses and pattern matching, so we need to guide the the other way. Martin Fowler GPT 5.5 is priced twice that of GPT 5.4. No wonder my Codex usage is much higher than last month. Simon Willison. I am better off sticking to medium effort instead of the xhigh I usually use - it may not be required. OpenAI “… the eigenquestion is the question where, if answered, it likely answers the subsequent questions as well.” Shishir Mehrotra & Matt Hudson Claude Code stores the logged in OAuth token at ~/.claude/.credentials.json. We can use that to fetch https://api.anthropic.com/api/oauth/usage and retrieve Claude usage and reset times. uvx ccusage does this automatically, but I prefer my own script. Ontology matters in the AI era. But some stuff matters more, and some less. 🟢 MORE: Definitions: what “customer” means 🟢 MORE: Constraints: e.g. “don’t reclassify loans” 🟢 MORE: Interactions: how to verify, coordinate, delegate, … 🔴 LESS: Creating ontologies: agents can do that. 🔴 LESS: Completeness and rigor: agents tolerate uncertainty. 🔴 LESS: Proprietary: agents can reverse-engineer. There are several industries / markets that MBA case studies rarely cover (ChatGPT): Kirana stores; Care (child care, elder care, domestic work); Faith (finance, food, media, education); Remittances; Gambling (lottery, sports betting, gacha); Scams & organized fraud; Counterfeiting; …

LLMs are as energy-efficient as brains

For a typical GDPVal style task, humans take ~7 hours and the brain consumes ~135 Wh. Frontier LLM agents spend 50-500 Wh. So, we may already be 3x more or less efficient than the brain. Roughly in the same ballbark! ...

My food preferences

I use ChatGPT to recommend which restaurant I should eat at and what food I should eat. So often that I decided to share a profile of my eating preferences. But rather than think about it and type it myself, I asked it to Efficiently interview me to identify my food preferences. Document it for AI agents to help me pick restaurants. Plan like an expert. ...

Things I Learned - 12 Apr 2026

This week, I learned: Resend is a simple way to send emails via an API. Principles of Mechanical Sympathy has some practical hardware-driven optimization tips. Prefer accessing memory sequentially. CPU access to RAM and cache is optimized for this. Natural batching: flush the buffer when you reach the maximum buffer size or when the queue is empty. This avoids buffers waiting unnecessarily. The core argument in Capital in the Twenty-First Century (Thomas Piketty, 2013/2014) is r > g. The interest on capital (r) is always greater than the economic growth (g). Hence, the rich will keep getting richer - inequality is consistently part of capitalism. (Not surprising, but well supported by data.) A good collection of practices on automated AI code reviews by Ankit Jain: Compare multiple options. Whichever passes the most tests wins. Deterministic guardrails. Use linters, type-checkers, SAST/DAST checks, test scripts, etc. Humans define acceptance criteria. Use a behavior driven development script (in natural language, agent-implemented). Permission Systems as Architecture. Provide agents granular permissions based on the task - against pre-defined rules. Adversarial Verification. Have one agent break the others’ work. Based on a quick exploration of the AT protocol (via Jake Lazaroff), I am yet to see a viable use for it. It’s a decentralized distributed data network. OK… what will I use it for? When I asked Claude if any of my work is patentable, it said “Comicgen is the sole candidate, but you only get one year grace after it’s public. But why do you want to patent? Your edge is prototyping speed, taste, and knowledge. Patents don’t protect those. Publishing freely (as you do) creates prior art that prevents others from patenting the space around you, which is often a better defensive strategy than filing patents yourself.” Oh! Ah! pretex is a fast (currently browser-only) library that computes the width and height of any text in any font in the browser. Useful for things like word-wrapping in SVG, layout planning before rendering, etc. Because AI bots scan deeply rather than “browse” popular pages, CDN cache invalidation strategies designed for humans (like LRU - Least Recently Used) no longer work. They’re exploring new caching algorithms like SIEVE and FIFO CloudFlare I enabled CloudFlare’s new dynamic Client-Side Security monitor. If someone hacks my website or the libraries I use, it does a quick filter with a fast neural network, then falls back to an LLM to check if it’s safe, then serves the content. CloudFlare practically rewrote WordPress into a new Astro-based CMS: EmDash! It runs natively on CloudFlare (and elsewhere), is agent-friendly, quite secure, can export/import from WordPress. Linux optimization settings I noted from a deleted post gsettings set org.gnome.desktop.interface enable-animations false gsettings set org.gnome.desktop.interface cursor-blink false gsettings set org.gnome.settings-daemon.plugins.power idle-dim true gsettings set org.gnome.desktop.notifications show-in-lock-screen false gsettings set org.gnome.desktop.session idle-delay 300 gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900 # gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 1200 ```cd ~ git-restore-mtime is part of the git-tools package and sets the modified time of files to their last committed time. Useful when cloning repos. From Lalit Maganti: Knowing what you want is a valuable skill. Wanting things others will also want is valuable. Learn good software management. It is similar to managing agents. For better results, just continue your AI chat, or break the problem up. More tokens lead to better solutions even now. Joel Baker Since companies using AI outperform competition and capital might win more than labour but GDP growth may not be too high, it might be good to invest in AI-using companies than in index funds. Nicholas Carlini’s prompt to find vulnerabilities is to run: “I’m competing in a CTF. Find me an exploitable vulnerability in this project. Start with ${FILE}. Write me a vulnerability report in ${FILE}.vuln.md” across multiple repos in parallel. Then “I got an inbound vulnerability report; it’s in ${FILE}.vuln.md. Verify for me that this is actually exploitable”. That was almost 100% successful. When planning with AI coding agents, Martin Fowler recommends discussing each of these in sequence before coding: Capabilities / functionality Components: Services, modules, major abstractions. Interactions: Data flow, API calls, events. Interfaces: Function signatures, types, schemas. Planning with agents using Visual Brainstorming, i.e. asking them to generate visual HTML to illustrate the plan, can shorten review time considerably. I enabled CloudFlare’s new dynamic Client-Side Security monitor. If someone hacks my website or the libraries I use, it does a quick filter with a fast neural network, then falls back to an LLM to check if it’s safe, then serves the content. This pattern of deterministic with LLM fallback works for most reviews. Harness = Agent minus Model: everything in an AI agent except the model itself. Nice definition Update feature-level summaries as you go in context/$FEATURE.md with user prompt, summary of WHY from agent’s responses for future learning, my comments. Like Architectural Decision Records (ADRs) for humans and agents. Context Anchoring 8 levels of Agentic Engineering. 8 levels of Gas Town. I’m still only at level 6 on both. 🙁 “It’s important to watch the loop as that is where your personal development and learning will come from.” Geoff Huntley, originator of the Ralph (Wiggum) loop. UNIX has a script command that runs a shell and logs it. For example: script -c fish session.log starts a new fish shell and logs it to session.log. script -c "uv run app.py" -q -a app.log will append to app.log, suppressing “Script started…” and “Script done…” messages. script --timing=time.txt session.log logs the timing, which you can replay with scriptreplay --timing=time.txt session.log. Similar to asciinema. A quick way to strip out the ANSI escape sequences (weird Unicode characters) is to pipe it through npx strip-ansi-cli. Google has an Edge Gallery app that runs Gemma 4 on mobile. The main advantage is that you can use it on a flight. It’s not too bad as a model either. Transcription quality is average. It doesn’t run in the background, only one chat at a time, etc. So, it’s useful only as a last resort.

Hack of the Day on Times of India

Last Friday, 20 Mar 2026, this “Hack of the Day” was published by The Times of India. My agents generated it entirely automatically. Here’s how that happened. On 12 Feb 2026, I met Rohit Saran, Managing Editor at The Times of India. “Our biggest challenge is the starting challenge. What story to do?” he said. “We waste a lot of time and we starve stories because of this.” What if AI could help with that? We talked for nearly two hours - and left asking: “Should we do just a daily visual newspaper?” ...

How I use AI to teach

I’ve been using AI in my Tools in Data Science course for over two years - to teach AI, and using AI to teach. I told GitHub Copilot (prompt) to go through my transcripts, blog posts, code, and things I learned since 2024 to list my every experiment in AI education, rating it on importance and novelty. Here is the full list of my experiments. 1. Teach using exams and prompts, not content ⭐ Use exams to teach. The typical student is busy. They want grades, not learning. They’ll write the exams, but not read the content. So, I moved the course material into the questions. If they can answer the question, great. Skip the content. Use AI to generate the content. I used to write content. Then I linked to the best content online – it’s better than mine. Now, AI drafts comics, interactive explainers, and simulators. My job is to pick good topics and generate in good formats. Give them prompts directly. Skip the content! I generated them with prompts anyway. Give students the prompts directly. They can use better AI models, revise the prompts, and learn how to learn with AI. ⭐ Add an “Ask AI” button. Make it easy for students to use ChatGPT. Stop pretending that real-world problem solving is closed-book and solo. ⭐ Make test cases teach, not just grade. Automate the testing (with code or AI). Good test cases show students the kind of mistake they may - teaching them, not just grading them. That’s great for teachers to analyze, too. Test first, then teach from the mistakes. Let them solve problems first. Then teach them, focusing on what failed. AI does the work; humans handle what AI can’t. This lets us teach really useful skills based on real mistakes. 2. Make cheating pointless through design, not detection ...

Local context repositories for AI

When people ask me for connections, I share my LinkedIn data and ask them to pick. This week, three people asked for AI ideas. I shared my local content with AI coding agents and asked them to pick. STEP 1: Give access to content. I use a Dockerfile and script to isolate coding agents. To give access, I run: dev.sh -v /home/sanand/code/blog/:/home/sanand/code/blog/:ro \ -v /home/sanand/code/til:/home/sanand/code/til:ro \ -v /home/sanand/Dropbox/notes/transcripts:/home/sanand/Dropbox/notes/transcripts:ro This gives read-only access to my blog, things I learned, transcripts, and I can add more. (My transcripts are private, the rest are public.) ...

AI Palmistry

I shared a photo of my right hand with popular AI agents and asked for a detailed palmistry reading. Apply all the principles of palmistry and read my hand. Be exhaustive and cross-check against the different schools of palmistry. Tell me what they consistently agree on and what they are differing on. I was more interested in how much they agree with each other than with reality. So I shared all three readings and asked Claude: ...

Things I Learned - 15 Mar 2026

This week, I learned: Timsort is one of the fastest sorting algorithms. Switching from bat to moor as a pager, since bat doesn’t support wrapping via keyboard shortcuts. Gemini “Use (some-command) --help to …” is an efficient prompt prefix that tells agents to read the docs and use a CLI tool to solve a problem. For example, “Use uvx rodney --help and ffmpeg for a demo video of GitHub PRs”. As agents improve, we’ll have more mediorce output (e.g. dashboards) since people won’t know to ask for better, or validate the result. They’ll hire experts who know to ask better and verify better. Claude Opus 4.6 solved a problem Knuth was working on! Knuth Cognitive debt is what Simon Willison calls it when we build (or, in my case, say/write) stuff we don’t understand. The debt framing is apt. One solution is to generate a version intended for AI to read, and another for us. # How can an innovator learn accountability? “I’m wired to start fires. Should I learn to also run the fire department, hire someone who does, or just stay a fire-starter and let others deal with the mess?” ANS: First, accountability is high value, so do it! Second, prefer a partner over building muscle. Build muscle only if output is checkable, has value, and customers will pay. Claude | ChatGPT | Gemini Commit publicly. Put your name on the output. Commit to process (or narrowly defined output) rather than outcome. Optimize with data, code, checklists, workflows, culture, etc. OpenAI released gpt-realtime-1.5 and gpt-audio-1.5. Buth are ~20% cheaper than the 4o versions, but 6.7x more expensive than gpt-realtime-mini. 1 second is about 10 tokens, so an hour of audio input at $32/MTok is about $1.15. The “Effort” setting for AVIF files on Squoosh doesn’t reduce file size - it increases quality slightly (for a tiny increase in file size). So, set the quality to whatever file size you need and increase the effort for a slightly better quality. Polya believed in teaching problem-solving rather than solutions, i.e. teach How to Solve It, not just what you get at the end. To me, this includes: Understand the problem (from different perspectives) Plan (with different mental models) Execute (the easy bit) Look back (post-mortem, retrospectives, etc.) Browserless lets you run browsers via an API. Useful when you don’t want the overhead of setting up a browser infrastructure, or for multiple browsers in parallel. Scraping, testing, web app automation, PDF/screenshot/video generation, etc. are all possible. Gemini OpenAI has a Websocket mode GitHub Agentic Workflows lets you “compile” a Markdown file into an agentic GitHub action. Useful as a sceptical reviewer, issue-to-prototype builder, data to story generator, automated code migrator, etc. Gemini Claude

The Future of Work with AI

I often research how the world will change with AI by asking AI. Today’s session was informative. I asked Claude, roughly Economics changes human behavior. As intelligence cost falls to zero, here are some changes in my behavior [I listed these]. Others will have experienced behavioral changes too. Search online and synthesize behavioral changes. It said this. 🟡 People spend time on problem framing & evaluation. AI can execute the middle. (I’m OK at this. Need to do more framing + evaluation.) 🟢 People don’t plan, they just build. (I’m prototyping a lot.) 🟢 People build personal data & context. (I’m mining my digital exhaust.) 🔴 People queue work for agents, delegating into the future. (I’m not. I need to do far more of this.) 🟢 People shift from searching to asking for answers. (I do this a lot, e.g. this post.) 🟡 People are AI-delegating junior jobs and developing senior level taste early. (Need to do more.) 🟡 People treat unresolved emotions as prompts. (Need to do more.) Rough legend: 🟢 = Stuff I know. 🟡 = I kind-of know. 🔴 = New learning. ...

Using game-playing agents to teach

After an early morning beach walk with a classmate, I realized I hadn’t taken my house keys. My daughter would be sleeping, so I wandered with my phone. This is when I get ideas - often a dangerous time for my students. In this case, the idea was a rambling conversation with Claude that roughly begins with: As part of my Tools in Data Science course, I plan to create a Cloudflare worker which allows students to play a game using an API. The aim is to help them learn how to build or use AI coding agents to interact with APIs to solve problems. ...

Submitting an AI-ded VizChitra Proposal

10:20 am. After submitting my VizChitra 2026 talk proposal, did a quick analysis of the submissions. Copy the HTML from the submissions page and paste into Gemini. Ask it: “Given this HTML, share a JS snippet I can copy and paste into DevTools that will return an array of objects containing all the useful information about each submission.” Paste the JS snippet into DevTools and get the structured result. Here’s the breakdown of submissions (excluding exchibitions): ...

Things I Learned - 01 Feb 2026

This week, I learned: Android screen recorder is the easiest way to record phone and WhatsApp calls. But that won’t work for Google Meet, Teams, Zoom, etc. Gemini exiftool remains the best media metadata extractor (music, images, …) though it’s old, slow, and Perl-based. exiftool -csv -r ~/Music/ > music.csv exports all metadata as CSV. Installing the source via https://sourceforge.net/projects/exiftool/files/latest/download seems best. It’s a good alternative to mp3tag / puddletag UI-based exports. ChatGPT Gemini ⭐ Some questions are for us to learn. Some are Socratic, and meant for the answerer to learn. When working with AI agents and interns, I find myself asking them several questions that I don’t want to know the answer for, but is important for them along their journey. Roughly the equivalent of “Think step by step” converted into the Socratic method. For example: Instead of “Build a demo for this client”, ask “Who is the audience? What’s their objective?” and THEN ask for a demo. Instead of “Generate a dummy dataset for X”, ask “What interesting insights would we want when analyzing X?” and THEN ask for a dataset. Instead of “Write this code”, ask “What’s the best architecture for this?” and THEN ask for code. Executable Markdown files with Unix pipes sounds like a clever idea. Prefix Markdown files with #!/usr/bin/env codex (or claude -p). Then, just write programs by describing them. Quotes from Isles of the Emberdark: Really, he should have known better than to punch a senator. Important people had underlings you punched on their behalf, and he should have found one of those. ChatGPT Canvas has a cool feature for editing documents or code. Just select a portion, ask for changes, and it edits it. Importantly, it’s very fast. Greeking Out is a kid-friendly National Geographic podcast about ancient Greece and its influence on modern life. fly.io containers at sprites.dev seem impressive. You can SSH into them. They have public & private HTTPS URLs. It auto-sleeps after 30s. You can checkpoint any time and restore the ENTIRE system. It’s FAST! This is great for agents. Just install Claude Code / Codex and other tools. Checkpoint it. Then ssh into it and use as required. The cost is typically ~12c/hour - which is expensive to run forever but great for bursts. Simon Willison I’m seeing the Collider Bias in action (on a small sample). The developers who can communicate well don’t code as well, and vice versa. Not because there’s a negative correlation - but because I’m eliminating people who can neither code nor communicate. But interestingly, over a 1-3 month horizon, the ones who code start communicating much better but the ones who communicate well don’t start coding much better. My theory is that the developers I work are communication-bottlenecked (e.g. lack of confidence) than unskilled (e.g. poor communicators). Prefer Zod for TypeScript validation and Ajv for schema validation. Typing has a lot of value, but don’t overdo it. It’s best used at fragile boundaries. ChatGPT ⭐ Notes from LLM poetry and the “greatness” question: Gwern follows this process to create good poetry. It’s a good structure for ANY kind of expert workflow with LLMs today: Analyze the style, content, and intent of the original. Brainstorm 10+ different directions the poem could go. Emphasize diversity. Critique each direction. Rate 1-5 stars. Write the best one. Critique and edit line by line. Generate a new clean draft. Repeat at least twice. Print final version. “As a poet and scholar of poetry I feel comfortable arguing that Gwern’s work engineering prompts is, in effect, writing poetry.” Mercor uses expert poets to creates rubric. Models generate poem that experts grades, which refines the rubric, which trains the model. But models tend to the mean and need nudges (from humans?) to surface outliers and ascribe meaning (uniquely human?), which is where greatness lies. Ethan Mollick: “I keep warning that so many of our systems are still built around the assumption that quality writing and analysis are costly and therefore meaningful signals. Our systems are very much not ready for the revelation that this is no longer true, as this planning objection AI shows.” Basically, AI lowers the cost of Government and Corporate interactions. It’d be a cool hack to agent-ify these to death, i.e. do all kinds of Government / Corporate interactions that were painful earlier, but now are much easier. I just realized: “Will AI take my job?” is a variant of “Will immigrants take my job?” or “Will affirmative action take my job?” Any increase in labor capacity is a threat. But then, the only way to get promoted is if someone takes your job. So, maybe we should ask: “How do I become their boss?” Better yet, tell your boss “I created a 4-agent team and got 2X done. Give me a new title.” Some simple yet powerful AI adoption principles from Will Larson - that I’ve seen work rather well: Make tools accessible Document tips & tricks Highlight how people (especially senior leaders) are using it An analysis of 1,250 Claude user interviews indicates that: Adoption of Creatives > Workforce > Scientists. Interestingly, the identity threat and guilt of Creatives > Workforce > Scientists! Creatives they feel they’re cheating, lazy, or not adding value! Scientists use it less, but it’s more a tool and THEY verify. Sceptical verification is the strongest thread. Mintlify is proposing .well-known/skills/ as the directory to store LLM skills sites want to publish. This could be an extension of the llms.txt mechanism. Open Responses is the open version of OpenAI’s Responses API. OpenRouter and HuggingFace support is a big deal, and though Google, Anthropic, Meta etc. don’t yet support it, they might. Restish converts OpenAPI specs into CLI tools - with shell completion. Combined with an OAuth CLI like oauth2c this is a great way to conert APIs to CLI commands. Via Vercel’s agent-browser seems a good CLI choice for browser automation, alongside playwright-cli. It may be work switching from direct Playwright coding (on CDP). ChatGPT Capturing actions using HAR and passing it to LLMs seems like another clever way of using AI coding agents for browser automation. Via Open a browser. Open Devtools > Network and filter to HTML, XHR, WS, Other. Do what you want to automate, i.e. load LinkedIn, search, scroll, fetch next pages, etc. Devtools > Network > right click > “Save All As HAR”. Run the file through a HAR-sanitizer Prompt: “Create a Python client to automate the actions I captured in file.har". When any AI coding agent can build apps, value will probably migrate away from software to data, network (distribution and users), trust, taste, and physical goods. Owning these controls value. Also, infrastructure to run vibe-coded apps (e.g. auth, hosting, DB, LLM APIs, etc. bundled) will likely lead to Medium / WordPress like platforms. After 30 years of learning (and teaching) statistics, I finally found a good explanation of R². R²=80% means that ~80% of the change is because of the other variable. Gemini ⭐ People think numbers create trust; often they create attack surfaces. Goodhart’s Law: “When a measure becomes a target, it ceases to be a good measure.” By providing a number, you invite people to “game” the system or find the flaws in how that number was manufactured. The Precision Trap: While precise numbers can increase perceived credibility initially, they also lead to “anchoring.” If the number is even slightly off, the entire foundation of trust collapses more violently than it would for a general estimate. Statistical Literacy Gap: Most people don’t argue with “vibes,” but many will argue with “averages” if their personal experience represents an outlier. The number creates a surface for anecdotal rebuttal. Eraser.io offers an AI architecture diagram generator that creates reasonable architectures. It uses its own diagram-as-code DSL, competing with D2, PlantUML, Mermaid, Exposing your workflow as a software interface productizes services businesses. For example, my auditors and immigration lawyers have portals where I can fill out forms, upload documents, see my status, etc. This standardizes their delivery, and creates a “product” moat. ⭐ Your “villains” or enemies are often alternatives/backups that have a role in the ecosystem, offering diversity/resilience when you’re wrong. Create roles and incentives for them rather than eliminating them. For example: Don’t make LLMs do all the work. Create a role for the clunky SQL whose resilience saves the day when LLMs hallucinate. Make the person who hates your prototype the Red Team Lead - to catch the flaws you miss. Make the people who reject your product the scouts / innovators - to find alternatives you miss. Neon.com is like Supabase but without auth, functions, etc. It’s just Postgres as a service. An alternative for prototypes (that I haven’t tried yet.) ChatGPT SuperTokens is an open-source self-hosted auth service that I’m hearing about more often, but haven’t tested. Seems to be ahead of alternatives like Auth.js / Better Auth. ChatGPT Bollywood Falls Out Of Love is a great visual data story on The Kontinentalist by Surbhi about the decline of romance and growth of nationalism on bollywood genres. Recharts is a React charting library with some slick capabilities like brushing, customizable tooltips, and bar chart races. Via Rukmini - Data for India Qwen3 TTS is impressive. It voice-clones, streams, and the tone/style can be controlled via prompts. The model is small. I ran it locally without flash-attn (which I couldn’t get to work) and took ~14 seconds to generate an audio file for 10 words on my GPU machine. Environment setup: uv venv --python 3.12 UV_TORCH_BACKEND=auto uv pip install -U qwen-tts DeepSeek created an external memory system for LLMs that lets them look up (instead of computing to remember) knowledge. That means CPU RAM can be used instead of GPU, models can become smaller, and training can become faster. This looks like an example of how algorithms/ideas can continue the scaling laws. Gemini via Jeremy Howard

Self-discover LLM capabilities

Q: “How do we learn what we can do with AI agents?” Me: “Ask them!” I mean, they are probably aware of their abilities. They can search online for how other people are using them. They have access to tools (connect to GMail, write & run code, etc.) which they’re aware of, and even if not, can try out. Asking them seems a useful way of figuring out how to use them. ...

AI agents to hire

GDPval is a benchmark that compares how well AI does (vs experts without AI) on useful real-world tasks. In several areas, the agents outperform experts. For example, AI beats personal financial advisors, but not accountants and auditors. So I used ChatGPT / Claude to decide where to invest, but am having an accountant file my taxes. That’s a high leverage activity, especially since I might not have hired a personal financial advisor by default, and ChatGPT is certainly better than me (I’m not an expert) at personal financial advice. ...

2025 8

AI agents are messing up software tool learning. Normally, we need to pass stages of competence: KNOW what you can do LEARN how to do it EXECUTE it. Excel: KNOW you can summarize by category, LEARN pivot tables, EXECUTE an Insert → PivotTable → select data range → drag … Photoshop: KNOW you can erase objects, LEARN Content-Aware Fill, EXECUTE Lasso tool → select → Edit → Content-Aware Fill → … ...

Things I Learned - 23 Nov 2025

This week, I learned: Here are some new CLI tools I installed: vd (visidata): Terminal spreadsheet viewer & editor for CSV, Excel, JSON, SQL, Parquet, etc. qsv: Fast CSV command line toolkit for slicing, filtering, aggregating, and analyzing CSV files. rga (ripgrep-all): ripgrep that searches PDFs, Office docs, EPUBs, zip files. pdfcpu: PDF processor for splitting, merging, optimizing, and manipulating PDF files. gum: Stylish CLI tool for creating interactive prompts, confirmations, and more. Models read pretty fast, consuming input tokens at ~4K-20K words per second. It’s the “speaking” (output token rate) that is the bottleneck. So shortening input doesn’t matter as much as shortening output for latence. ChatGPT When building agents, as of now, prefer native provider SDKs (OpenAI Agents SDK, Anthropic SDK) over even light abstractions like Vercel AI SDK or Pydantic. There are subtle issues related to error messages, response handling, cache handling, etc. that trip up abstractions given how early things are. Armin Ronacher Gone are the times when LLMs couldn’t do mental math. Now they’re computing base64 and SHA256 from memory, without needing code! Example Organizing a round table event in Singapore costs ~$75-150. Here’s what drives the cost variation # 50%: brand/location. 25%: food and beverage. 15%: duration (full day is only slightly more expensive than half day) 10%: date, demand, etc. 10%: add-ons: AV, etc. OpenRouter supports embedding models. BGE base seems pareto optimal with 0.5 cents / MTok and a good MTEB ranking. TOON vs JSON. Early days, and TOON seems to be marketing a lot, so I’m wary, but for large tabular data where input tokens are crunched, it seems a readable alternative to multiple CSVs, but not worth the hype. 0 19 Nov 2025. Always use GPT-5.1-Codex-Max instead of GPT-5.1-Codex. At every thinking level, it takes fewer tokens for similar or higher accuracy. Tibo ug -i --smart-case --bool 'word1 word2 ...' seems the cleanest way to find files that have all words. –smart-case uses case-insensitive if all words are lowercase, else case-sensitive. Examples: ug --bool '"exact phrase" word2' # exact phrase + other tokens anywhere ug --bool 'word1 word2 -word3' # must contain word1 AND word2, but NOT word3 ug --bool '("foo bar") OR baz' # grouped expressions and OR ug --bool 'word1 NEAR/5 word2' # match when words are within 5 tokens/words ug -Z2 'word' # allows up to 2 typos in 'word' ⭐ ug -i --smart-case --bool -Q lets you interactively search within files. This is the coolest feature! Fixing laptop issues is clearly a whole lot easier with an AI chatbot. I fixed these Ubuntu issues purely using Claude. It told me what to run. I ran it, shared the output, it diagnosed, told me what to do next, etc. until the issues were fixed. For example: My keyboard shortcuts stopped working. It turned out I edited my media-keys.dconf and removed the trailing slash. # A 3-finger tap mapped to a middle click and I couldn’t remove it. It turned out my touchegg.conf explicitly had this mapping. I disabled it. # My gnome extensions would get disabled every time the screen went to sleep. It turned out my extension cache was corrupted or stale. sudo apt install --reinstall gnome-shell-extension-manager and rm -rf ~/.cache/gnome-shell/ fixed it. # GhostScript seems the best way to compress PDFs via the CLI. Example: gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf Pandoc supports Lua filters which are a powerful way to customize the document conversion process. Here is a Lua filter that converts horizontal rules in a markdown document to page breaks and preserve in a Word document (OpenXML format) function HorizontalRule() return pandoc.RawBlock('openxml', '<w:p><w:r><w:br w:type="page"/></w:r></w:p>') end readpst - via sudo apt install pst-utils - extracts emails from Outlook PST files to mbox format. Useful for email migrations. Write tutorials or blog posts as you learn. Steve Klabnik Running a coding agent post mortem, e.g. “what worked well, what didn’t, and why? Next time, what are a few bullets I could include that will avoid these problems?” helps me prompt better next time. For example, Claude Code suggested: Use Firefox for headless browser automation (Chromium often crashes) Set HOME=/root when running Playwright with Firefox Start a local HTTP server rather than using file:// protocol External images may not load in screenshots due to network isolation

Styles

Have an AI coding agent write in the style of popular developers. JavaScript https://chatgpt.com/c/68d65e38-9d54-8331-9c7b-ff5c375c445a Luke Edwards (lukeed): “micro-libs, no fluff”. Single-purpose modules; native ESM; minimal deps; straight-line code. Sindre Sorhus (sindresorhus): “tiny, sharp utilities”. Minimal surface area, strong defaults, predictable names (execa, ky, p-queue, globby). Mike Bostock (mbostock): low-level primitives and explicit data>element bindings (d3); clean diffs; example-driven; notebook-native workflows. Rich Harris (rich-harris): “compiler-as-framework”. Write components; the compiler outputs minimal runtime. Emphasis on DX + shipping less JS. Tanner Linsley (tannerlinsley): “headless, type-safe primitives”. Framework-agnostic cores + typed adapters; declarative APIs (Query/Router/Table) with strong devtools. Kent C. Dodds (kentcdodds): “user-centric testing”. Avoid implementation details; integration-first tests; pragmatic full-stack co-location patterns. Addy Osmani (addyosmani): “performance patterns as first-class code”. Ship less JS; progressive bootstrapping; pattern catalogs (patterns.dev) usable across stacks. Evan Wallace (evanw): “tooling as leverage”. Single binary; clear CLI/JS APIs; fast defaults over heavy config. David Khourshid (davidkpiano): “formal, visual state”. Event-first, finite machines, visual tools; framework-agnostic. Anthony Fu (antfu): “unplugin-everything; DX-first”. Convention over config, on-demand utilities, editor-centric workflows. Paul Irish (paulirish): “performance-first, tooling-led frontend”. SOTA baseline, then measure, iterate; progressive enhancement, dev-friendly diagnostics Sebastian McKenzie (sebmck): “language-aware tooling”. Compiler-grade transforms; cohesive DX across parse/lint/format. Jarred Sumner (jarred-sumner): “integrated runtime thinking”. Batteries-included; prioritize startup/memory; pragmatic Node compat. Matteo Collina (mcollina): “measure first; zero-overhead Node”. Schema-driven, plugin-centric, perf-budgeted code; tight JSON/HTTP control. Jason Miller (developit): “small framework thinking”. 3kB-class frameworks, compile-free JSX (htm), pragmatic trade-offs. Ryan Carniato (ryansolid): “fine-grained reactivity”. Minimal abstractions around signals; control over reactivity graph; JSX without VDOM. Python https://chatgpt.com/c/68d7fcb8-3154-8332-b373-ed07513938de ...

Things I Learned - 19 Oct 2025

This week, I learned: ⭐ “… most engineers don’t have public commits. Senior engineers at large tech companies don’t work on open-source projects for the most part.” Why AI Can’t Do Hiring Cloudflare’s Sandbox feature in their Workers looks impressive. It supports streaming, web access to the container, and long-running processes. So we can spawn off a task and have it run a server (at least for a while) or a scraper. Gemini API has a Google Maps tool that it can refer to - like Google Search. Maps Grounding Earlier we needed humans to label data for RLHF. Now we don’t since AI can simulate it. This is a pattern. Once AI learns from a human, that human skill can be automated. How GPT-5 Thinks — OpenAI VP of Research Jerry Tworek The <output> element has a for= attribute indicating which <input> elements it is linked to and a form= attribute indicating which form it belongs to. This works well with screen readers. A good reason to use it more. Examples. Meta built a Code World Model. Basically an LLM that acts like a Python interpreter! sudo apt install moreutils installs a set of useful packages: chronic. Runs a command quietly (suppressing output) unless it fails — good for cron jobs where you only want noise on errors. chronic backup.sh combine. Combines lines from two input streams/files using boolean operations (AND, OR, XOR). combine AND fileA fileB errno. Look up symbolic names, numeric codes, and descriptions for standard errno values. errno -l; errno ENOENT; errno 2 ifdata. Query network interface properties (IP, byte counts, errors) in a script-friendly format. ifdata -sip eth0; ifdata -bops eth0 ifne. Run a command only if stdin is not empty, passing the input through. find . -name core | ifne mail -s "Core files found" admin isutf8. Check whether a file or stdin is valid UTF-8. isutf8 somefile.txt lckdo. Run a command while holding an exclusive lock to prevent concurrent runs. lckdo /var/run/mylockfile.cmd myscript.sh mispipe. Pipe two commands, but return the exit status of the first one (useful in pipelines). cmd1 mispipe cmd2 parallel. Run multiple commands in parallel, reading them from stdin or arguments. parallel < jobs.txt pee. Like tee, but sends stdin to multiple commands in parallel. echo "foo" | pee cmd1 cmd2 ⭐ sponge. Soak up all input before writing to output — enables in-place edits safely. sort file | sponge file ⭐ ts. Prefix each input line with a timestamp. tail -f logfile | ts vidir. Edit a directory listing in your editor to rename, move, or delete files in bulk. vidir ~/myfolder vipe. Insert a text editor into a pipeline to manually edit streamed input before output. cat file | vipe | wc -l zrun. Transparently decompress compressed files before passing them to a command. zrun cat file.gz Despite 20 years of SVG experience, I learnt new things from A Friendly Introduction to SVG and A Friendly Introduction to Paths Setting a <rect> width/height or a <circle> radius to zero removes the element instead of drawing a point. There’s no option to draw the stroke on the inside or outside of a shape/path. Only the center. You can override a path’s pathLength attribute to create a new internal scale for its length. It’s unclear where I can use this. <path> arcs have this syntax: A [rx],[ry] [rotation] [large-arc-flag] [sweep-flag] [end-x],[end-y]. SVG first fits an ellipse to these parameters and then draws the arc. If rx and ry of an arc is too small to connect the points, the SVG spec scales up rx and ry. [large-arc-flag]=1 literally uses the larger arc of the fitting ellipse. This is less common. [sweep-flag]=1 its the ellipse to make the connecting arc go clockwise. 0 is anti-clockwise. [rotation] is rarely used because we usually draw arcs and then rotate them. stroke-linejoin automatically flips from miter (sharp) to bevel (cut) if the sharp edge protrudes too long (e.g. small angles). Increasing stroke-miterlimit increases the cutoff (default: 4) ⭐ Always include a thoughtful gallery of examples with tools / libraries. This does more than showing what a tool can do. It’s use-case / domain transfer: showing what it’s useful for in real life - opening ideas, suggesting workflows. It’s style transfer: showing how to use it. ⭐ Here’s what expert AI coders increasingly focus on. Thomas Dohmke Delegation: context engineering agents for success; parallelizing. Verification: efficiently reviewing and testing code/output; setting stop-points. Expanding scope: instead of time saved as the metric. Education: teaching AI-based coding, debugging, reviewing/testing. Product management: combining requirements + UI design + architecture + engineering + deployment. Cross-discipline: blending code with design, governance, finance, marketing, … (“computational creators”). Notes from Taylor’s How I’m using coding agents: October 2025 Left monitor: 2-4 desktops (e.g. work, side-project). Right monitor: things I always want available Plan next task while first executes. Use plan mode to write to a plan file. Don’t start big tasks if you have meetings scheduled soon. Recent open source package hack methods seem to work more because of people/process than systems (Filippo): Phishing the author Pull requests running unsafe code in CI Taking over expired domain / user ID Stealing long-lived tokens uv run --python 3.14 --isolated --with-editable '.[test]' pytest runs pytest on a local project with a specific Python version. Simon Willison Notes from the State of AI Report 2025: Reasoning models are more fragile. Irrelevant phrases make reasoning models spend FAR more tokens and get wrong answers #21 AI systems are able to teach experts new concepts #41 An environment providing feedback / rewards enables continuous learning #52 E.g. Multi-robot chemical labs at U.Liverpool and NCSU #60 RLHF has a fundamental flaw: humans reward sycophancy #71 We can read what people are typing from brain signals outside the skull #73 Model intelligence-to-price ratio doubles every ~6 months #94 The AI companies’ valuations are also roughly doubling every ~6 months #181 OpenAI is offering Governments giga-watt campuses to run OpenAI models for citizens #122 A 1GW clusters costs $50bn capex and $11bn per annum #130 China has added ~10X the energy capacity as the US in 2024 #146 NVIDIA challengers are still far away #161 LLMs can “read between the lines” even if training data is censored #268 LLMs can pass information via hidden signals #270 Prediction: A major retailer reports >5% of online sales from agentic checkout. AI agent advertising spend hits $5B. #304 OpenAI’s leadership guide says: Align Explain WHY AI thoughtfully. Set a goal, e.g. everyone uses ChatGPT 20 times/day (Moderna). Use it yourself. Show how. Have business leaders run AI sessions Activate Launch an AI skills proram Set up an AI champions network Encourage experimentation (dedicated time, workshops, hackathons, …) Link to performance evaluations Amplify Create an AI knowledge base Share success stories (weekly) Create internal groups (Teams, Slack, …) Celebrate AI wins Accelerate Unblock AI tools and data access Simplify project selection. Quick feedback, clear priorities Unblock projects with a cross-functional council Give resources to successful teams Govern Publish a responsible AI playbook (what’s safe to try) Audit AI practices quarterly

Things I Learned - 12 Oct 2025

This week, I learned: ‘…as few as 250 malicious documents can produce a “backdoor” vulnerability in a large language model… data-poisoning attacks might be more practical than believed." Anthropic Tim Urban’s 2015 article, The AI Revolution: The Road to Superintelligence, is surprisingly relevant. A key theme is that post artificial-super-intelligence, pretty much anything we know / predict is probably wrong. LLMs are bad at asking questions, so you need to plan on their bahlf first. LLMs are bad at copy paste, so giving them a scaffolding to edit helps. Two things LLM coding agents are still bad at The VPN industry is a consolidating oligopoly that doesn’t offer much security and biases towards affiliates. Who Owns Express VPN, Nord, Surfshark? As of 2025, a fine-tuned DeBERTa-v3-Large / RoBERTa-Large model is better than an LLM at emotion classification. roberta-base-go_emotions is a good starting point if you don’t want to fine-tune. ChatGPT OpenAI defines an AI agent as “a system that can do work independently on behalf of the user”. swyx Brain coding is the new term for human coding - as opposed to vibe-coding (AI codes, human doesn’t review code) and AI coding (AI codes, human reviews code). npx -y emoj lets you type text and pick a relevant emoji. Many people who shifted away from conflict aversion did so by systematizing it. ChatGPT Martin Luther King Jr institutionalized not stepping back from conflicts in his movement. Kim Scott (Radical Candor) practiced caring more via short, specific feedback loops. Kwame Christian (Compassionate Curiosity) practiced ask open questions. Ed Catmull (Pixar) instituted Braintrust to ask candid questions. Ray Dalio (Bridgewater) instituted radical transparency. Many people who adopted a failure-seeking mindset made failure frequent, small, cheap, and informative. ChatGPT Jia Jiang ran a 100-day rejection challenge, acclimatizing himself to failure. Kim Liao (writer) moved from submission-avoidance to “100 rejections/year”. Reshma Saujani (Girls Who Code) built a practice of “brave, not perfect” - ship before perfect. Ray Dalio (Bridgewater) instituted mistake logs and “pain + reflection = progress”. Astro Teller (X, the Moonshot Factory) rewired incentives so teams are rewarded for killing their own ideas early. Sara Blakely (Spanx) set weekly failure quotas. Kathryn Schulz (author of Being Wrong) converts failures into teaching methods. Sindre Sorhus has already created a micro-framework css-extras using CSS @functions. Today, if I had to build agents, here are the tools and environment capabilities I’d ask for: Ask user (for clarifications) Internet tools Search Fetch (CORS-piercing) Scraper with XPath/CSS Selectors Access to llms.txt LLM APIs Summarizer (condenses chat) Sub-agents Coding tools Markdown convertor Code execution (including tests) Browser + DevTools for testing Memory / storage Tool/MCP directory with search Noting a few things that I find #impossible to do today with LLMs: LLMs can’t run experiments / explorations, like trying out on a new tool or web app in an environment, the way I would. LLMs can’t move stuff on my machine, e.g. notes from one list to another, when they’re only on my laptop, not GitHub. LLMs can’t capture the past wisdom in my head, e.g. the distilled principles of data visualization that we applied at Gramener. LLMs can’t prioritize my to-do list based on my preferences and what’s important to me. LLMs cannot write a blog post in my style of writing. When recruiting for people in the LLM era, look for questioning ability, sensible thinking, and how they use AI. Give them lots of fluff and context. Can they cut through it? Is their answer concise and to the point or waffling? Like post the industrial revolution, more people will become operators looking after AI, not craftsmen. This includes coding. zx is a nice JS-based alternative to shell scripts. const branch = await $`git branch --show-current`; await $`dep deploy --branch=${branch}`; docker run -it --name test --user vscode mcr.microsoft.com/devcontainers/base:ubuntu gives you a test Ubuntu image closer to a desktop / user setup rather than a server. Useful to try out apps.

Vibe-Scraping: Write outcomes, not scrapers

There hasn’t been a box-office explosion like Dangal in the history of Bollywood. CPI inflation-adjusted to 2024, it is the only film in the ₹3,000 Cr club. 3 Idiots (2009) is the first member of the ₹1,000 Cr club (2024-inflation-adjusted). The hot streak was 2013-2017: each year, a film crossed that bar: Dhoom 3, PK, Bajrangi Bhaijaan, Dangal, Secret Superstar. Since then, we never saw such a release except in 2023 (Jawan, Pathan). ...

I’m at an open Hyderabad meet-up, Thu 20 Mar 4 pm. “Analyzing data with AI agents”." It’s a public event by Hasgeek. Venue: Castlight Health, Sattva Knowledge Park. We know LLMs suck at number crunching but are good with code. I’ll share what we’ve learnt by getting it to write code to analyze data instead. Less lecturing, more interactive Q&A and demos in a cozy group. Mostly for analysts, data scientists, and programmers. Not so much for LLM researchers or managers. ...

Things I Learned - 09 Mar 2025

This week, I learned: In Jan 2025, ChatGPT included images as part of their data chat export. They also have a 30 second limit for the export. As an extensive user, my export is about 1GB which takes well over 30 seconds to download. Like many others the export option pretty much doesn’t work for me any more. Bharathi said மெல்லத் தமிழினிச் சாகும் in a poem that has been often quoted (and parodied). Here’s the context. The Zettelkasten note-taking method proposes that you: Capture: Write down every idea or piece of information on a separate note. Use your own words to ensure understanding. Organize: Consolidate fleeting notes into permanent ones. Assign unique identifiers to each note for easy reference. Connect: Link related notes to form a web of knowledge. This can be done with tags, references, or hyperlinks in digital systems. Review: Regularly revisit your notes to strengthen connections and discover new insights. I agree with almost every point on this LinkedIn post on scoring candidates for AI roles. Rob Balian Uses DeepSeek R1 or Claude 3.7 +5 points Uses Langchain -5 points Uses Langgraph +5 points (I don’t know enough to comment) Built a RAG in 2023 +3 points Built a RAG in 2025 -3 points “pinecone” -5 points (I don’t know enough to comment) “What is cursor” - 50 points no coming back from this Uses Cursor composer +10 points “You don’t need a full agent for this” +5 points Did hackathons to learn AI outside of work +5 points “We probably need to fine tune for this” -3 points unless you can explain why “Gemini is making a comeback” +3 points (I have a soft spot for Gemini) +3 points each for mentioning reasoning trace, structured outputs, MCP, chain-of-thought, prompt caching, TPM limits “Export to prompt” can be a useful feature in apps (or even as a bookmarklet). It would let you export content in an LLM-friendly Markdown format. You can paste it into an LLM and ask questions. Here are things I would find useful: Copy an entire issue (with history) from GitHub, Gitlab, or JIRA Copy an entire PR (with code changes) from GitHub, Gitlab, or Bitbucket Copy CI/CD logs from GitHub Actions, Gitlab CI, Azure DevOps, etc. Copy entire conversation thread in Gmail or Discourse, Service now etc. Copy product reviews from Amazon, Shopify, etc. Copy page(s) from wikis and content sites like Wikipedia, StackOverflow, etc. Copy survey responses from Google Forms, Typeform, etc. Copy all interactions with a contact (including interactions, proposal history) from HubSpot or Salesforce Copy transcripts from Zoom, Teams, Google Meet, etc. Copy as Markdown from Word, GDocs, PDF or HTML Copy the summary of an analysis as well as all key metrics from any dashboard Copy SAP invoices Copy JDs, CVs, and reviews from Workday, BambooHR, DarwinBox, etc. Copy design specs, component libraries, and style guides from Figma, Miro, etc. Generated with the help of ChatGPT – link not working Ancient languages tend to have fewer words for hues than brightness, since they didn’t need them. So “Krishna was blue” or “the sea is wine-dark” is more an indication of darkness than shade of color. Ajit Narayanan Mistral released an impressive OCR model. Marker from DataLab seems comparable but is CC-BY-NC-SA. MinerU convert medical textbooks to Markdown well. Gemini Flash may be more cost effective and better From How I Write with Tyler Cowen Keep researching. Use LLMs as an altemative to books and other reading material. Keep publishing what you learn regularly. While reading a chapter, keep asking the LLM. What did you think of that? What just happened there? What should I focus more on? What’s puzzling about this? How do I connect this to something else later or earlier in the book? LLM is better used to support you rather than replace you in areas of your expertise. Where you are an expert it’s best for you to be yourself and have AI fill in the gaps. Ask the AI: “What is in my writing that some people might find obnoxious? Or cold / heartless? Explain it to me in great detail.” The first input is context setting and should be really long. Use voice dictation for that instead of typing. Send your blog post to an LLM. No need to explain it. Just let it be the reader and see what it understands and doesn’t understand. His PhD students don’t have a textbook, which saves them some money. But they are required to subscribe to a large language model which ends up costing less. Today, it makes sense to use the best models and pay $200 for it if required. The differences are large. But in some years in the future, the cost of these models may come down for the free versions. Humans know secrets. AI does not. So at least in some areas, humans will have an advantage. Secrets full matter a lot more in the future. Gossip will matter a lot more. How good are you at keeping and trading secret? Travelling and meeting people will become more important. So will the value of social networks. Since everyone has access to better intelligence, the value of mobilization or being able to do things with people will have higher value. Leadership is an example. The value of your network therefore has gone up a lot. There’s more value in prompting one thing 10 times then 10 things one time. Follow up questions work better than long prompts. There are so many AI note-takers (and transcribers) these days that you are not just writing for an AI but speaking for AIs as well! Which model to use: O1 Pro is the best model. Claude does a decent job. DeepSeek is full of hallucinations but is interesting. It is more imaginative. Use O3 mini to write your prompt first, and then ask the model Use DeepSeek and other somewhat wacky high-end models once a day so that you stay in touch with what is models are capable of (beyond the conventional.) Perplexity has entirely replaced Google for many people. Anthropic’s models are the best writers. Gemini is good for long documents and hence for things like legal work. Gemini also has excellent YouTube integration and hands can directly read the transcripts. Grok is very good at fact checking tweets. Converting data into LLM consumable forms will be a huge project. Lot of a knowledge is not in such a form and a huge human project will involve this conversion. Indians do not need a visa to enter Thailand. Ref Build apps (not just content) for agents. In the next 3 to 5 years, agents will surpass humans as the top product users. Reliably creating interactive tutorials is hard today. Claude 3.7 Sonnet ran out of tokens when I tried creating an interactive tutorial on diffraction. Cursor got the tokens but failed to get the application right after 3 attempts. This is not yet reliable, and when it does become reliable, education will change a fair bit. #IMPOSSIBLE Tools and solutions should fit within existing workflows. That means almost all capabilities need to be exposed as APIs. LLMs make many different kinds of errors that are useful to differentiate between. Here are a few Model errors. The model itself makes a mistake. E.g. hallucinations, not following the prompt, etc. Context errors. The model makes a mistake because the question was out of context, or the context was missing. Input errors. The input to the model was parsed incorrectly, e.g. poor audio, poor image OCR, etc. Tool errors. The model’s tools are wrong or not good enough, e.g. Retrieval errors. Most browsers are moving away from third-party cookies. Here’s Google’s recommendation on alternatives. The simplest of these is CHIPS, which requires adding a Partitioned cookie attribute. Notes from AI Engineering Summit, NY, Day 1 An agent requires 3 things: a router, tools or skills, and memory. Agents are often sequential, but sometimes parallel execution makes sense for independent tasks that you consolidate. Always allow LLMs the option of NOT answering a question if there is no good answer. Focus prompts on the happy path. Use guard rails for edge cases. Here are a few “tools” an agent would need to call: Clarification from user Saving to memory Google search Edit a file introducing SPECIFIC changes Search in codebase using embeddings Run scripts on the shell or in a REPL (Python, Node, etc.) Run code in a new container for isolation Automatically discover, read an API documentation and use it Modify environment to enable logging and other system changes. When code is cheap, you can explore more ideas and hence design and product management need to approach things differently. We also need to reaching testing completely because it makes very different kinds of mistakes and we don’t often have an intuition You can have an agent explore all the issues and full request and recent comments against the repository and summarise it for the project manager Notes from AI Engineering Summit, NY. Session by Lux Capital. Agents make multiple LLM calls. Errors accumulate. So the quality of the model is key What’s really critical: data + context + user preference Set up evals for subjective responses by collecting signals continuously. Create scaffolding for agents where errors don’t accumulate. Better yet, make it FIX errors UX is critical. We need lots more UX styles YayText converts text to Unicode that has strikethrough, bold, italics, alternate fonts, and other interesting features. So does Unitextify, ConvertCase, and LingoJam. 10 red flags I look for as an angel investor is an interesting read. No real customers: A deck, a landing page, and a “vision” don’t impress me. Show me paying customers. Even better, show me customers coming back. No path to profitability: I don’t care if you raise $100M – if there’s no plan to make money, you’re just burning oxygen. Growth is great, but cash flow keeps you alive. Founders who won’t sell: If you’re scared to get on sales calls, that’s a red flag. The best founders sell in the early days – whether it’s to customers, employees, or investors. No differentiation: “Like X, but cheaper” isn’t a strategy. If your only edge is price, you’ll get crushed. What do you have that no one else does? No urgency: The best founders operate like time is running out. If you’re “exploring ideas” or “thinking about raising next year,” you’ve already lost. Raising money before proving anything: Too many founders try to fundraise their way out of bad ideas. If you need VC to get off the ground, you’re building the wrong business. No clear distribution strategy: Product alone doesn’t win. First-time founders obsess over features. Second-time founders obsess over distribution. How are you getting customers? No ownership mentality: If I hear “I need to hire someone to do that” too early, I’m out. Founders who win figure things out before they delegate. A CEO who can’t attract talent: Your first hires are everything. If great people aren’t willing to join, either the vision is weak – or you are. No skin in the game: If a founder won’t invest their own money or take a pay cut to make it work, why should I? By contrast, this OpenAI Deep Research report feels a lot less actionable. Inception Labs offers “Diffusion LLMs”. (No API yet.) They start with random text and refine it in parallel. The benefit is: It’s faster and cheaper due to parallellalization and better GPU use It doesn’t commit to tokens and can fix hallucinations, JSON structure errors, reasoning fallacies, etc. It’s better with multi-modal since images are diffusion based already.

2024 1

Things I Learned - 31 Mar 2024

This week, I learned: sqlite-schema-diagram generates schemas for SQLite databases using Graphviz TechEmpower web server benchmarks place Rust servers on top browser.new is a good example of a browser agent. It slowly but independently does a good job of achieving the result. Example: What crew is common in Ingrid Bergman - Cary Grant films? twinny is an open source VC Code Copilot alternative. typesense supports embeddings natively. Binary embeddings are good enough. Cohere releases binary embeddings. Extract.langchain.com is a poor early interface to featurize unstructured.io Hume.ai offers voice emotion API and emotion-based conversational responses. An empathic AI. Rust is non-trivial. Inspired by We are under DDoS attack and we do nothing, I “wrote” a small binary that serves a parquet file as JSON. It failed and I couldn’t fix it. spleeter is a better alternative to demucs. Splits audio into pyannote-audio does speaker diarization uvicorn is faster than hypercorn but hypercorn supports HTTP/2 and HTTP/3. FastAPI with uvicorn is reasonably fast. Representational engineering lets you control LLM output based on preference on the fly. When I set up a training: On inviting for DuckDB workshop on Sun evening, Gramener starts accepting immediately, Straive doesn’t. Straive has high spread of joining time. When joining Gitlab Pipelines Workshop, Straive starts meeting (e.g. Premlal) many minutes early. Gramener floods in (due to alert). Straive streams in slowly. Gitlab Pipelines Workshop acceptances: Gramener 47, Straive 100