2026 4

Things I Learned - 02 Aug 2026

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

No Juniors, No Experts

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

No Juniors, No Experts

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

Things I Learned - 12 Apr 2026

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

2025 1

If a bot passes your exam, what are you teaching?

It’s incredible how far coding agents have come. They can now solve complete exams. That changes what we should measure. My Tools in Data Science course has a Remote Online Exam. It was so difficult that, in 2023, it sparked threads titled “What is the purpose of an impossible ROE?” Today, despite making the test harder, students solve it easily with Claude, ChatGPT, etc. Here’s today’s score distribution: ...

2019 1

If you’re a seasoned developer that enjoys working with data, have good front-end skills, and are challenged by impossible deadlines, please drop me a note. I’d love to work with you at Gramener Mumbai. LinkedIn

2006 3

Facts and Fallacies in Software Engineering

Facts in Software Engineering People The most important factor in software work is the quality of the programmers. The best programmers are up to 28 times better than the worst programmers. Adding people to a late project makes it later. The working environment has a profound impact on productivity and quality. Tools and Techniques Hype (about tools and techniques) is the plague on the house of software. New tools/techniques cause an initial loss of productivity/quality. Software developers talk a lot about tools, but seldom use them. Estimation ...

Classic texts in computer science

Classic texts in computer science. Worth reading for the sheer insight. Update: The link didn’t seem to work in Feb 2007. Here’s the list. An axiomatic basis for computer programming by C. A. R. Hoare Communicating Sequential Processes (CSP) by C. A. R. Hoare Call-by-name, call-by-value, and the lambda calculus by Gordon Plotkin Towards a theory of type structure by John C. Reynolds Definitional interpreters for higher-order programming languages by John C. Reynolds An APL Machine 1970 by Philip S. Abrams Henry Baker’s Archive of Research Papers (many classic Lisp papers) The Anatomy of a Large-Scale Hypertextual Web Search Engin by Sergey Brin and Lawrence Page No Silver Bullet: Essence and Accidents of Software Engineering by Frederic P. Brooks, Jr. A Mathematical Theory of Communication by Claude Shannon Communication Theory of Secrecy Systems by Claude Shannon Bayesian Networks without Tears by Eugene Charniak A Universal Algorithm for Sequential Data Compression by Jacob Ziv and Abraham Lempel A Relational Model of Data for Large Shared Data Banks 1970 by Edgar F. Codd Let’s Build a Compiler 1988-1995 by Jack Crenshaw Gauging Similarity via N-Grams: Language-Independent Sorting, Categorization, and Retrieval of Text by Marc Damashek Worse Is Better by Richard P. Gabriel Hints on Programming Language Design by C.A.R. Hoare Why Functional Programming Matters by John Hughes The Design of APL by Kenneth E. Iverson The Early History Of Smalltalk by Alan Kay Computer Programming as an Art by Donald E. Knuth The next 700 programming languages by Peter J. Landin Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) 1960 by John McCarthy FORTH - A Language for Interactive Computing by Charles H.Moore Teach Yourself Programming in Ten Years 2001 by Peter Norvig Parenthetically Speaking, a collection of essays from the 1990s by Kent M. Pitman The Definition and Implementation of a Computer Language based on constraints by Guy Lewis Steele Jr. Growing a Language by Guy Lewis Steele Jr. Epigrams on Programming by Alan J. Perlis The Complexity of Theorem Proving Procedures by Stephen A. Cook Steps Toward Artificial Intelligence by Marvin Minsky The Original ‘Lambda Papers’ by Guy Steele and Gerald Sussman A Method for Obtaining Digital Signatures and Public-Key Cryptosystems by R.L. Rivest, A. Shamir, and L. Adleman The UNIX Time-Sharing System by Dennis Ritchie and Ken Thompson Comments jawahar 6 Feb 2007 5:52 am: anand this link is not working !! Classic-texts-in-computer-science – maxviv 5 Jun 2016 7:15 pm (pingback): […] Classic texts in computer science […]

Why we all sell code with bugs

Why we all sell code with bugs. All the reasons are tied up in one truth: every time you fix a bug, you risk introducing another. Don’t we all start out with the belief that software only gets better as we work on it? Nobody on our team intentionally creates new bugs. Yet we have done accidentally.

2005 2

Top 10 IT Google Videos

Top 10 IT Google Videos.

Metafor

Metafor is a tool that turns English into code. Check out the movie demo and Hugo’s Metafor website.

2004 3

Tips on writing better software

Alan Cox: Tips on writing better software.

Outsource your own job

Outsource your own job. A programmer outsourced his job to an Indian programmer. Salary arbitrage: $67,000 - $12,000 = $55,000. He’s planning to get another job and do this again. (It’s probably not true, though)

2003 1

Blogger at Google

A blogger’s first week at Google. Ovidiu Predescu. via GoogleBlog

2002 2

Famous software glitches

Speaking of bugs, here are some famous software glitches – right from the Patriot missiles misfiring to the London Millenium bridge wobbling. Some links are broken, though. (More glitches and links)

Music helps identify software bugs

Music helps identify software bugs. I’m sure it can be extended to many other forms of ordered data. DNA sequences, time series, etc.

2001 4

Joel on Software

Joel writes on software. “Good software takes 10 years” is a good read.

The Cathedral and the Bazaar

Eric has updated The Cathedral & the Bazaar

Software horror stories

Software can kill. Literally. Read software horror stories.

Microsoft interview question

“Write a one-line C expression to determine if a number is a power of 2”. Microsoft is famous for asking such questions to their programmers. Or you might want to find out what the assembly code CWD XOR AX, DX SUB AX, DX does. Satish’s site has the answer, but not the question. More questions: 1 2