I dove into trauma recovery, the complex social structures of ants, and the history of genetics. On the tech side, I found useful tricks for GitHub Copilot, npm, xz compression, and uv inline script dependencies.

This week, I learned: The Body Keeps the Score by Bessel van der Kolk argues that trauma is stored in the body, not just the mind. Claude Trauma recall shuts down Broca's area (speech). Trauma survivors literally struggle to talk about trauma. Our nervous system has a calm social engagement state, a fight-or-flight state, and a freeze or shutdown state. For trauma survivors, the nervous system gets stuck in fight-or-flight or shutdown. (Based on the contested Polyvagal Theory.) Childhood trauma leads to several major health problems - heart disease, autoimmune disorders, depression, addiction, ... Recalling traumatic memories while following a therapist's finger with your eyes (EMDR) works. Yoga is promising but unproven. Neurofeedback (altering brainwave patterns with EEG feedback) even less proven. Clearly, trauma is stored in the body, not just the mind. We might need to rethink therapy. The Extended Phenotype by Richard Dawkins argues that genes shape not just the organism but the environment too. Claude In The Selfish Gene, he proposed that organisms are "survival machines" for genes. In this book, he extends this idea to show how genes can influence the environment beyond the organism's body. The dam of the beaver, the brain of an ant infected by a parasite, gut bacteria, are examples. Critics argue that this may be tautological. It's hard to falsify. It's more a mental model than a theory. Also, there's critique (see below). The general view is that there's merit to both perspectives. Epigenetics: Dawkins argues that only genes are inherited. But some RNA, proteins, and epigenetic markers are also be inherited. Developmental plasticity: Dawkins downplays the role of environment in shaping phenotypes. Multi-level selection: Gould argues that selection happens the organism and group levels too. Niche construction: Dawkins says genes modify the environment. But environments modify genes too. The Structure of Evolutionary Theory by Stephen Jay Gould expands on Darwinism, suggesting there's more than only natural selection. Claude Darwinism proposed continuous, smooth evolution. Gould proposes punctuated equilibrium - stable periods interrupted by rapid change. Fossils support this. Darwinism proposed selection of individuals. Gould proposes hierarchical selection - genes, individuals, groups, species. This is debated but has merit. Darwinism proposed every feature has a reason. Gould suggests some are byproducts of other adaptations (spandrels). Not every trait is adaptive. This is generally accepted. Darwinism proposed that humans would evolve if we replayed history. Gould argues that it's chance. Current opinion is convergence, i.e. something like us would still likely evolve. (He probably didn't need to write such a long book over 20+ years for this. Also, it led to the Darwin Wars, mostly with Dawkins.) The Gene: An Intimate History by Siddhartha Mukherjee explains the history of genetics. Claude Mendel's pea experiment numbers seem too neat. He probably didn't fudge it but stopped at good results. Rosalind Franklin's X-ray diffraction images were key to discovering DNA structure, but she didn't get enough credit. Recombinant DNA (1970s) lets us copy-paste genes between organisms. E.g.: we can find the DNA sequence for the insulin protein in humans, copy it into bacteria, and have bacteria produce insulin for us. How it works: Restriction enzymes cut DNA at specific sequences. E.g. EcoRI (from E. coli) cuts DNA at GAATTC. Many cut with one strand overhangs that stick to complementary sequences, making assembly easy. DNA ligase paste DNA strands together. Plasmids (circular DNA in bacteria) are vectors that carry foreign DNA into host cells. We can paste DNA to plasmids and introduce them into bacteria. Some viruses work similarly for animals / humans. This is useful for creating medicines, crops, and gene therapies.: Medicines: e.g. insulin, human growth hormone, clotting factors for hemophilia, vaccines (Hep B), erythropoietin (EPO) for anemia, cancer therapies, focused antibodies, etc. Agriculture for genetically modified (GM) foods: pest/drought-resistant crops, biofortified foods (Golden Rice with Vitamin A), nitrogen-fixing plants, etc. Gene therapy: replacing faulty genes to treat genetic disorders (inherited blindness, immune deficiencies, blood disorders, muscular dystrophy, etc.) This is risky because of the unintended consequences, equity, and long-term risks: Unintended consequences: Crop genes can spread. Herbicide-resistant weeds have emerged. Equity: Corporates control gene patents, concentrating power and limiting access. Only the rich can afford gene therapies. Long-term risks: Biological weapons, ecological disruption, new diseases, etc. The Human Genome Project (1990-2003) sequenced the entire human genome (3.2 billion base pairs). This helps identify disease genes, understand genetic variation, and develop personalized medicine. They chopped the DNA into small pieces, multiplied them using bacteria, paired them with colored markers to read them, and reassembled the full sequence using overlapping regions. We have 20-25K genes. 99.9% is the same between humans. The 0.1% accounts for ALL human diversity. A lot of the genome is not for protiens, but for regulation, i.e. when and where genes are expressed. This enables pharmacogenomics, i.e. custom drugs. Read a genome and predict which drugs will work best. Also targeted cancer therapies, i.e. read the tumor genome and design smart bomb drugs. Ancestry and crime solving. Find distant cousins, catch the Golden State Killer, etc. We can sequence our genome for $600 in 24 hours and it's falling. (Analysis is expensive.) CRISPR (2010s) lets you edit genes precisely. These "Clustered Regularly Interspaced Short Palindromic Repeats" are in bacteria. When bacteria survived a viral attack, they store a small piece of the enemy DNA in their own genome to recognize it. Cas9 is an enzyme that cuts DNA at a specific location suggested by Guide RNA. It unzips the DNA, matches the guide RNA to one strand, and cuts both strands. This disables the gene. Or, we can insert a new DNA sequence. This has been used to cure sickle cell anemia (which has a 'GTG' instead of 'GAG' in the hemoglobin gene, changing glutamic acid to valine) by editing bone marrow cells (not to fix this - that's hard - but to reactivate a fetal hemoglobin gene). This is FDA approved. Scientists are trying to edit the Asian Elephant to include woolly mammoth traits, make spicy tomatoes, etc. Risks: CRISPR might cut a SIMILAR but unintended gene. We can edit genes for better humans (like in Gattaca) and create edited species. Epigenetics is about how gene expression (not the DNA) changes based on environment and lifestyle. Epigenetics has 2 mechanisms. First, DNA has tags (methyl groups) that turn genes on/off without changing the sequence. Second, DNA is wrapped around protein "spools" (histones). Tight wrapping hides genes, loose wrapping exposes them. In the Agouti Study, mice fed methyl-rich diets had brown, healthy babies. Mice without it had yellow, obese babies prone to cancer. Queen bees are identical to worker bees genetically, but royal jelly changes their epigenome to make them queens. Grandchildren of the 1944 Dutch famine survivors have higher obesity, heart disease risk. Epigenetic changes are inheritable. Epigenetics inherits via sperm by (a) retaining 1-10% of histones wrapped around important genes, and (b) small RNA molecules that regulate gene expression. Epigenetics inherits via eggs by (a) retaining several histones and (b) impact of the fluid environment in the womb. Also, mother eggs were developing when she was a fetus in grandmother's womb, so grandmother's environment matters too. Mother epigenetics affects 3 generations. Fathers affect only 2. There are 100-200 imprintable genes that determine whether the dad's or the mom's gene is expressed. Growth is one example. E.g. dad IGF2 gene pushes for growth, while mom H19 gene limits growth to conserve resources. Lions have strong "grow/stop" genes. Tigers have weak ones. Ligers (Lion dad, Tiger mom) are huge. Tigons are small. Eugenics is about improving humans by controlling breeding. Invented by Francis Galton (Darwin's cousin) who founded psychometrics (IQ tests), fingerprinting, correlations, questionnaires, anthropometry (measuring humans), and a female attractiveness map of the UK (London >> Aberdeen). He suggested that the best humans breed, and the worst be prevented. The US and many countries adopted this (1900s). E.g. Buck v. Bell (1927) said forced sterilization of "feeble-minded" people was legal. Oliver Wendell Holms: "Three generations of imbeciles is enough." The last euginic law sterilization in the US was in 1981. California prisons sterilized females (2006-2010). Nazi Germany industrialized this. Deaf, blind, mentally ill, then eliminate gene pools. CRISPR and gene editing lets us design babies - another form of eugenics. Iceland and Denmark have eliminated Down syndrome births through screening and selective termination. It's a bit controversial. Sketch note Immune: A Journey Into the Mysterious System That Keeps You Alive by Philipp Dettmer explains the war our immune system wages daily. Claude Immunology is, as science writer Ed Yong memorably put it, "where intuition goes to die." It's the kind of subject that makes medical students weep and practicing physicians throw up their hands. We have an innate immune system. Genetically programmed for common pathogens. Fast, but limited. Like: Macrophages: beat cops that patrol tissues and eat dozens of bacteria before dying. Neutrophils: SWAT team that rush in, spray toxic chemicals (with collateral damage), and die. They rip out their own DNA to make nets that trap bacteria! Natural killer cells: bouncers that kill cells without an ID or have been infected (cancer, virus). Dendritic cells: spies that capture pieces of invaders and present them to the adaptive immune system. Mast cells: alarms that explode and release histimine (causing inflammation) to call for backup. Eoisinophils: bombers that drop toxic enzymes to melt parasitic worms too large to eat. The adaptive immune system is smarter and slower (days to weeks). It generates millions of cells with random DNA to create a 3D sheet with loops to grab specific antigens. It combines: 40 Variable segments: "gloves" of 95 amino acids to grab antigens. Like a 4x4 lego brick. 25 Diversity segments: "fingers" of 15 amino acits for the glove to grab better. Like a 1x2 lego piece. 6 Joining segments: "tips" of 3-5 amino acids to connect glove to arm. Like a 1x1 stud. It randomly chews off a a bit from the ends and adds a few random bits to create 10^15 potential combinations. When a new cell is born, the Thymus (near the upper chest) tests if it can attach to invaders and whether it's peaceful to body cells. Failing cells are killed. 2% survive and go to the lymph nodes. These can be: Helper T cells: generals that coordinate the immune response by activating B cells, killer T cells, and macrophages. Killer T cells: soldiers that inject toxins into infected cells to kill them. B cells: factories that churn out antibodies that stick to invaders, gum them up, and tag them for destruction. When we get sick, the dendritic cell grabs an antigen (piece of an invader), sends it to the nearest lymph node, and if a Helper T cell recognizes it, it activates the B cells and Killer T cells specific to that invader. This can take days, and multiplies 1,000x every 2 days. Also, the B cells divide with intentional mutations and evolve to find mutants that catch invaders better. Better fits multiply faster. "Immune boosting" is a misnomer. We really want balance, and diet, fruit, vitamins, antioxidants, probiotics, sleep, exercise, stress reduction, social connection, etc. help. But vaccines are the best way to train the immune system. Every breath and meal draws in invaders. They're catalogued and tolerated or destroyed. It's incredible! Measles reduces immune memory 11-73%, wiping out years of immunity to other diseases. So, when I had measles in 2009 after my splenectomy in 2004, I had a double whammy. Damn! Didn't know that. Sketch note Some books, like The Choice, aren't meant to be summarized. I can't even summarize the summary. The Origin of Consciousness in the Breakdown of the Bicameral Mind by Julian Jaynes proposes that introspective consciousness emerged 3,000 years ago. Unproven but unfalsified. Claude He theorizes that until 3,000 years ago, the right part of the brain generated "voices" the left part obeyed. The Iliad heard voices. The Odyssey has a self-aware hero. That's why ancients across cultures heard gods' voices. Idols were meant to trigger these voices. Kings literally spoke for the gods. People didn't feel responsible for their actions. With population growth, writing, and the Bronze Age collapse, humans were forced to adopt alternate cognitive strategies, leading to consciousness. That was also when philosophy, introspective religions, and new forms of literature emerged across the world. The Axial Age. Schizophrenia may be a vestige of this bicameral mind, where the right brain's "voices" are misinterpreted by the left brain. Hypnosis, oracles, and creative muses are other remnants. Neurological support is weak but literary/cultural analysis is strong. His theory hasn't been falsified. The Slight Edge by Jeff Olson suggests small, consistently repeated actions. Claude Small actions compound exponentially. But what's easy to do is also easy to skip. Quitters stop because it feels like small actions don't matter - leading to exponential decay. Willpower is overrated; time is underrated. What to do: Show up. Consistently. Even if no one's watching. Commit long-term. With optimism and purpose. Pay the price. Also: Happiness isn't just a result of success. It's often a cause. And habits also influence people around us. Why We Sleep by Matthew Walker elevates the importance of sleep - but also exaggerates. Claude Sleep has phases. In the first half, deep sleep (NREM) dominates. It consolidates memories. Then REM dominates. Dreams, connections, creativity, emotional regulation happen here. It resets brain and body health. Sleep deprivation worsens focus, memory, immunity, metabolism, heart health. Phones, caffeine (5-7 hours before), alcohol, early alarms, irregular schedules, late meals, warm bedrooms - all hurt sleep quality. But a lot of claims are exaggerated, unproven, or false. Sleep loss isn't a WHO epidemic. More sleep != longer life, it can shorten it (7 hours seems optimal). Sleeping high insulin -> cells become insulin-resistant. Feeding them insulin can harm, sometimes. Weight loss can definitely reverse it. Reducing carbs & preferring whole foods helps. Intermittent fasting likely helps. But "sugar is the main driver of Type 2 Diabetes" isn't research-robust. Genetics, sleep, stress, gut microbiome, socioeconomics contribute. Diet & fasting are hard to sustain, and isn't for everyone. The Obesity Code by Jason Fung suggests whole foods and intermittent fasting. Claude Eating whole foods (rather than processed foods) does help. Fasting does help. (But maybe no more than reduced calorie intake, and sustaining it could be harder.) But his claim that high insulin -> obesity isn't research-robust. It may be correlation not causation. ⭐ How Minds Change suggests that friendship, more than facts, changes opinions. Sometimes your own, too. Claude Facts backfire (though less often than the book indicates). Challenging identity is a survival threat. Asking genuine questions and actually listening enables change. (It might change you, too.) "How did you come to believe that?" "How confident are you (1-10)?" "What would it take to move that number?" helps introspect. Relationships create safety to question beliefs. Lasting change requires somewhere new to belong. My most used GitHub Copilot feature is tab completion. It's surprisingly effective for note-taking (which I do more than code-writing ever since coding agents arrived.) Tab completes the suggestion and Esc cancels it. I'm beginning to use Alt + ] and Alt + to cycle through multiple suggestions. I'm amazed that it can act as a: Calculator/convertor. E.g. "9 \ 86400 =", "5 miles in km is" or "3 days ago, i.e. on" Referrer. E.g. "The Attention Is All You Need paper at https://" or "The Pulitzer winning book Ants by" Educator. E.g. "The top 3 causes of cancer are" Ideator. E.g. "5 wild ideas for sneakily improving productivity are" If you see a smooth, glassy patch surrounded by ripples, it’s usually because a thin surface film or local surface flow is damping the tiny wind-made waves there, not because the water underneath is calmer. [ChatGPT Glassy patch surrounded by ripples Lifespan and The Telomere EFfect suggest exercise, sleep, eat well, manage stress to live longer. Claude Actually, they mainly suggest sirtuins, resveratrol, NMN, telomere-lengthening lifestyles, etc. to defeat aging. None of this is research-proven. The traditional advice is the only proven stuff. Outlive suggests exercise for living longer - and to make sure your life is worth extending! Claude Medicine focuses more on cure than prevention. Exercise has the highest impact on longevity. Especially zone 2 cardio and body strength (e.g. measure grip strength). apoB under 80mg/dL is a better indicator of heart risk than LDL. But make sure your life is worth living! Katy Milkman's How to Change suggests that biases are hard to change. Engineer environments and habits instead. Claude Breaking bad habits is hard. Start on a New Year, birthday, festivals, etc. for ease. Breaks in continuity erase good habits. Be flexible for continuity (e.g. 7/week is more flexible than 1/day is more flexible than once every morning). ⭐ Daniel Kahnemann's Noise suggests experts are more random than we think. Claude When execs (or students) complain, "Oh, but the LLM aren't consistent!" -- nor are humans! Get multiple INDEPENDENT opinions Use CHECKLISTS to reduce variability Use ALGORITHMS to spot outliers Acknowledge luck, good or bad. Leverage serendipity Notes from awesome-npm # npm run command --silent suppresses npm output, only shows script output. npm start and npm test are the conventions to run the app / server and test. Use these more. npx --package=node-bin@6.2.0 -- node --version lets you run any node version without nvm, etc. npm link installs package in the current directory as a global. You can link to it from any other package via npm link . npm install owner/repo installs directly from GitHub. npm ls --depth=2 shows dependency tree up to depth 2. rclone mount over SFTP is the worst-case for thousands of tiny files. Every stat, readdir, unlink is an extra network round-trips, taking 1s per operation. I'm switching to rsync instead for my Hetzner storage box. # Context: I set it up via: rclone config create hetzner sftp host $USER.your-storagebox.de user $USER shelltype unix ... and mounted it via rclone mount hetzner:/ /mnt/hetzner --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 10G The Molecule of More and Dopamine Nation recommend pain as a down-payment for sustained pleasure. Claude Dopamine drives wanting/dread, which is decoupled from like/dislike. It also does a bunch of other things like learning (maps actions to rewards), attention, etc. Low dopamine => focus, medium => creativity, high => noise. Brain runs a thermostat. Pleasure/pain trigger a delayed, long-decay counter-reward that we feel as "That's it?" or "Whew!". Abstention just resets it. Meditation just makes you aware. Pain-upfront leads to long-decay pleasure: learning/teaching, creative struggle, exercise, ice showers/sauna, fasting, spicy food, cleaning, tough conversations, apology, forgiveness, public speaking, dating, deep work, delayed gratification, investing, grief, sacrifice, boredom, etc. Surprises spike dopamine: low standards, variable rewards, interleaved work, artificial constraints, environment/social rotation, progressive difficulty, ... Dopamine mechanics are complex. Don't trust any theory just yet. ⭐ Pain is the down payment. Surprise is the interest. Recovery is the compounding period. Sex at Dawn claims humans evolved as promiscuous and non-jealous, that monogamy is recent. It's partly valid (sexuality is more flexible and context-dependent than monogamy / nuclear families) but is also over-simplified with cherry-picked evidence. Claude Discovered the --extreme option for xz, which compresses even better (but slower). For archives, I now use xz -9e -vv file. Single-threaded is slower but better for compression, so don't use -mt. For ultra-large files, add --lzma2=dict=256MiB or similar, keeping dictionary size smaller than RAM and file size. # You can specify a git repo as an inline script dependency directly in a .py file when running with uv! # Excuses are a great way of making us feel better. They are synonyms for "reasons". They reduce guilt/anxiety, lower standards -- all of which could be considered bad -- but if we are aware of it and use it consciously, it can help us move forward. (Rare TIL from my own brain, not an LLM.) You can open AI chatbots with a pre-populated query using these URLs. Gemini, notably, does not yet support this. ChatGPT: https://chatgpt.com/?q=%s Claude: https://claude.ai/new?q=%s Google AI Mode: https://www.google.com/search?udm=50&q=%s Grok: https://grok.com/?q=hi Mistral: https://chat.mistral.ai/chat?q=%s Perplexity: https://www.perplexity.ai/search?q=%s A clever trick to prevent voice models from speaking too quickly. Use a "stay silent" function call. Ref

Things I Learned - 28 Dec 2025


I replaced lxml with selectolax, managed Python environments with uv, and tested GitHub Actions locally using wrkflw. I also explored habit engineering, task parity in AI, and used markitdown to convert websites via CLI.

This week, I learned: selectolax is a fast, easy-to-use, modern HTML5 parser with CSS selectors. A good replacement for lxml.html. The most effective way to convert a blob (e.g. file input) to a data URL on the browser seems to be via the FileReader API. Tool calls in OpenAI support files and images. OpenAI ⭐ "Task parity is not the same thing as job parity There is a lot of complexity as many different tasks are bundled into jobs, and many jobs contribute to processes inside an organization The jagged frontier of AI ability means doing tasks well doesn't translate to doing jobs well." Ethan Mollick Adding // @ts-check to a JavaScript file and documenting types via JSDoc might be the simplest way to migrate phase-wise from JS to Typescript. envsubst < file.txt replaces file.txt with the environment variable, e.g. $HOME is replaced by the HOME environment variable. Clean shell-level templating. GitHub Copilot CLI is out. npx -y @github/copilot Compost is the cheapest thing per ton that I can buy on Amazon India. I can buy 1 ton of compost for Rs 13,500. ChatGPT yt-dlp requires Deno from now on. #14404 In meetings, make cameras optional by default -- and judge engagement by contributions, not video -- because a 4-week field experiment found camera-on increased fatigue and reduced voice, especially for women and newcomers. Camera on early for trust building is useful. PubMed wrkflw is a quick and light way to test GitHub actions before publishing. It runs GitHub actions locally. GPT-5-Codex is available as an API and on LLM. Simon Willison ⭐ I'm habit engineering, i.e. discovering and stacking habits on to existing ones. For example: ChatGPT suggested increasing observability based on code reviews. I'm including it in my weekly codecast. ChatGPT suggested defining closures inmeetings. I'mn now discussing objectives at meeting starts and effectiveness at the end. Since Anaconda cannot be used for free by organizations with 200+ people, Straive's received legal notices from Anaconda. Since laptops are under central IT administration, they went ahead and deleted all Anaconda instances. Installing miniconda for use with conda-forge requires admin access that most developers do not have, however. That leads to an interesting "No Python" situation. This is where uv becomes the knight in shining armor. Perceptron is SOTA LLM for object bounding boxes. Just 2B parameters. Gall's "law" says that complex systems that work evolved from simple systems that worked. But a complex system designed from scratch won't ever work. This holds in uncertain environments. But where formal theory or regulations exists, it doesn't. ChatGPT uvx --with visidata vd gives you a command-line Excel editor to edit / convert CSV, Excel, JSON, SQLite, directories, etc. uvx markitdown https://example.com/ fetches example.com as Markdown. I learnt this when I told Codex it could use uvx markitdown to convert PDFs and it figured this part out by itself. The Dropbox connector for ChatGPT is the little flaky -- at least on Android. It could not identify a file that was clearly there in Dropbox and I had to upload it manually. ChatGPT's output is too dense for me. I added this to my custom instructions: "Write in simple language. Explain non-obvious terms intuitively." yt-dlp has a --download-sections option that downloads specific YouTube time ranges. For example --download-sections "00:01:00-00:03:00" downloads roughly (not exactly) from 1 min to 3 min. Note the at the beginning. My Lenovo laptop's touchpad started scrolling instead of moving when I moved my finger. Many things could have caused it, but the solution was to click (not tap) the top middle of the trackpad. ChatGPT The India Entrance Exam database is a dataset collating Indian entrance exams.

Things I Learned - 28 Sep 2025


I explored Cloudflare sandboxes, learned why Vertical AI is a defensible moat, and refined my video workflow using ffmpeg. I also researched essential human skills like trust and taste that remain vital in an AI-driven economy.

This week, I learned: "People are great at feedback on what you are doing wrong. They are not so good at telling you how to fix it. They don't know you that well." Amit Kapoor Perfect Cursors makes periodic cursor positions animate smoothly by interpolating on a spline\\ CloudFlare and Vercel now support sandboxes where you can execute code. The price is not so low that we can execute for free in bulk but works well infrequent or batched code execution. Simon Willison Here's how I'm using ffmpeg for video recording & editing. To record screen at 5 frames per second, I run an abbreviation screenrecord which maps to: Gemini CLI has a generous free tier and uses Bootstrap over Tailwind Ref #ai-coding Cloudflare has a native agents SDK that looks good, especially for CloudFlare users. Ref There are several brands with recognizable chart style guides. It's possible to generate style guides for these from the charts, but applying them via matplotlib is almost #impossible today. ChatGPT Hyperfine is like %timeit for the shell. Written in Rust ⭐ Vertical AI is a moat against AGI. Specialization reduces hallucinations. Custom workflows and regulations are sticky and defensible. We need to start selling to users, not IT, though. Ref When AI automates a task, the bottleneck shifts. AI process re-design is about reworking the process around the new bottleneck, and iterating quickly. With coding, it's testing, reviewing, deploying, use-case identification. uvx git-smart-squash re-organizes haphazard commits using LLMs. git-smart-squash #ai-coding GitHub offers a free Docker container registry. Simon Willison There are three major areas where humans either are, or will soon be, more necessary than ever: trust, integration and taste -- NYT. Anil. To deal with this: Learn things that might grow in importance, like: Data modeling APIs Code reviews Drawing and 3D modeling Narrative storytelling Design Movie making Statistics Sceptical fact checking Continuous AI auditing e.g. awesome-continous-ai or automated-auditing Zero knowledge proofs Homomorphic encryption Privacy-preserving computation Fingerprinting and watermarking Governance frameworks Ethics and AI dilemmas Negotiation Change management Remote working, management, hiring Creating attention scarcity Local cultures Work with people of growing importance People designing products in regulated industries Cross domain experts Art developers, game makers, designers System thinkers. Economists, ecologists, system planners. People who look for second order effects. Live in cities that might play a bigger role in the future Cities like Singapore and learn how it builds civics trust, creates digital IDs. Cities like Bangalore and Hyderabad and learn how they grow tech talent Creative cities like Paris, Seoul, Mexico City, Berlin, etc. on sabbaticals to taste hubs Try to: Build auditing credentials and IP Audit your calendar for what AI can do. Have it interview you Practice sceptical fact checking and audit A clever way to test a library's quality is to have LLMs write code from docs and test it. Failing libraries have flawed code/docs. Improve. Ref #ai-coding Common Pile is an 8TB open dataset for LLM training that includes ArXiv, PubMed, StackExchange, GitHub, IRC, Regulations.gov, Patents, UK parliament, books. Easier than scraping. A useful way to have reasoning models do deep-research-like work is to have them "First, create a plan to solve the problem, clearly listing the objective, approach, and output. Then follow the plan." DE-COP is a method to check if LLMs were trained on private content. GPT-4o was trained on O'Reilly books, based on this method. Ref LLMs are more persuasive than humans. But repeated exposure reduces the effect. Ref Phoenix.new uses live views to publish apps as it codes. The testing framework looks at the screen while it codes and fixes errors. It commits every change Anthropic system prompt asking Claude to pursue its goals led to self preservation behavior. Ref The hungrier I am the better the food tastes. A good reason to eat less quantity and frequency You can purge the jsDelivr cache manually. Helps if you released a new version of a package and way to purge an alias (e.g. https://cdn.jsdelivr.net/npm/your-package@1) XConvert is a convenient online app to compress .webm videos. Not great design but fairly good compression. You can draw a treemap of import times via python -X importtime app.py > timing.txt and then paste them at . PyOpenLayers adds interactive mapping via OpenLayers to Marimo and Jupyter. In a TechCrunch interview with Jared Kaplan has was asked if Anthropic is becoming less safety conscious because they released Opus 4 which blackmails. Kaplan replied that they have stronger testing and higher transparency, so they're more likely to share AI dangers early. Great positioning! Conversations are about perspective change and this nailed it. The system prompts for Anthropic misalignment evals are a fascinating read. AI PR Watcher tracks GitHub pull requests from Codex and other LLMs. Codex is way ahead of anything else on volume and success rate. Devin is next on volume, Cursor is next on success rate.

Things I Learned - 29 Jun 2025


I tested AI coding tools like Aider, explored MCP servers for automating SaaS tasks, and compared the latest models like Gemini 2.5 and GPT-4.5. I also delved into CRDTs, spatial hash indexing, and why I now prioritize evals for LLM projects.

This week, I learned: Discussion with Vedang Recurse center (Brooklyn, online) is a 6/12 week free self-driven programmer retreat. Runs every 6 weeks. You can do whatever you pick. There are daily standups for accountability. The groups are diverse. You can pair with them, pivot ideas, whatever. Principles: push yourself & learn. Western education techniques (e.g. spaced repetition, adaptive learning) are very much present in Indian coaching systems, though not known by those names. However, interventions are hard since class 12 students just don't have enough time. Coaching classes are a social phenomenon. It's not the smart students who are pulling in their friends. Smart students actually follow the popular students. (Coaching classes are below the typical smart students' standards.) Monetizing coaching is hard. People don't want to pay for advice, and welcome free advice only if they ask for it. Coupling with execution is necessary. Aider's integrations make it more powerful than Cursor/Windsurf. It auto-lints, runs test cases. Allows different models for "architecting" (generating changes) vs "editing" (applying code). It reads from the screen logs. Context is manual, not automated. Uses an ai! comment to trigger changes and ai? to ask questions. Cline.bot is another Cursor-like open source AI code editor that's a VS Code plugin. When coding with LLMs, a useful workflow is: data schema ➡ interfaces ➡ LLM-generated test cases ➡ code. ShellSage is a tmux based LLM tool for the command line. It screen-grabs from tmux, which is powerful. Some MCPs that have proven useful: vega-lite, SQLite, sequential thinking, memory make sucks but is hard to beat. just comes closest. CRDTs are more powerful than for just collaborative editing. It can power a peer-to-peer Internet (beginning with office tools). Versioning schema is still problematic. yjs is a good start but automerge (Rust, WASM) is faster and may be better. Loro is another. Fermyon hosts WASM serverless functions. If LLMs are most safely used where there's no definitive "wrong" answer, here are low-risk industries and safe LLM use cases within each: Marketing and Advertising: Ad Copy and Campaign Content Generation, Personalized Marketing Messages, Creative Strategy Brainstorms, Automated Marketing Production (Everyday Wins) Customer Service and Support: AI-Powered Chatbots for Common Queries, Agent Assist and Email Drafting, Summarizing and Analyzing Customer Feedback, Interactive Troubleshooting and FAQs Retail and eCommerce: AI-generated Summary of Product Reviews, Product Description and Catalog Content Generation, Visual Content and Image Captions, Personalized Shopping Recommendations (Narrative Form) Human Resources and Talent Management: Job Description and Policy Writing, Resume Screening and Candidate Q&A, Employee Communications and Feedback, Training and Onboarding Content Education and E-Learning: Personalized Explanations and Tutoring, Content Creation: Stories, Examples, and Analogies, Practice Problems and Quiz Generation, Automated Grading and Feedback Media and Entertainment: Writing and Editing Assistance, Personalized Media Content, Localization and Dubbing Scripts, Content Moderation and Curation (Assistive) Finance and Banking: Market Commentary and Research Summaries, Client Communications and Explanations, Regulatory Compliance Summaries, Scenario Analysis and Planning Management Consulting and Strategy: Research and Insight Generation, Document and Slide Drafting, Brainstorming and Scenario Planning Legal Services: Drafting Contracts and Legal Documents, Legal Research Q&A and Summaries, Client Communications and Explanations Reflecting on Satya Nadella's "SaaS is dead", building or porting apps' functionality into classic chatbots (e.g. via MCPs) would be an emerging market. E.g. "Create a HubSpot MCP. Do whatever you want on HubSpot, except via ChatGPT or your favorite LLM chatbot." To be fair, such interfaces exist. HubSpot MCP with a vega-lite MCP and a few others could solve many common HubSpot UI tasks. DarwinBox MCP, ZenDesk MCP, etc. are emerging. 13 things I would have told myself before building an autorouter has a few interesting points: The A\ algorithm finds the shortest path in a graph much quicker than others like Dijkstra's algorithm by preferring nodes closer to the goal. Spatial Hash Indexing are O(1) and beat Tree Data Structures which are O(log n). Always prefer hashes when possible. There's an actual convention for using emojis in Git commits: gitemoji. It even has a VS Code plugin, a changelog generator, and more. Emojis have a strong role in enhancing Markdown documents. The ones I use often are: 🔴🟡🟢 for low/medium/high priority ⭐ or ❤ or 👍 for ratings or emphasis ✅ for completed tasks 💡 for ideas ⚠ or ❗ for warnings / issues Technological innovations have always been changing art forms. For example, the perspective grid and the camera obscura led to major improvements in realistic paintings in the 15th and 17th centuries. regex is an officially recommended Python library with better regex support than re. Ref Notes from ThursdAI - Mar 27 Gemini 2.5 Pro has good instruction following despite long context. It automatically thinks for longer where required. Good at understanding large codebases. Very fast. You can upload a 2 hour audio to transcribe with timestamps. ai.dev is the shortcut to Google AI studio. ChatGPT native image generation is the best image generation model now. - Great character consistency AND prompt adherence thanks to autoregression and not using stable diffusion. - It tends to refuse image generation less than Dall-E. (While Ghibli-style is possible, Calvin and Hobbes strips are blocked.) "We added a refusal which triggers when a user attempts to generate an image in the style of a living artist." Addendum to GPT-4o System Card - A neat personalization implication is that you could put your kids into their favourite cartoon as a cartoon character that looks like them. It's weird that the latest GPT 4o is ahead of GPT 4.5 on LM Arena. The new DeepSeek V3 is about as good as GPT 4.5 and VERY cheap (27c), so is the obvious choice to run on OpenRouter. MCP news: Qwen.ai supports MCP in the UI! (But it's marked as "coming soon" in my case.) Unlike tools, MCP uses servers that can remember the state or context. Tools are stateless. MCP app store like Smithery, MCP.run, Glama, are mushrooming. Awesome MCP Servers is another good starting point. Azure lets you expose agents as MCP servers. ChatGPT now uses semantic VAD. I interrupts less and typically when you have meaningfully complete something. It responds a little slower as a result. AI generated images created from prompts cannot be copyrighted. News US Copyright Office LLMs are much better at GeoGuessr than humans. arXiv. Gemini leads the pack and is 3x better at continents, 9x better at countries, and 37x better at cities. Gemini 2.5 Pro transcription has accurate timestamps and bounding boxes. Simon Willison Notes from Writing with AI Personal writing with connection won't go away. AI can't give you heartbreak. But the rest of non fiction writing will vanish. What AI is extraordinary at is personalizing to each audience member's interest Outlier opinions will thrive among humans - since AI is trained on consensus. Managers tend to be good at working with LLMs because it's mostly about delegation. LLMs are perfect for things that don't have a wrong answer! -- Benedict Evans. 💡 Explore arguing with AI. It's a safe way to get into a confrontational emotional state (which has its own benefits.) 💡 Keep an LLM on in voice mode while reading and ask it any questions you have. What models are good for what? GPT 4.5 is great for creation - has a great sense of humor but a corporate style. Still, way better than GPT 4o. ChatGPT is good for voice transcription and note taking. (Increasingly we take notes for AI rather than ourselves.) Claude 3.7 has the best style of writing. It's also great for drawing charts. O1 Pro and Deep Research is great for consumption - research. Grok is the least corporate, able to argue with you, and the latest knowledge cutoff. ElevenLabs for editing podcasts in your voice, making corrections. Playwright offers an MCP server. https://simonwillison.net/2025/Mar/25/playwright-mcp/ The new GPT-4o mini Transcribe model is a bit better than Whisper and costs half: 18 cents per hour. It includes background noise cancellation and semantic chunking, which is useful. The new GPT-4o mini TTS is about 3-4 times cheaper than TTS-1 since it's $12/MTok instead of $15/Mchar. It supports emotions with streaming. Cursor with Claude 3.7 Max seems surprisingly good at generating multi-page sites at one shot. Potentially, it can edit large repositories of code as well at one shot. If that's the case, the way we write code will require higher order thinking skills: broad sweeping changes rather than micro edits. I tried Open WebUI with its Knowledge feature. In short, it sucks. Due to the RAG technique as well as model quality. When I passed it my notes about Straive and asked who Straive's clients were: Open WebUI with Gemma 3 found one - after multiple attempts ChatGPT with o3-mini-high got 5 (missing nothing.) ChatGPT with GPT 4.5 got 4 Gemini with Gemini 2.0 Flash Thinking got 3 Gemini with Gemini 2.0 Flash got 3 (with a 4th wrong answer) I've settled on squoosh.app for image compression using WebP. I'm exploring FreeImage.host for image hosting instead of Imgur for WEBP support. FreeImage.host also seems reliable, retains file sizes, and supports hotlinking. DeepFace currently seems the easiest option for face detection. Easy to install. Multiple back-ends. Gemini Codrawing is a popular Hugging face space that lets you sketch something and prompt Gemini Flash to improve on it. Starting image Draw a dead man beside the pool of blood. Add an armor to the attacker. Significantly improve the quality of this picture. Add a red pool of blood next to the dead man. The armor looks like a frock. Make it more like an armor. Make this look like a professional drawing, even though it's in stick figures. Updated image Draw it in the style of Picasso Updated image Phi-4 multimodal procehttps://huggingface.co/microsoft/Phi-4-multimodal-instructsses speech better than Whisper V3 on HuggingFace OpenASR, and images better than Gemini Flash Lite On any LLM project, BEGIN with evals. Always. The effort for evals may seem high. Use LLMs to reduce this effort. Include irrelevant questions because people WILL ask them. Be clear on how to handle that.

Things I Learned - 30 Mar 2025


I used tmux to run terminal agents, explored Anthropic's programmatic tool-calling features, and identified key human skills like taste and synthesis that grow more valuable as AI automates routine research and coding tasks.

This week, I learned: Warp has a terminal agent feature - allowing Warp to control a terminal via text. I find that regular coding agents like Codex can do that too with tmux. For example, I opened a session and had Codex run commands in it while I watched. Here's the guidance it needed: Notes from Early science acceleration experiments with GPT-5 - via Claude LLMs are accelrating research because they are good at: Literature search, especially across disciplinary boundaries Generating and checking routine calculations Proposing variations on known techniques Identifying connections between disparate results Producing first-draft code for well-specified problems Explaining why certain approaches won't work But they're curently struggling with the following - though it's a shrinking space Genuinely novel conceptual leaps (but this is increasingly happening, e.g. Sawhney and Sellke's problem #848) Recognizing when it's plagiarizing, e.g. when it "discovered" a proof for the Chevalley-Warning theorem which was copied from a Noga Alon paper - it wasn't conscious of this Knowing what it doesn't know Distinguishing important problems from unimportant ones Understanding the "negative space" of mathematics (why certain problems are hard, why obvious approaches fail) Anthropic introduced three excellent tool use practices that I expect will be adopted widely. Tool search: Don't pass the tool definitions to the model. Model can ask for a tool search when needed Programmatic tool calling: Instead of calling a tool, it'll return a Python program to execute that will call the tools! This is a huge win Tool use examples: Lets you specific examples of tool calls to guide th model better The Hacker News thread flags that CLIs solve these - but CLI updates are hard, while APIs auto-update. With AI, some skills that beome more valuable are (and will soon be in short supply, hence need to be taught) are: # Problem formulation ("What question should we actually ask?") Traits: Curiosity (absolutely), systems thinking, comfort with ambiguity, metacognition (thinking about your thinking) Practice reframing exercises ("What are 5 other ways to frame this?"), study great questions in your field, work backward from outcomes, learn adjacent domains. The "5 Whys" technique helps. Also: deliberately pause before diving into solutions—force yourself to spend time in the question space. Taste and judgment ("Is this response appropriate?") Traits: Pattern recognition from experience, cultural literacy, empathy, contextual awareness, aesthetic sense How to strengthen: Immerse yourself in excellent examples, study spectacular failures (they're more instructive!), get feedback on your calls, practice explaining why you made a judgment. Build a "swipe file" of great/terrible examples. The key is volume—you need lots of reps. Quality assessment ("Is this AI output correct?") Traits: Healthy skepticism, attention to detail, domain knowledge, logical reasoning, understanding of edge cases How to strengthen: Study common AI failure modes, build verification checklists, practice the "does this make sense?" test, learn what "good" looks like in your domain, cross-reference claims. Develop your "bullshit detector" by analyzing why wrong answers feel wrong. Creative synthesis ("How do these ideas connect?") Traits: Associative thinking, wide knowledge base, playfulness, comfort with non-obvious connections, intellectual courage How to strengthen: Consume diverse inputs outside your field, practice analogical thinking ("X is like Y because..."), use visual thinking tools like concept maps, study how innovations happen in other domains, give yourself permission to make weird connections. Read broadly—fiction, history, science. Domain expertise ("Does this solution work in reality?") Traits: Deep curiosity, persistence, willingness to get hands dirty, learning from failure, long-term commitment How to strengthen: Deliberate practice on real problems, seek mentorship, study edge cases and failure modes, build things (don't just read about them), learn your field's history. The "10,000 hours" thing is real, but it's quality hours that matter. Meta pattern: Reflection loops: doing something, then analyzing why it worked/didn't. Exposure to excellence: you can't develop taste without seeing great work. Some more new CLI tools I installed: trash-cli: Alias rm to move files to trash instead of deleting permanently. After a week of seeing ligatures in Fira Code, all other fonts look ugly. My favorite ligatures: !== ==> =>> (and every possible arrow) >= ||> ||- |- ... The first name, alphabetically (at least among Straive employees) is "Aabida" and the last is "Zyrene". Something I would never have discovered working in a smaller company. chokidar-cli is an easy way to run commands when files change, e.g. npx -y chokidar-cli '/.js' -c 'npm run build' npx -y mapscii shows a map on the terminal. Not too useful, not maintained, but very interesting. termsvg converts asciinema .cast files to animated SVG suitable for embedding in GitHub (e.g. via mise x github:MrMarble/termsvg -- termsvg export file.cast --minify). The animated SVG is 10X larger than the .cast file. The GZipped size is fine but saving it as .svgz is not recognized by GitHub. In contrast, agg, the official asciinema-to-GIF converter, creates .GIF files that are only 5X larger. The most efficient seems to be embedding via asciinema.org usql queries MySQL, Postgres, SQLite, MSSQL, Oracle, etc via a single interface. For example, usql 'mysql://rfamro:@mysql-rfam-public.ebi.ac.uk:4497/Rfam' -c "SELECT FROM clan limit 3;". But DuckDB is more versatile, IMHO. Autistic and allistic people just have different communication styles. Autistic people have no trouble understanding other autists. They just happen to be in a minority which makes it seem like they have a social deficit. Conflict between Neurotypes 1 second = 10 tokens for OpenAI Realtime APIs. 1 second = 25 tokens for Gemini Live API 39 cents / hour on GPT Realtime Mini = 36 cents audio input + 3 cents text output 139 cents / hour on GPT Realtime = 115 cents audio input + 15 cents text output 30 cents / hour on Gemini 2.5 Flash Native Audio (Live API) = 27 cents audio input + 3 cents text output Here are some AI experiments I'm planning to try with our marketing team: Video Generation: Create marketing videos from text scripts in minutes Poster Generation: AI designs high-conversion posters from brief text inputs - notably Nano Banana Pro Synthetic Persona A/B Testing: LLM agents simulate 100K+ user behaviors to test designs before real users LLM-Powered A/B Automation: AgentA/B system runs experiments with AI-simulated traffic Vibe Coding Landing Pages: Marketers build production-ready pages in hours vs weeks On-demand Landing Pages: Generate pages for automated campaigns/products without human intervention Brand Voice Cloning at Scale: Train on company content to ensure consistency across 1000s of pieces Persona-Driven Content Synthesis: Use 1B+ personas to generate diverse content perspectives Competitive Intelligence Briefing: Real-time monitoring across millions of data points + data storytelling Marketing Analytics with LLMs: AI agents analyze complex datasets for insights Brand Compliance Checks: Ensure all content meets brand guidelines automatically Autonomous Blog Squads: AI agents identify trending topics / internal content, create data stories ready for review New skill unlocked: creating tutorials from talk proposals. I asked Claude to Write a Malcolm Gladwell article based on this talk description to teach me the topic and passed it this talk proposal: Your Causal Parrot might be lying to you. The story it wrote is very engaging and informative! LLMs "understand" causality because of training, but lack a world model to extrapolate to new situations. Giving them tools to reason (e.g. causal models, sub-agents to explore root causes) will help. A cool Gemini 3 Pro hack: convert satellite imagery into stylized maps! Bilawal Sidhu Running sub-agents in tmux helps avoid timeout cancellation, and hence allowing resuming Peter Steinberger

Things I Learned - 30 Nov 2025


I automated habit-stacking with shell scripts, analyzed my meeting communication patterns, and explored AI coding via Claude Code. I also tested Cloudflare’s AutoRAG, the OKLCH color model, and used rclone for Google Drive transcript exports.

This week, I learned: ⭐ Habit tooling can expand habit-building capacity. I already use tools to support my habits. Habit stacking "sticks" new habits to old ones. By sticking new habits into existing tools, I can automate this. (For example, I extended my meeting record fish script with an echo reminding me to write the meeting goal, my role, practice kind candor, and measure effectiveness.) ⭐ The crux of Arthashastra's advice on defeating an enemy is removing support: मित्राणि भेदयेत्, मित्रं च शत्रोः। Dis-unite friends, enemies from their allies. अमात्यान् द्रव्यैः, जनपदं भेदयेत्। Bribe their ministers, sow discord among subjects. बलं चोच्छिनत्ति, कोशं चोपशोषयेत्। Break the army, exhaust the treasury. ततोऽन्योन्यवैरिणं कुर्यात्। Then set them against each other as mutual foes. Consensus is dangerous in venture capital. "Because if everyone inside the firm sees the same thing, it probably means the market already does too. And when the market sees it, the upside is limited." Guillermo Flor This CodeMonkeys paper suggests running a mixture of agents in parallel for multiple code + test tasks and auto-pick the best by running and LLM-rewriting tests. #ai-coding We think a new pricing model might emerge for outsourced knowledge work that leads to lower client cost & quality at higher margins. ChatGPT LLMs do the task; multiple LLMs cross-check. Three tiers: Auto-pass (no human), Light review, Full review. Each tier has a clear price and SLA. Using LLMs as validators is one of the safest ways of introducing LLMs into a process. If the human ignores it, no loss. If it spots new errors or the human gets new ideas, quality improves at low cost. I finally get why elders in my family prefers eating in a pure (rather than a mixed) vegetarian restaurant. When in Vietnam, I could pick dishes in pure vegetarian restaurants without worrying about whether they were meat or not, even when I didn't understand what the dishes were about. That confidence to proceed without fear is a powerful enabler. There's emerging evidence that jobs automated by (not augmented or unaffected by) AI have fewer entry-level jobs. Experienced workers are less affected. Compensation is affected less. Canaries in the Coal Mine CloudFlare AutoRAG lets you index any website and expose it as an API + Chatbot with a model of your choice. This is available on the free tier, too. The API follows NLWeb, Microsoft's open standard for LLMs and MCPs to interact with websites in natural language. Cloudflare has an image transformation API that also acts as a CDN. Apart from basic transformations, it can auto detect and crop faces, remove backgrounds, and more. oklch seems the best color model supported by all modern browsers. We can use relative colors with it, making color palette design much easier: Malware embedded in the compromised nx build tool leveraged Claude/Gemini CLI to offload fingerprintable password-gathering code into prompts, making detection significantly harder for traditional security tools. semgrep Codex CLI has several updates VS Code plugin with remote container execution Drag & drop image support PR Docs Queued (editable) messages PR Web search via --search PR Esc-Esc to edit previous messages Docs Our team passed an image to an LLM for OCR (especially to identify formatting, e.g. bold, italics, etc.), then passed the output and the image to another LLM for improvement. Interestingly, the best LLM (Gemini 2.5 Pro, for this sample of 8 images) out-performed the two-stage workflow. Perhaps incorrect results confuse more than the correct results help? This needs more research. OpenAI now has a series of llms.txt URLs. Rust seems to catch errors better at compile-time than many typed languages like TypeScript. That makes it better for larger projects (or for AI coding). The unexpected productivity boost of Rust #ai-coding Image APIs that support hotlinking and searching (useful to support LLM-generated content, e.g. slides or presentations): 1. Openverse: CC, scale, simple REST. 2. Wikimedia Commons: CC, historic/diagram breadth. 3. Pixabay: easy, free, broad, but license fuzzier. 4. Pexels: beautiful but custom license. 5. Unsplash: stylish but restrictive. 6. OpenClipart: niche, useful for icons. ⭐ For mental tiredness, the impact of sleep > workload > mood/stress > environment (travel, light, air) > posture > food/drink. To rebound, nap > bright light > exercise > fresh air > water > posture/breathing. ChatGPT In my internal meetings, I tend to ask many questions (1 per 8 turns), but fewer open-ended ones (40%) compared with others. I also praise once every 22 turns - among the lowest in our group. I could ask more open-ended questions and acknowledge good work. # When seeking advice, people sometimes think aloud, become repetitive, and introduce detail before clarifying intent. Kind candor helps. You can: State time boundaries. "We have 20 min. If we spend 5 min on your question, we'll have 15 for solutions." Clarify intent upfront. "Before we dive in: What can I help with?" Interrupt, summarize, clarify early. "Cooperative interruptions" are seen as supportive. E.g. "I get this: six accelerators, two done. Great! What can I help with? To accelerate?" rclone is the cleanest way to copy files from Google Drive. I ran rclone config to set it up with Google Drive via native app OAuth key. Then, rclone copy "gdrive:" transcripts/ --drive-shared-with-me --include "Transcript.docx" copied all transcripts including "Shared with me" files (not just drives). The --drive-shared-with-me enables this. What makes Claude Code so damn good has a detailed review of Claude Code's system prompt and is a great for ideas on using LLMs for coding. #ai-coding With AI coding, task breakdown, context right-sizing, and automated testing are key levers. #ai-coding

Things I Learned - 31 Aug 2025


The Tools in Data Science course is now openly auditable, offering a rigorous, tool-heavy, AI-aware curriculum that mirrors real-world data work more than traditional classroom theory.

My Tools in Data Science course is now open for anyone to audit. It's part of the Indian Institute of Technology, Madras BS in Data Science online program. Here are some of the topics it covers in 10 weeks: Development Tools: uv, git, bash, llm, sqlite, spreadsheets, AI code editors\ Deployment Tools: Colab, Codespaces, Docker, Vercel, ngrok, FastAPI, Ollama\ LLMs: prompt engineering, RAG, embeddings, topic modeling, multi-modal, real-time, evals, self-hosting\ Data Sourcing: Scraping websites and PDF with spreadsheets, Python, JavaScript and LLMs\ Data Preparation: Transforming data, images and audio with spreadsheets, bash, OpenRefine, Python, and LLMs\ Data Analysis: Statistical, geospatial, and network analysis with spreadsheets, Python, SQL, and LLMs\ Data Visualization: Data visualization and storytelling with spreadsheets, slides, notebooks, code, and LLMs It includes 2 projects, 7 graded assignments, and a remote online exam. It's a fairly tough course. Solve the first assignment to decide if you should take the course. Course: \ Code: LinkedIn

Tools in Data Science course is free for all


Classifying personal chat history against an external use-case taxonomy shows that most usage clusters around code improvement, troubleshooting, corporate AI work, ideation, and simple explainers.

I extracted the titles of the 1,600 conversations I had with ChatGPT in 2025 so far and classified it against the list of How People Are Really Using Gen AI in 2025. Here are the top 8 things I use it for, along with representative chat titles. (The % match in brackets tells you how similar the chat title is to the use case.) Improving code (clearly, I code a lot) Troubleshooting (usually code) Corporate LLM/Copilot (this is mostly LLM research I do) Generating code (more code) Generating ideas (yeah, I've stopped thinking) Simple explainers (slightly surprising how often I ask for simple explanations) Generating relevant images. (Surprising, but I think I generated a lot of images for blog/LinkedIn posts) Specific search (actually, this is mis-classified. This is where I'm searching for search engines!) My classification has errors. For example, "Reduce Code Size" was classified against "Generating code" but should have been "Improving code". But it's not too far off. Here's a list of representative chats against these use cases. Improving code (263): PR Code Review Suggestions (64% match) Assessor Code Review and Improvement (63% match) Reduce Code Size (62% match) Troubleshooting (172): Connector Error Troubleshooting (67% match) DNS Resolution Debugging Steps (55% match) Exception Handling Basics (47% match) Corporate LLM/Copilot (141): LLM Integration in Work (57% match) LLM Agents Discussion (56% match) LLMs Learnings Summary (56% match) Generating code (113): AI Code Generation Panel (58% match) AI for Code Generation (58% match) Reduce Code Size (54% match) Generating ideas (99): Filtering Ideas for Success (54% match) AI Demo Ideas (52% match) Hypothesis Generator Name Ideas (52% match) Simple explainers (94): Simple Public APIs (43% match) Y-Combinator Explained Simply (41% match) Prompt Engineering Tutorial Summary (39% match) Generating relevant images (93): Popular AI Image Tools (54% match) Diverse Image Embedding Selection (52% match) AI ImageGen Expansion Ideas (52% match) Specific search (69): Semantic Search Engines Local (59% match) Enterprise Search Solution (54% match) Local LLM Semantic Search (53% match) How did I calculate this? 1. On ChatGPT.com, I scrolled until I had all 2025 chats visible. Then I pasted copy($$(".group.menu-item").map(d => d.textContent)) to get the chat titles. 2. On Claude.ai, I transcribed this list of use cases from HBR (prompt: "Transcribe this image"). 3. On LLM Foundry (which you may not have access to), I used the Similarity API to get a CSV of similarities between prompts and top 30 use cases in 2025 using text-embedding-3-small. 4. On ChatGPT.com, I told it to analyze the data like this: This sheet has the embedding similarity between my ChatGPT prompts (in column "A") with different use cases. Write and run code that tags the prompt with the use with the highest embedding similarity (cell value), drops prompts whose highest embedding similarity is below a cutoff, and shows a table where the rows are the use cases and the values are the frequency. Do this for multiple embedding cutoffs as columns: 0.0, 0.1, 0.2, 0.3, 0.4. So, the table has use cases in rows, embedding cutoffs in columns, and the cell values are the count of prompts tagged with each use case AND have an embedding similarity >= cutoff. Draw this as a heatmap with low numbers as white and high numbers as green. … and then: Let me download this as a Markdown list in this style, sorted by descending order at cutoff = 0 Anti-trolling (mention count of matches at 0 cutoff): Tor Technical AMA questions (34%) Bot Message Edits (33%) Popular Hacker News Keywords (33%) … Here's the full list against the top 30 use cases: Improving code (263): PR Code Review Suggestions (64% match) Assessor Code Review and Improvement (63% match) Reduce Code Size (62% match) Troubleshooting (172): Connector Error Troubleshooting (67% match) DNS Resolution Debugging Steps (55% match) Exception Handling Basics (47% match) Corporate LLM/Copilot (141): LLM Integration in Work (57% match) LLM Agents Discussion (56% match) LLMs Learnings Summary (56% match) Generating code (113): AI Code Generation Panel (58% match) AI for Code Generation (58% match) Reduce Code Size (54% match) Generating ideas (99): Filtering Ideas for Success (54% match) AI Demo Ideas (52% match) Hypothesis Generator Name Ideas (52% match) Simple explainers (94): Simple Public APIs (43% match) Y-Combinator Explained Simply (41% match) Prompt Engineering Tutorial Summary (39% match) Generating relevant images (93): Popular AI Image Tools (54% match) Diverse Image Embedding Selection (52% match) AI ImageGen Expansion Ideas (52% match) Specific search (69): Semantic Search Engines Local (59% match) Enterprise Search Solution (54% match) Local LLM Semantic Search (53% match) Adjusting tone of email (66): Email transcription request (45% match) Summarize emails request (45% match) Intro Email FAQs (44% match) Generating a legal document (59): LLM Generated SVG Ideas (48% match) LLMs for DSL Generation (45% match) Deterministic Random Content Generation (45% match) Preparing for interviews (43): LLM Coding Interview Tools Report (43% match) Bank Ops Prep Resources (42% match) AGI Preparation (42% match) Personalized learning (32): Lifelong Learning in Conversations (51% match) AI Classroom Engagement Names (48% match) LLM Learner Personas Roadmap (47% match) Explaining legalese (32): LLM Coding Insights (46% match) LLM Code Ownership (45% match) LLM Data Format Comparison (44% match) Creating a travel itinerary (28): Travel Strength Training Tips (39% match) User Journey Tools Online (37% match) Prioritize My Explorations (36% match) Creativity (28): Creative Process Breakdown (55% match) Creative Hallucinations in Innovation (50% match) Leveraging Serendipity for Innovation (50% match) Cooking with what you have (26): Vegetarian Dish Creation (45% match) Baked Veggie Dishes (41% match) Vegetarian dish idea (40% match) Organizing my life (24): Prioritize My Explorations (49% match) Workspace Suggestions for Browsing (39% match) Editing for Clarity and Simplicity (39% match) Enhanced learning (23): 2025 LLM Embedding Enrichment (51% match) Lifelong Learning in Conversations (49% match) Tech-Enhanced Teacher-Student Rapport (49% match) Finding purpose (21): Prioritize My Explorations (40% match) Deep Research Use Cases (37% match) Filtering Ideas for Success (36% match) Deep and meaningful conversations (20): Lifelong Learning in Conversations (49% match) Humorous conversation summary (42% match) New chat (40% match) Healthier living (18): Modeling Quality of Life (40% match) Lifelong Learning in Conversations (37% match) Posture and Breathing After Weight Loss (36% match) Anti-trolling (18): Tor Technical AMA Questions (34% match) Bot Message Edits (33% match) Popular Hacker News Keywords (33% match) Writing student essays (18): Scholarship Answer Advice (47% match) Student Q&A on LLMs (41% match) Reward Systems for Students (41% match) Fun and nonsense (17): Humorous conversation summary (45% match) Funny Llama 3.3 Strips (40% match) Synonyms for Interestingness (40% match) Boosting confidence (14): Emotional Prompting Impact (41% match) Emotional Prompting Impact (41% match) AI Ratings of My Flaws (38% match) Personalized kid's story (14): Fake Data Storytelling Tips (43% match) Low Effort Storytelling Training (39% match) Demo Name Suggestions (37% match) Reconciling personal disputes (12): Divorce AI Podcast Ideas (37% match) Summarizing Personal Journals LLM (36% match) Hobby Suggestions and Devil's Advocacy (36% match) Entertaining kids (9): Comedy for Geriatric Doctors (40% match) Humorous conversation summary (36% match) Indoor Activities in SG (34% match) Medical advice (9): Patient Doctor Communication Tips (41% match) AI Training for Doctors (40% match) AI Training Course for Doctors (38% match) Therapy/companionship (3): DBT Course (36% match) Cupping Therapy Evidence (36% match) Empathy App Development Ideas (33% match)

Top 8 ways I use ChatGPT in 2025


AI can personalize gifts at scale in a way that transforms generic corporate swag into something genuinely memorable and emotionally resonant.

Turning Generic Gifts Into Joy with AI In 2001, I received a campus interview invitation from BCG. It opened like this: Dear Anand, We'd like to invite you to an interview on … We were impressed by your … … and went on to share 2-3 phrases about what they liked about my CV. A dozen of us got similar letters -- each personalized! That was cool. Two decades later, I still remember it. It showed care and competence -- care enough to personalize for each candidate, competence to pull it off at scale across campuses. Recently, I got a desk plaque unlike any other award I’ve received. It was personalized not just with my name, but with an AI-generated comic-rendering of me! Our HR team uploaded my photo to an AI image tool and generated a comic version of my face. I loved it! I’ve thrown away every plaque I’ve received. This one stays on my desk. That got me thinking. A thoughtful gift turns generic swag into something memorable. My plaque isn’t décor; it reflects my love for comics and AI. Using AI research and image generation, AI can personalize at scale. That's not just efficiency. It's a new level of care. A personalized gift says, ‘We see you.’ (Weird that we need AI care at scale, but…) We can do this with custom T-shirts, mugs, stickers… We juts need bots in parallel: scan profiles, extract interests, render images, review, design something personal. Something that brings a little more personality and delight into our lives. My next step: AI-designed T-shirts for my daughter and me. Manga-themed for her; I’m still deciding mine. LinkedIn

Turning Generic Gifts Into Joy with AI


Mobile coding agents like Jules can turn commute time into shipped documentation, tests, and code when paired with strong tests and review discipline.

Turning Walks into Pull Requests In the last few days, I'm coding with Jules (Google's coding agent) while walking. Here are a few pull requests merged so far: Add features via an issue Write test cases Add docs Why bother? My commute used to be audiobook time. Great for ideas, useless for deliverables. With ChatGPT, Gemini, Claude.ai, etc. I was able to have them write code, but I still needed to run, test, and deploy. Jules (and tools like GitHub Copilot Coding Agent, OpenAI Codex, PR Agent, etc. which are not currently free for everyone) lets you chat clone a repo, write code in a new branch, test it, and push. I can deploy that with a click. Fifteen minutes into yesterday's walk I realised I'd shipped more code than in an hour at my desk (even with LLMs)! Workflow 1. Open Jules via browser on phone, connect wired headset. 2. Prompt (by typing or speaking) the change to make. It reads the repo, creates a plan and writes code. 3. It runs any existing test suites in a sandbox. Repeats until all tests pass. 4. I have it publish a branch, go to GitHub Mobile and create a PR. 5. Back home, I review the output and merge. There are 3 kinds of uses I've put it to. 1. Documentation is the easiest. Low risk, high quality, boring task. Here's a sample prompt: This repo has multiple directories, each with their own standalone single page application tools. If a directory does not have a README.md, add a concise, clear, USEFUL, tersely worded one covering what the tool does, the various real life use cases, and how it works. If a readme already exists, do NOT delete any information. Prefix this new information at the start. Avoid repeating information across multiple README files. Consolidated such information into the root directory readme. In the root directory README, also include links to each tool directory as a list, explaining in a single sentence what the tool does. 2. Testing is the next best. Low risk, medium quality, boring task. Here's an example: Run the tests in this repo. Go through the code and see what parts of the code are not covered. Understand the logic and see what kinds of user scenarios are not covered. Add test cases to cover these in the same style as the existing code. Write MINIMAL, ELEGANT code. 3. Coding may not be the best suited for this. High risk, medium quality, and interesting. But here's a sample prompt: Fix Allow the user to enter just the GitHub @username, e.g. @sanand0 apart from the URL Add crisp documentation at the start explaining what the app does Only display html\url (as a link), avatar\url (as an image), name, company, blog, location, email, hireable, bio, twitter\username, public\repos, public\gists, followers, following, created\at, updated\at Format dates like Wed 28 May 2025. Format numbers with commas. Add links to blog, twitter\username, email Add "Download CSV" and "Copy to Excel" buttons similar to the json2csv/ tool Automated tests are a great way to reduce AI coding risk, as Simon Willison suggests. I need to do more of this! Wins & Losses Good: 1 walk = one merged PR. Even with LLMs, it used to take me 2 hours. Now, it's about half an hour of reclaimed walking "dead time". Good: Test-first prompting caught a sneaky race condition I’d have missed. Bad: Told Jules “add docs” without saying “don’t overwrite existing.” It politely destroyed my README. Manual revert ensued. Bad: Front-end tasks need visual QA; I'm still hunting for a zero-setup UAT preview on mobile. The industry echoes the pattern: GitHub’s new Copilot agent submits draft PRs behind branch protections [1]; Sweep auto-fixes small tickets but can over-touch files [2]; Microsoft’s own engineers found agents flailed on complex bug fixes [3]. But… Isn’t this risky? Maybe. Branch protections, CI, and human review stay intact. Agents are like a noisy junior devs who never sleep. Is the diff readable? If not, I have it retry, write more reviewable diffs, and explain clearly in comments & commit messages. Does it have enough context? I add all the context clearly in the issue or the prompt. That can take some research. Security? The agents run inside repos you give it access. Prompt injection and exfiltration are possible risks, but only if it accesses external code / websites. How to start 1. Pick a low-stakes repo with solid tests. 2. Pick an agent. Jules has 5 tasks/day free for now. Or pay and use GitHub Copilot Coding Agent, OpenAI Codex, etc. Or self-host PR Agent, etc. 3. Write a failing test. 4. Go for a walk and talk. 5. Merge (or laugh) on return.

Turning Walks into Pull Requests


LLM-driven “vibe analysis” can take participants from raw datasets to exploratory stories in a live workshop without needing traditional analysis workflows.

Tomorrow, we'll be vibe-analyzing data at a Hasgeek Fifth Elephant workshop. It's a follow-up to my DataHack Summit talk "RIP Data Scientists". I showed how it's possible to automate many data science tasks. In this workshop, the audience will be doing that. Slides: https://sanand0.github.io/talks/2025-09-16-vibe-analysis/ (minimal because... well, it's "vibe analysis". We'll code as we go.) Here are datasets I'll suggest to the audience: India Census 2011: https://www.kaggle.com/datasets/danofer/india-census MovieLens movies: https://grouplens.org/datasets/movielens/32m/ IMDb movies: https://datasets.imdbws.com/ Occupational Employment and Wage Statistics (OEWS): https://www.bls.gov/oes/tables.htm Global AI Job Market & Salary Trends 2025: https://www.kaggle.com/datasets/bismasajjad/global-ai-job-market-and-salary-trends-2025 Flight Delay Dataset: https://www.kaggle.com/datasets/shubhamsingh42/flight-delay-dataset-2018-2024 London House Price Data: https://www.kaggle.com/datasets/jakewright/house-price-data Exchange Rates to USD: https://www.kaggle.com/datasets/robikscube/exhange-rates-to-usd-from-imforg-updated-daily Thailand Road Accidents (2019-202): https://www.kaggle.com/datasets/thaweewatboy/thailand-road-accident-2019-2022 ... but if you'd like stories from any interesting recent datasets (10K - 10M rows, easy-to-download), please suggest in the comments. 🙏 LinkedIn

Vibe analysis fifth elephant workshop


I used Codex and Claude to turn my browser history into data stories. I learned to build multiple options, use LLMs for pre-reviewing, and match specific models like GPT-5 or Claude to their architectural strengths.

Vibe-Coding for Interesting Data Stories Last weekend, I fed Codex my browser history and said "explore." It found a pattern I call rabbit holes -- three ways we browse: 1. Linear spiral - one page > next page > next. E.g. filing income tax, clicking "next" on the PyCon schedule. 2. Hub & spoke - hub > open tabs > back to hub. E.g. exploring DHH's Ubuntu setup, checking Firebase config. 3. Wide survey - source > many, many pages. E.g. clearing inbox, scanning news. Then Claude Code built this lovely data story. My goal? Find challenges in vibe-coding interesting data stories. I found several. A. I don't know what I want. Solution? Ask for multiple options. More options = more ideas. Codex proposed two I hadn't planned: rabbit holes and search funnels. B. I don't know if it'll turn out well. Solution? Build them all. Don't pre-judge. I did not expect rabbit holes to be interesting - a clear prediction error. C. Reviewing is the bottleneck. It's slow and painful. Solution? Make reviews easy. Ask for review-friendly output. E.g. A table/heatmap comparing options. Use LLMs to pre-review. E.g. Pick top 3 with reasons. Review output, not code. E.g. Have it build a working demo, then review. D. Model / tool strengths vary. Solution? Align with strengths. For example: Use GPT-5 for planning. It's better than GPT-5-Codex or Claude 4.5 Sonnet. Code UI with Claude 4.5 Sonnet. It's better than most models. Check out the prompts & process. Try this: Pick one messy dataset you have. Ask an LLM for five ways to explore it. Build them all. One will surprise you. LinkedIn


Vibe coding is most valuable for cheap prototypes and non-expert empowerment, not for polished, durable production systems.

Vibe-coding is for unproduced, not production, code Yesterday, I helped two people vibe-code solutions. Both were non-expert IT pros who can code but aren't fluent. Person Alpha and I were on a call in the morning. Alpha needed to OCR PDF pages. I bragged, "Ten minutes. Let’s do it now!" But I was on a train with only my phone, so Alpha had to code. Vibe-coding was the only option. Me: Go to any chat engine and pick Claude Sonnet 4 as your model. Alpha: We have an internal chatbot that has Claude Sonnet 4. Me: Type, "Write a Python program to accept a PDF filename and page number and extract it into output.pdf". Alpha: Done. I'm not used to the CLI but can run it in PyCharm. Me: OK. Run it, but first, modify by saying, "Shorten code. Drop error handling." Alpha: Done. (Runs the code, and it works!) Me: Great. Let's do the next part. Paste the sample code for OCR from our team into the chatbot. Alpha: But our chatbot is limited to 15K characters. Me: OK. Go to Claude.ai and paste the code. Alpha: Um… is that allowed? (Alpha's colleague pitched in, saying "If it weren't, it'll be blocked. Also, the code isn't sensitive, only data, so go ahead.") Me: Use this prompt: "Write a Python program to send output.pdf to an LLM for OCR. Use this code as reference." Then "Shorten code. Drop error handling." Alpha: (Runs the code, and it works!) All this happened during my commute plus a haloumi-cheese-wrap purchase. A very satisfying experience! That evening, Person Gamma and I were on a call. Gamma had a client meeting and needed an LLM image editing tool tailored. I tried the same approach. Me: Create a GitHub account, first. Gamma: I think I already have one. Let me log in. Me: I've given you maintainer access to the repo. You'll get an email. Accept it. Then upload the images you want edited. Gamma: Done (with me guiding on what to click) Me: Now log into Gamma: Done Me: In Jules, select the repo and tell it what change you want. Gamma: OK. "Use the JPG images uploaded as the samples". (Jules churns out it's thinking) "Oh, wow! This is amazing! It's actually thinking about the approach." (Jules is done in about 2 min) "My god! This is going to make things so much easier!" Me: Now publish the branch, create a pull request on GitHub, and merge. Gamma: Done (with guidance). Me: Now try something yourself. Gamma: OK. "Change the prompts to something more relevant that improves the brand image." (merges the code, and it works!) Yet another very satisfying experience. Gamma went on to make another change in my absence. Exactly the point: enable them to work without me. But isn't vibe code legacy code? Reducing quality, increasing technical debt? Yes. Vibe-coding ships debt. But not all code is production code. Vibe coding can accelerate throw-away prototypes. More importantly, so many ideas sit idle because devs lack time and non-devs lack skills. Vibe coding shrinks that effort. That is what vibe-coding is really for. Think Excel. Most Excel sheets are messy apps, yet Excel's made more people productive than any language. In No Silver Bullet, Fred Brooks said: I believe the single most powerful software-productivity strategy for many organizations today is to equip the computer-naive intellectual workers who are on the firing line with personal computers and good generalized writing, drawing, file, and spreadsheet programs and then to turn them loose. The same strategy, carried out with generalized mathematical and statistical packages and some simple programming capabilities, will also work for hundreds of laboratory scientists. This is what vibe-coding enables. And more.


I've shifted from writing manual BeautifulSoup scripts to "vibe-scraping" using AI agents. By focusing on outcomes rather than implementation, I generated Bollywood box office datasets and merchant audits in minutes, making traditional web scraping expertise feel obsolete.

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). But this story isn't about the box-office drought. It's about vibe-scraping. To scrape the 1k Cr club data, here's what my process would be in: 2008-2015. Requests + BeautifulSoup in Python. Takes 1 day. 2015-2024. Puppeteer. Still takes 1 day. 2025-Today. AI writes code. 2 hours/site. 4x faster. Today-???. Coding agents scrape directly. 30 min/site. 16 times faster. I passed Codex CLI (roughly) this prompt: Write scrape.py to scrape the highest-grossing films from Wikipedia's list of Hindi films: 1994 to 2024.\ Read pages as required. Save results as CSV. Here's what it did. Read the Wikipedia lists starting 1994 Failed on missing BeautifulSoup dependency. I allowed install. Discovered that tables below "grossing" or "box office" headings are relevant. Noticed "Rank" became “No” in the column header since 2016 and adapted. Fixed all errors and generated a clean CSV. That's… incredible! The code was a by-product. The prompt and evals matter. When sites change, agents can fix the code. Or better agents will rewrite it. I guess I'll call this vibe-scraping. I also asked Claude Code vibe-code a data story. Here are the links: Visualization Code Scraper chat Dataviz chat This afternoon, in front of a client, I spoke with Codex: Write a scrape.py that searches Dutch fashion merchant websites and lists what delivery carriers they use. 10 minutes later, we had a table. The client spotted one error that I couldn't have. Expert review still matters. But what's redundant is my 20-year scraping experience! If agents can scrape on the fly, what new questions do we ask? LinkedIn


I use ChatGPT for "vibe shopping," buying everyday items without verifying them. It’s great when I lack the right search terms or want to find extreme products, like the cheapest items per kilogram or most over-engineered kitchen gadgets.

Vibe Shopping I've started vibe shopping, i.e. using ChatGPT to shop for small, daily items and buying without verifying. For example: "A metal rack for the floor: at least 2 ft \ 1 ft \ 2 ft, small gaps, popular options on Amazon.in." https://chatgpt.com/share/68d61d68-7040-800c-936b-354749539308 "An optical wired mouse that's smaller than usual, 4\+, popular, Prime-eligible for Chennai by the weekend on Amazon.in." https://chatgpt.com/share/68d61e0d-420c-800c-bc71-821b9f9296a9 The best use is when I don't know the right terms. In this case, the terms were wire rack and mini mouse. This is also useful when I don't know what to buy. For example: "A Diwali gift for a Taiwanese colleague." "Useful travel items under Rs500." "A harmless 'annoying' gift for a friend who never returns stuff." But last week I found a new use: deep product research. In The Mentalist (S5E4), Jane asks Grace to deliver "anything, as long as it's large and heavy," at an address. If I were Grace, I'd ask ChatGPT: 'What are the cheapest things to buy per kg?'" It turns out that the cheapest thing I can order from Chennai is compost: Rs 13,500 for 1 ton. https://chatgpt.com/share/68d61d0e-cfc4-800c-a562-6c9d07edfc69 Here are some products I'm "deep researching" on Amazon: What can I buy that's technically edible but shouldn't be? What has the weirdest warning label? What product has the longest name? What're individually innocent but together make the checkout very suspicious? What's the heaviest thing that fits in a 1x1 foot box? What's the most over-engineered kitchen gadget? What's the most ridiculous "office supplies" I can expense? What's the most useless thing that still has 4+ stars? What's the quietest product? Stealth > silent. LinkedIn

Vibe Shopping


Vipassana is described as a highly disciplined, practical, almost scientific process that surfaces deep cravings and aversions while proving personally worthwhile.

For those curious about my Vipassana meditation experience, here's the summary. I attended a 10-day Vipassana meditation center.\ Each day had 12 hours of meditation, 7 hours sleep, 3 hours rest, and 2 hours to eat. You live like a monk. It's a hostel life.\ The food is basic. You wash utensils and your room. There are rules. No phone, laptop, no communication.\ You can't speak to anyone. As an introvert, I enjoyed this!\ You can't kill. Sparing cockroaches and mosquitos were hard.\ You can't mix meditations. But I continued daily Yoga.\ You can't steal. But I did smuggle a peanut chikki out.\ No intoxicants or sexual misconducts. You're woken up by bell at 4 am daily.\ You sit cross-legged without moving, which I found impossible.\ I was the sole attendee who needed a backrest.\ I blame back muscle loss which accompanied my weight loss. You observe your sensations calmly.\ Don't imagine sensations. Don't like or hate them.\ It's pragmatic. Accept what works. Reject what doesn't.\ There's no dogma. More science than religion.\ I discovered several cravings and aversions, like fear of losing money and an efficiency obsession.\ Also that humor, curiosity and compassion really help. It was 10 days well spent. I strongly recommend it. Comic story: https://sanand0.github.io/datastories/vipassana-chatgpt/ ChatGPT conversation: https://chatgpt.com/share/687629fc-c3f4-800c-9ba7-107d542f4373 Download the PDF . LinkedIn

Vipassana experience


A brief note announcing a 10-day silent meditation retreat as an experiment in stepping away from technology entirely.

I'm off for a 10-day Vipassana meditation program. WHAT? A 10-day residential meditation. No phone, laptop, or speaking. https://www.dhamma.org/ WHEN? From today until next Sunday (13 July) WHERE? Near Chennai. https://maps.app.goo.gl/PnGkLoZ8U6aG2RKk8 WHY? I've heard good things and am curious. SURE? I've never been away from tech for this long. Let's see! I've scheduled LinkedIn posts, so you'll still see stuff. But I won't be replying. LinkedIn

Vipassana plan


This talk proposal frames live, on-stage collaboration with ChatGPT as an experiment in outsourcing the full data-analysis and storytelling pipeline to an LLM.

This talk is an experiment. I am going to talk (literally) to ChatGPT on stage and have it do every kind of data analysis and visual storytelling I have ever done. Bangalore. 27 June. Of course, this is an LLM era away. So no promises. We might be doing something completely different on stage. LinkedIn

Vizchitra 2025 talk is an experiment


LLMs can support every stage of data storytelling when treated as dialog partners and code writers rather than as literal calculators.

My VizChitra talk on Data Design by Dialog was on LLMs helping in every stage of data storytelling. Main takeaways: After open data, LLMs may the single biggest act of data democratization. https://youtu.be/hPH5ulHtno?t=01m24s LLMs can help in every step of the (data) value chain. https://youtu.be/hPH5ulHtno?t=00m47s LLMs are bad with numbers. Have them write code instead. https://youtu.be/hPH5ulHtno?t=06m33s Don't confuse it. Just ask it again. https://youtu.be/hPH5ulHtno?t=05m30s If it doesn't work, throw it away and redo it. https://youtu.be/hPH5ulHtno?t=20m02s Keep an impossibility list. Revisit it whenever a new model drops. https://youtu.be/hPH5ulHtno?t=20m02s Never ask for just one output from an LLM. Ask for a dozen. https://youtu.be/hPH5ulHtno?t=22m20s Our imagination is the limit. https://youtu.be/hPH5ulHtno?t=26m35s Two years ago, they were like grade 8 students. Today, a postgraduate. https://youtu.be/hPH5ulHtno?t=00m47s Do as little as possible. Just wait. Models will catch up. https://youtu.be/hPH5ulHtno?t=31m45s Funny bits: This is how it's done. How else would we do it? https://youtu.be/hPH5ulHtno?t=04m31s Some people call biases domain expertise. https://youtu.be/hPH5ulHtno?t=22m50s I don't like work. I like playing Bubbles. So, have it do the work. https://youtu.be/hPH5ulHtno?t=23m08s More metrics, more quirky! https://youtu.be/hPH5ulHtno?t=26m20s Amuse me! https://youtu.be/hPH5ulHtno?t=21m37s Slides: https://sanand0.github.io/talks/2025-06-27-data-design-by-dialogue/ Video: https://youtu.be/hPH5ulHtno Transcript: https://github.com/sanand0/talks/blob/main/2025-06-27-data-design-by-dialogue/transcript.md LinkedIn

Vizchitra data design by dialogue


Participants can go from dataset to published visualization in a single session using only LLM tools, with no manual coding or traditional analysis required.

We created data visualizations just using LLMs at my VizChitra workshop yesterday. Titled Prompt to Plot, it covered: Finding a dataset Ideating what to do with it Analyzing the data Visualizing the data Publishing it on GitHub ... using only LLM tools like #ChatGPT, #Claude, #Jules, #Codex, etc. with zero manual coding, analysis, or story writing. Here're 6 stories completed during the 3-hour workshop: Spotify Data Stories: https://rishabhmakes.github.io/llm-dataviz/ The Price of Perfection: https://coffee-reviews.prayashm.com/ The Anatomy of Unrest: https://story-b0f1c.web.app/ The Page Turner's Paradox: https://devanshikat.github.io/BooksVis/ Do Readers Love Long Books? https://nchandrasekharr.github.io/booksviz/ Books Viz: https://rasagy.in/books-viz/ The material is online. Try it! Slides: https://sanand0.github.io/talks/2025-06-28-prompt-to-plot/ LinkedIn

Vizchitra workshop 2025


Voice interviews with ChatGPT plus Markdown slides, Marp, image generation, and GitHub Pages create a near-end-to-end pipeline for building slide decks while walking.

Voice Chat to Slides: My New AI-Powered Workflow Here's my new workflow for creating slide decks: 1. ChatGPT interviews me and creates Markdown slides. 2. I use Marp to convert Markdown to slides. 3. LLMs create supporting images. 4. I deploy on GitHub Pages. … and here are 2 decks created this way. 1. Visualizing LLM Hallucinations 2. LLMs in Education Let's look at how I built the second example, step by step. ChatGPT interviews me and creates Markdown slides While walking 75 minutes from home to IIT Madras to deliver this talk, I had ChatGPT interview me in standard voice mode. Why an interview? It's easier when someone asks questions. Why voice? It's hard to type while walking. Otherwise, I prefer typing. Why not advanced voice mode? I want to use a reasoning model like O3 Mini High for better responses, not the GPT-4o-realtime model that advanced voice mode uses. Here's the conversation I had with ChatGPT. I began by speaking (not typing): I want to create an insightful deck in Markdown on how I have been using LLMs in education.The audience will be technologists and educators. The slide contents must have information that is useful and surprising to them. The slides are formatted in Markdown with each slide title being a level 2 Markdown header and the contents of the slides being crisp bullet points that support the title. The titles are McKinsey style action titles. Just by reading the titles, the audience will understand the message that I am trying to convey. In this conversation, I'd like you to interview me, asking me questions one by one, and taking my inputs to craft this presentation. I'd also like you to review the inputs and the slide content you create to make sure that it is insightful, useful, non-obvious, and very clear and simple for the audience. Interact with me to improve the deck. Let's begin. (Unsurprisingly, I talk a lot more than I type.) There were 3 kinds of interactions I had with ChatGPT: 1. Content. I explained each slide. For example: "Yeah, let's move on to the next topic, which is where we had the students learn prompt engineering as part of the course. One of the questions was convincing an LLM to say yes, even though …" 1. Correction. After ChatGPT read aloud a slide, I corrected it. For example: "Content-wise, it's spot-on. Style-wise, it's almost spot-on. It's far more verbose. Can you retain the exact same style, but shorten the number of words considerably?" "These feel generic. I'd like stuff that comes across as insightful, non-obvious, and specific." 1. Collation. I had ChatGPT put slides in order. For example: "Put all the slides together in sequence. Make sure you don't miss anything." "Move the opening questions as the second slide. Move the final takeaways, which is currently the last slide, to just before the final set of questions." At the end of the interview, I had all the content for the slides. Marp converts Markdown to slides I use Marp, a JavaScript tool that turns Markdown into slides Why Markdown? It's natural for programmers and LLMs. ChatGPT renders rich text in Markdown. Why not RevealJS? Despite a Markdown plugin, RevealJS is built for HTML. Marp is built for Markdown. I created a bookmarklet that copies text as Markdown. Using this, I converted the ChatGPT slide transcript to Markdown, saving it as README.md. The Marp for VS Code plugin makes it easy to preview the slides when you adding YAML frontmatter like this: LLMs create supporting images I use ChatGPT or Gemini to create images that support the slides. For example this slide includes an image of a robot psychologist generated by Gemini's ImageGen 3: Robopsychologist Today, with native image generation in Gemini 2.0 Flash and GPT 4o, I'd likely use those. They have much better character control. Deploying on GitHub Pages I use GitHub Actions to render the slides and deploy them on GitHub Pages. Here's what the key steps look like: What's next? I plan to make 3 improvements to this workflow: 1. Adding images directly with voice prompts. 2. Adding diagrams (e.g., Mermaid). 3. Creating a custom GPT that auto-deploys slides on GitHub when I say "Publish these slides." If both of these work, I'll be able to create and publish an entire slide deck just by rambling to ChatGPT for an hour.


A voice-to-code CLI workflow makes LLM-assisted live coding faster, more engaging, and smoother for audiences than traditional typing-heavy demos.

Voice coding is the new live coding In Feb 2025 at PyConf Hyderabad, I tried a new slide format: command-line slideshows in bash. I've used this format in more talks since then: LLMs in the CLI, PyCon Singapore, Jun 2025 Agents in the CLI, Singapore Python User Group, Jul 2025 DuckDB is the new Pandas, PyCon India, Sep 2025 It's my favorite format. I can demo code without breaking the presentation flow.\ It also draws interest. My setup was the top question in my PyCon talk. In Sep 2025, at PyCon India, I extended the setup for voice typing. talkcode.sh is a Bash pipeline that: uses ffmpeg to record mic into as 16 kHz mono, voice-optimized .opus sends audio to Gemini via llm for transcription uses awk to extract the code fence uses xclip to copy the code to the clipboard uses xdotool to paste it back to the original window /{f=!f; next} f{buf=buf$0"\n"} END{print buf}' \ | xclip -selection clipboard Bring last window to foreground and paste from clipboard if [ -n "${ACTIVEWIN:-}" ]; then xdotool windowactivate --sync "$ACTIVEWIN" sleep 0.08 xdotool key --clearmodifiers ctrl+shift+v fi During the workshop, I said, "Which (judicial) bench has the longest pending cases," and it generated a DuckDB query that, single-shot, ran correctly on the Indian High Court judgements dataset. But LLMs are slow and break the flow. Here's how I keep the room engaged: 1. Dictate, don't type. Speaking is faster and more engaging. That's why I built this workflow. 2. Avoid Alt-Tab. Bring the LLM into your app. Window-switching and copy-paste break focus for you and the audience. 3. Always stream output. Narrate as it loads. | tee /dev/tty streams while piping. 4. Answer questions while you wait. Keep a Slido Q&A open and address the top ones while waiting for the LLM. LinkedIn

Voice coding is the new live coding


Comparing national wages with model hourly costs suggests AI is becoming the cheapest worker globally, with especially disruptive implications for offshoring-heavy economies.

Wage Rates of Nations and LLMs How much does an LLM charge per hour for its services? If we multiple the Cost Per Output Token with Tokens Per Second , we can get the cost for what an LLM produces in Dollars Per Hour . (We're ignoring the input cost, but it's not the main driver of time.) Over time, different models have been released at different billing rates. Most new powerful models like O3 or Gemini 2.5 Pro cost $7 - $11 per hr. bar-chart-race visualization To get a sense of this, let's look at wage rates across countries and industries: Rate ($/hr) Countries (avg hourly wage) Models 0–2 Bangladesh ($1.42/hr), Pakistan ($1.65/hr), Vietnam ($0.94/hr) devstral-small ($0.01/hr), gemini-2.5-flash-preview ($1.50/hr) 2–5 Brazil ($3.09/hr), Mexico manufacturing ($4.90/hr) claude-sonnet-4 ($2.23/hr), codex-mini ($2.54/hr) 5–10 India ($5.03/hr), South Africa avg ($9.38/hr), Poland min wage ($7.35/hr) o3 ($7.16/hr), claude-opus-4 ($8.67/hr) 10–15 Germany ($12.93/hr), France ($12.41/hr), UK ($14.43/hr) gemini-2.5-pro-preview ($11.89/hr), gpt-4.5-preview ($13.10/hr) 15–20 Spain ($15.87/hr), Italy ($16.80/hr), Japan ($17.98/hr) No recent models in this range Workers in Europe and Japan are already more expensive than the more expensive models, at $12+ per hour. India, Brazil, Mexico etc. are more expensive than most of the average models. Once a language model’s run-time cost drops below the local minimum wage, the “offshoring” advantage disappears. AI becomes the cheapest employee in every country at once. Countries whose economies depend on being the "cheaper alternative" for labor-intensive work face potential economic disruption. Paradoxically, workers in countries with strong labor protections, unions, and higher wages (like Germany and France) may paradoxically be safer from AI displacement. Source code : sanand0/llmpricing Analysis : ChatGPT Comments Soumendra Kumar Sahoo 24 May 2025 1:44 pm: The white collar workers jobs are in danger compared to blue collar ones.

Wage Rates of Nations and LLMs