- "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.
Maddy Zhang's "Everything I learned at Microsoft in 9 Minutes"
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
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.
Unsustainable advancement
Software developers have the bad habit of switching to programming languages and tools that result in applications consuming most of the resources from hardware advancements. The new 2025 laptop runs faster than the old 2015 laptop, but not nearly as fast as its components' raw improvements should provide. The switch from installed desktop applications to on-demand web applications has resource consumption that should rightly be called gluttonous. These switches have mostly burdened the user and not the developer. With the recent advent of vide coding and agentic workflows these costs are now felt by the developer. And the costs are enormous. Collectively our datacenters consume the power output of whole electric generation facilities and the surrounding watersheds to cool them down. I don't see how this is a sustainable advancement; not for the profession and not for the planet.
Programming by coincidence
The more I think about vibe coding and see it in practice the more I am reminded of David Thomas' and Andrew Hunt's admonishment in The Pragmatic Programmer
We should avoid programming by coincidence -- relying on luck and accidental successes -- in favor of programming deliberately.
Why Stripe’s API Never Breaks
The short video Why Stripe’s API Never Breaks introduces how Stripe handles API versioning. Stripe's API URLs do not include a (consequential) version number and yet every API release is supported. Instead,
- The API client includes in each HTTP requests a header with the client's API release date, eg "X-Stripe-Version: 2024-01-23".
- Stripe's API server transforms the dated request into a current release request.
- Stripe's API server transforms the current release response into the dated response.
This does mean that each new API release needs transformers for all previous releases. I suspect that there are few breaking changes and most transformers default to the previous release's transformers.
Using a version HTTP header does not seem different than using a version number in the URL path, but there is something elegant about maintaining stable URLs across API versions. It also seems easer in most web frameworks (eg Rails) to introduce the transformers after routing.
5x cost increase
Crossref, a previous employer, has moved their infrastructure to the cloud. There are some good reasons for this, eg publication metadata depost volume is highly variable and being able to add capacity on short notice is good. But others not so much, eg search does grow but slowly over long periods where normal hardware purchasing can occur. (This may have changed since I was employeed.) What shocked me was the cost:
Moving from a physical data centre to the cloud also has some trade-offs; for instance, the cost will be approximately five times higher than running the system in the data centre; with initial data, it’s not unlikely the annual cost may be up to 2,000,000 USD. We aim to optimise and control this cost going forward.
For a non-profit with a duty to carefully steward their members' money this seems hard to justify.
My RIPTA support letter
My letter to my local state Senators and Representatives to support RIPTA.
I am hoping you can help RIPTA get the funding it needs to avoid the draconian cuts to service that are being proposed.
I am lucky in that I can work from home and only commute to my employer's Providence office a few times per month. Nevertheless, I still incur the costs of operating a car here in RI. The golocalprov.com 2022 article reports that it cost over $3000 a year to operate a car here. With average repair costs in the $150 to $250 range (which, given my recent experience, is higher now).
When I first started working for my current employer I took the 65x RIPTA bus each day. The ticket cost was very low, $2, and the bus was always full over the course of its route from Salt Pond to Kennedy Plaza. If I drove I would have had not only the car operating expenses, but also the $15 a day parking fee. Parking alone would be over $3000 per normal working year.
I can't image what it would feel like to face a $6,000 per year cost of living increase. An increase solely due the state of RI reneging on its commitment to fund public transport for all Rhode Islands. I hope you can help convince our legislators and governor of the importance of adequately supporting RIPTA.
Reneged is the right word because the Transit Forward RI program is less that 5 years old!
Update: RIPTA significantly cut route service freqency. It was already bad and is now aweful. Overcrowding is also causing buses to skip stops as they don't have capacity.
