Write a python script run with uv that will use the macos camera to take a picture of a QR code and then show the associated data encoded in the QR code.
QR codes, Macs, LLMs, and single-file, standalone CLI
AI technical debt
A recent client engagement was tough. The client had to meet stringent external deadlines for a product that needed a lot of custom code. Worse, the requirements -- business rules, input and output formats, reporting, etc. -- were scattered across many Word and PDF documents, Excel workbooks, and data schemas. In short, it was far too much for the small team to manually attend to and build upon.
The date was October 2025, and the answer then was to build a workflow using LangChain to combine multiple LLM prompts, CLIs, and input, output, and code exemplars. The guiding principle was to use the workflow to progressively improve the results. Don't manually improve the generated code; instead, refine the workflow and regenerate everything. Ie, update the prompts, change models, tighten the CLIs, improve the exemplars, reduce token use, and batch to speed generation.
It worked, until the engagement changed. New deadlines forced manual intervention with the code. Time and effort placed there took away from refining the workflow. Then more people were added to the team. The generated code became a legacy codebase to modify rather than to regenerate. Client senior management then effectively mandated vibe coding: "I don't care about quality, only features." Then a client's senior developer introduced a Claude Code skill that imitated the workflow's results but learned nothing from the experience of the original team.
The codebase is now a mess. Many "eras" of changing coding practices that we typically see in legacy codebases have now arrived in months instead of years. Updating the code has become progressively more difficult. Vibe coding, which once brought speed, is now needed just to deal with complexity. Deadlines were met, features were released, and no one believes the product is maintainable.
The software development world has changed substantially since October 2025. This experience is likely just an example of us learning how to use these new tools better. I'm thinking that in our industry's timeline, the 2025–2026 period will be the strata equivalent of when the asteroid hit and killed off the dinosaurs. A black smudge.
(I must note that the original workflow was designed and implemented by two brilliant colleagues.)
Update: I titled this posting with "technical debt", but I think the cost here is different than those I outlined in Maintenance, evolution, and technical debt are different.
Kiro's "Frontier engineering" post
I do like Kiro's Frontier engineering post. I recommend that you replace "agent" with "subordinate" and then reread. If your organization is not already proficient at these 10 principles then it has much to catch up on. It can be done, I've both seen it and helped it. The good news is that LLMs can accelerate the improvements and fill the hard-knowledge gaps.
Formula 1
Getting MVP candidates in front of users is a Formula 1 race. The race is not against competitors. It is a race against budgets of time and money, and prospective customers' attention. It makes little sense today not to use LLMs to gain speed. However, the speed of coding has never been the bottleneck after that point. The product engineering and management processes that we have used for decades to establish reliable and capable products continue to be important. LLMs do aid these processes. (Claude's basic /code-review and Matt Pocock's /grill-me, eg, have revitalized development.) In the end, it is people being tasked with giving a long-term future to your products and their users. That needs endurance to carry you far beyond the finish line.
The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise
The book is useful to any principle engineer, staff engineer, or systems architect looking for clarity as to their place and professional advancement in companies larger than their current employer.
I do now wonder how this role differs from a CTO. The purity of the CTO roles does seem to depend on the size of the enterprise. This LinkedIn discussion is useful.
Maddy Zhang's "Everything I learned at Microsoft in 9 Minutes"
- "Learn-it-all" beats "Know it all".
- Design for someone you will never meet.
- Backwards compatibility is important.
- Focus on security.
- Ship, then learn from users.
- Design constructive criticism.
- Who survives the AI area.
DeepSeek's harness and prefix caches
I've been learning about DeepSeek's harness. At the core of a harness is preparing a prompt for the next round of model interaction. An efficient prompt will take advantage of the inferencing engine's prefix cache. That is, when the characters at the start of a prompt, ie the prefix, matches an existing record in the prefix cache the inferencing engine can use the cached results to continue processing the remaining portion of the prompt.
DeepSeek's harness has a sophisticated layer managing the prompt. It is composed of an append only log and an undo mechanism. Anything added to the log is accompanied by a means of reversing the addition. The reversal does not change the log; instead it appends to the log instructions about ignoring the addition. When the harness builds the prompt it effectively recreates the previous prompt with new entries appended. The prompt (almost always) has an identical prefix. You rarely pay for the same inferencing twice.
The same log implementation is used to manage its tools (aka plugins) also. This implementation is work done a few years ago and is open source. As is the harness.
Specification "documents"
What has happened to online programming courses?
How AI Impacts Skill Formation
I finally got around to reading the paper How AI Impacts Skill Formation last night. The data is from a very small group of participants, but this is common for these kinds of studies. The summary is that the struggle to understand is necessary even for short term recall. The interaction patterns listed on pages 12-14 are useful, especially so for mentoring and self-learning.
I liked this exoskeleton analogy
For data science tasks, Wiles et al. described the impact of AI on non-technical consultants as an “exoskeleton”, the enhanced technical abilities enabled by AI did not persist when workers no longer had access to AI.
Also fascinating is that in the pilot study some 25% of participants surreptitiously used AI even thou they were told not too. Cheating really is endemic.
Visualization at the edge between intuitive and training
I've had a long term interest in visualization -- mostly implementing other people's designs. I don't believe that all visual tools need to be intuitive; many will need training to use effectively. I think this one is on the edge between intuitive and training needed.
This Widget Forces You to Think - YouTube
Preparing "Approval Tests" for refactoring Python
Emily Bache's short example of preparing "Approval Tests" for refactoring Python code is very good. Not only for the approach, but also for how advanced IDEs like PyCharm greatly support developers common editing and refactoring needs.
Reaction: Arjan Codes wrote tests the HARD way - My way is BETTER - YouTube
Don't look up
If you live in RI your home's electric meter was recently replaced to enable remote access. I have wondered how secure is that remote access? While this presentation does not address the electric meter, it does address how much of our satellite infrastructure is unsecured and accessible with cheap hardware. The presentation is about the available downlink data, but note the presenter's off-hand comment that if you fly a drone between the uplink site and the satellite you could likely gather the uplink data.
39C3 - Don’t look up: There are sensitive internal links in the clear on GEO satellites - YouTube
Update: A friend said it is easy to access the electric meter data for his home ... and his neighbors. Why is infrastructure security still so bad even in 2026!
Liberalism doesn’t necessarily maintain itself
At dinner last night a friend's comment about "being right and being ignored" reminded me (somehow) of this conversation between Cass Sunstein and Tyler Cowen
In particular,
COWEN: Now, your new book On Liberalism is primarily a defense of the liberal concept, but if someone asks you, what’s the most likely scenario for liberalism being self-undermining, what’s your worry?
SUNSTEIN: Low probability. The likelihood is that we’ll be undermined by anti-liberal and illiberal forces, not self-undermining. I think it’s fair to say or to worry that liberalism doesn’t create the conditions for its own self-perpetuation, so it’s not as if it’s self-undermining, but it doesn’t necessarily maintain itself [emphasis added]. The reason is that a society that is flourishing needs a lot of stuff in it, including norms of cooperation, norms of charity, norms of mutual support. Liberalism, in my view, doesn’t undermine those things, but other forces can undermine them, and it’s not clear liberalism has the resources to respond.
Given the times we are in, I do very much worry about our not having the resources to respond.
I enjoy the "Conversations with Tyler" podcast. The participants mostly assume you know what they know and, since I don't, this results in me very often pausing the audio and searching for a primer on what was just said.
Multi-Terra Helio Cell Vehicle
My children would have loved this Multi-Terra Helio Cell Vehicle 407 cockpit control. I especially like the addition of the fans!
Streamlit and a trivial cities explorer
Jenson's stuck desktop and Foster's recalibration of the futurism
I suspect many of you have seen by now Scott Jenson's presentation "Are we stuck with the same Desktop UX forever?" But, if you have not then it is worth your time. I went on to read the book he mentions Nick Foster's Could Should Might Don't: How We Think About the Future. Jenson's presentation suggests that Foster's book is a "how to", but it is more a useful survey of, and a call for the recalibration of, the futurism field.
Classic Design Patterns: Where Are They Now
Brandon Rhodes' talk "Classic Design Patterns: Where Are They Now" is a good critique of the "Gang of 4" Design Patterns book that dominated software design thinking for decades. Why should you give your attention to a critique of a book from 1994? In part because the critique gives concrete examples of how successful design solutions become molded into programming languages and how programming languages outgrow the limitations that originally necessitated the design solution.
I don't know of the speaker, but he seems to speak at many Python conferences.
Update: I have since watched several of Brandon Rhodes' presentations. He is a good speaker and his presentations are worth your time.
Streamlit and data visualization
I do like computational notebooks, but find them cumbersome to work within. If like me, you've been looking for a notebook-like experience, coding in python, editing using your preferred editor, auto reloading, primarily local, deployable to a small audience, etc then Kris Jenkins's talk Building Data Visualisations in Python in Minutes about Streamlit will be of interest.
Installing Pi-hole
Having become irritated by the daily deluge of web advertisements that make most sites unusable on my phone, this weekend I took the time to install Pi-hole. I'd prefer that the little Raspberry Pi Zero 2 W used an ethernet connection, but am too cheap frugal to buy yet another dongle. Interestingly, the combinded cost of the Raspberry Pi and a micro SD card is about that of a used thin client (eg an HP T630) which can be configured as a general purpose server running several lightweight services.
These two video tutorials were helpful (even if the process is quite straightforward): Block Ads on ALL DEVICES (Smart TVs) — Simplest Pi-hole Tutorial and Raspberry Pi Set Static IP.
Update: The default blocklist is very aggressive. Many community and non-profit sites use the free or low-cost tier of commercial communication services (eg, Constant Contact). The default blocklist blocks these services due to their tracking activities via image URLs. Unfortunatly, this made the community communications less worthwhile. Until I have time to better consider the blocklist I have disabled Pi-hole. For the short period the Pi-hole was enabled, it was a glorious few days of smooth, swift internet browsing. Reminded me of the early days.
