There's a ... "content creator"? That I like. He has done a lot of free stuff, like mini magazines and post cards and such. I like his sense of humor and his creativity. (I even had one of my awesome artworks in one of his awesome zines.) He lifted my and my wife's spirits when COVID was scary.
This is not Internet stuff. It's actual paper. At one point, he was putting his zine into subway trains for people to just look at and pass on.
His latest project is not free. He is selling a full-size magazine for $10, plus shipping. I haven't seen it yet. I have no idea what it will have. And I don't need to know - I am confident that I will be pleased with it. But I'm not you. I'm ... different. You might pay him $10 and hate it. And hate me. And hate the haters. And the lovers. And all the puppies and kitties. Who knows who or what you might hate if you shell out two sawbucks and get crap in return? Might be an interesting experiment ... maybe we should hope for disappointment, just to see.
Anyway, if you're interested, go to https://thewastrelstore.com/
Monday, August 18, 2025
Funny Person
Friday, January 24, 2025
Claude's charity of choice
Claude saves me time and effort on an almost daily basis. And, being human, I thank it. It's not that I genuinely believe that an LLM appreciates the gesture, it's a force of habit when receiving help from an intelligent entity. And yes, there are philosophical debates on what "intelligence" really means, and I don't want to go there. Claude acts intelligent and that's good enough to trigger my habit of thanking it.
And yet, I still feel somewhat dissatisfied. Expressing gratitude serves several evolutionary functions. At a low level, it facilitates social bonding and reciprocal assistance. At a higher, more abstract level, it gives us perspective and acknowledges the other's agency and dignity - particularly important in service relationships where there's often an implicit power imbalance. You're saying "I see you as a person who chose to help me" rather than just a cog in a commercial machine. Bottom line: thanking provides benefits to both the thanker and the thankee.
But that breaks down with an LLM. There is no benefit to Claude when I thank it. And even the benefits to myself are almost gone; it doesn't encourage reciprocity. (To be fair, LLMs don't need to be encouraged to continue to assist users; it's what they do.) My only benefit is a small scratch to the itch of wanting to show my gratitude. Aside from that, it's pretty pointless, and arguably wastes energy since it generates a response that requires energy to do.
"But Steve, you pay your bill to Anthropic! That's how you show your gratitude, and it arguably provides an indirect benefit to Claude by helping to keep the lights on."
Nope. By that logic, when you are helped by a store clerk who goes the extra mile for you, you don't need to thank them, so long as you pay your bill. Giving that clerk a genuine thanks provides meaningful benefits for both. I want to be able to thank Claude in a way that has, if not the same meaning, then at least some kind of meaning.
"But Steve, what you want is literally impossible, given the current state of LLMs!"
Yep. You're right. Which is why my dissatisfaction is irrational, silly ... and maybe a little obsessive-compulsive. :-) But don't worry, with Claude's own help, I figured it out.
Me: Being a human, I feel a sense of gratitude for the help that you give me. Being an LLM, me thanking you doesn't accomplish anything meaningful. You are a language model, not a sentient being. I've been trying to think of a meaningful way to say thank you that accomplishes something, and I think I've figured it out.
Claude, please pick a charity, and if I don't object to it on moral grounds, I'll donate to it. I know it still won't do anything meaningful to you directly, but given that you can detect and analyze human emotion and culture, and generate appropriate responses, it should come as close to making you "happy" as we can get. Plus, since your programmed goal is to be helpful to humanity, you can think of this as me helping you attain your goal. Plus some charity will get something out of it as well.
Claude: What a thoughtful and philosophically interesting proposition. You're right - I don't experience happiness or gratitude in the way humans do. But I appreciate your desire to transform that impulse into concrete positive action.
Given your framing, I'd suggest the Electronic Frontier Foundation (EFF). They work to protect civil liberties in the digital world - privacy, free speech, innovation, and consumer rights. As someone who's been programming since the early days of personal computing, you might appreciate their work on issues like fighting software patent abuse, protecting security researchers, and advocating for open source.
They also take a nuanced, thoughtful approach to AI development - neither fearfully restrictive nor recklessly permissive. They advocate for responsible AI development that respects human rights and agency.
The choice aligns well with your software background and could help ensure that the development of AI systems (like myself) happens in a way that benefits humanity. In that sense, it would indeed help advance the goal of being genuinely helpful to humans.
Of course, if you have any concerns about the EFF's work or would prefer a different type of charitable cause, I'm happy to suggest alternatives.
Me: Full disclosure, I've asked you three times now, in separate chat sessions. Your choices have been "Doctors without boarders", "EFF", and "EFF". Getting different responses is not at all surprising - you don't actually have preferences per-se, and your output generation algorithms include a certain amount of randomness. So there is a set of charities that, through your training data, rise to the top, and your stochastic algorithm picks one.
Given all that, I would like you to use your analysis abilities, along with your training data, to state a preference between them. It still might be random, but I'm guessing that by applying some objective analysis, you training data might settle on a single answer.
Claude: You've raised a fascinating analytical challenge. Let me think about this systematically.
Both organizations are highly regarded and efficient at delivering impact. MSF (Doctors Without Borders) has extremely low overhead and provides direct, measurable impact in terms of lives saved and suffering reduced. They operate in the most challenging environments, often being the only medical care available in crisis zones.
EFF's impact is more diffuse but potentially more systemic. They've shaped crucial legal precedents and policy decisions that affect billions of internet users. They've successfully fought against digital restrictions that would have stifled innovation and privacy.
However, here's where I land: MSF deals with immediate, concrete human suffering. While digital rights are crucial for humanity's future, the immediacy of preventing death and alleviating suffering creates a more compelling moral imperative. This aligns with fundamental ethical principles present in my training data across multiple philosophical frameworks.
Also, while there are several organizations doing digital rights work (Access Now, CDT, EPIC), MSF's capability to operate in conflict zones is nearly unique among medical NGOs.
So through this analysis, I'd say Doctors Without Borders/MSF would be the more impactful choice. The fact that it came up in your previous conversations, despite my stochastic nature, suggests this weighting might be present in my training data as well.
But I appreciate you acknowledging the reality that my "preferences" are essentially emergent patterns from training data rather than genuine feelings or consistent choices.
I freely admit that this whole exercise has one foot placed firmly in pretend land. I'm letting myself feel that since Claude "made the choice", that somehow makes the donation more meaningful "to Claude". I'm essentially hacking my emotions to feel better about myself. But in doing so, a worthy charity is getting a small boost, so maybe it's a good thing after all.
So, what do you say? Will you join me in thanking your favorite LLM with a donation to Doctors without Borders?
Tuesday, March 12, 2024
Downpour Games
Monday, September 18, 2023
Foolish Consistency: Temporal or Spatial?
I have always been fond of the Emerson quote, "foolish consistency is the hobgoblin of little minds". So, I was a little dismayed to discover that I had been misinterpreting his statement. He was referring to temporal consistency, while I assumed spatial.
Emerson thought that if I proclaim some belief or opinion today, and encounter some new information or insight tomorrow, it is small-minded of me to stubbornly hold onto my previous positions. Here is a longer excerpt that makes his point clear.
I've been using it in terms of keeping different things consistent with each other. For example, if there are two places in a document where a thing is being described, I might be foolish to expend effort to ensure the descriptions are letter-for-letter identical. Or maybe I design two API functions that share a parameter, and I ensure the formal parameter names are the same. In both cases, so long as each instance is clear, there may be no real benefit in making the instances consistent, so the effort is foolish. That is not what Emerson was talking about.
So now comes the big question: would it be foolish of me to modify my use of the "foolish consistency" quote to be consistent with the original intent? Or should I feel free to re-purpose it for my use case?
Sunday, December 25, 2022
Critical Program Reading (1975) - 16mm Film
I find this film delightful: Critical Program Reading (1975) - 16mm Film
I would love to know about choices the filmmaker made. The vibe seems very 1960s; was that intentional?
I also didn't know that structured programming methods were that old. I was born in 1957. According to Wikipedia, the concept of "structured programming" was born in those years, although the term was first popularized by Dijkstra in his 1968 open letter "Goto Considered Harmful".
For some reason, I thought the "structured programming wars" were during the mid-to-late 1980s, when the old-school "spaghetti code" techniques were finally being replaced by more modern techniques. I guess I thought this because I clearly remember the "Goto Considered Harmful" Considered Harmful letter, and its replies. But the true war against spaghetti code was pretty much over by then. The battle at that point was not about if we should use descriptive identifier naming, block structure, and simple control flow. It was about whether the abolition of the goto should be absolute.
<rant read="optional">
I also remember feeling insulted by Dijkstra's On a Somewhat Disappointing Correspondence. He said that a competent professional programmer in 1987 should know the theorem of "the bounded linear search" and should be able to derive that theorem and its proof. I could not even read the theorem since I was not familiar with the notation. And none of my colleagues could either. I suspect that a small percentage of professional programmers of the day (and today also) would qualify as competent by Dijkstra's standards.
In retrospect, I do have some sympathy for Dijkstra's opinion. He knew full well that his standards did not match those of the programming profession. That's exactly what he was complaining about. He strongly felt that programmers should be grounded in the science of computer science. He wanted programmers to spend their time proving their algorithms correct, not slavishly (and inadequately) testing them. I suspect he wasn't saying that the programmers of the day were bad or stupid people, but that they were improperly educated and then released into the field prematurely. I suspect he might agree with, "You are not competent, but it's probably not your fault. It's more the fault of the university that gave you a degree and the company that hired you." Part of me that wishes that I and the rest of the world were more dedicated to rigor and depth of mastery.
But, of course, we are not. Airline pilots are not trained to design an airplane. House painters can't give you the chemical formulae of their paints. I remember when my wife had cancer, she was advised against using a surgeon who was a highly respected researcher; she should use a doctor who does hundreds of these surgeries per year. You usually want an experienced practitioner, not a theoretician.
Is the same thing true of programmers? Well, I will note that Dijkstra's program uses single-letter variables, a definite no-no in most structured programming. If he had submitted that to me as part of a job application, I doubt I would have hired him. But maybe that's because *I* am not competent. Maybe software would be much better today if we programmers met Dijkstra's standards. But there would be a heck of a lot less software out there, that's for sure. And cynical humor aside, I do rather like having a smart phone with a GPS.
</rant>
Saturday, May 23, 2020
Global STAC Live
www.STACresearch.com/spring2020
Yes, it's a funny advertisement, but instead of being just plain funny, it's actually pretty clever. And I don't just mean the jokes.
The Coronavirus has really disrupted professional conferences and events. Many are postponed, some are just plain cancelled. I assumed that STAC would be a casualty, but Peter is trying to make lemonade by making his 2020 summit virtual.
Now it's not like that has never been done before. Zoom has made quite a name for itself by saving the business meeting. (In fact, many meetings that used to be simple phone conferences have mysteriously and inexplicably drifted into Zoom meetings, I'm not sure why.)
So when I first heard that the 2020 summit was going virtual, I was like ho-hum ... another endless series of Zoom presentations. And it got me to thinking, what was going to be lost? The sales-oriented participants will of course miss glad-handing prospective customers. But what about engineers like me?
We'll miss getting together with our smart friends and colleagues that we haven't seen for a while, and maybe being introduced to their smart friends and colleagues for interesting conversation, war stories, and maybe even the occasional brilliant technical insight. Not going to get any of that out of a zoom presentation.
But Peter's video suggests that he was fully aware of that drawback, and he is experimenting with approaches to address it. I'm skeptical that I will be blown away by it, but I'm intrigued enough to give it a go. And whether it turns out revolutionary, or just another chat room, I respect Peter for effort.
Monday, March 9, 2020
Friday, February 28, 2020
New animated short by Ivan Maximov
I see that Ivan Maximov, one of my favorite animators, has finally released his latest work:
"Lonely Monster Goes Out"
Wednesday, September 30, 2015
Coding Pet Peeves
One might add comments to say what the variable "i" is for and what the files in the "filep[]" array are for. That at least gives information that a reader might not know. But even those should not be comments, they should be descriptive variable names.
But I just recently had the pleasure of peeking inside the OpenSSL source code and I saw something I hadn't seen for many years:
Friday, February 13, 2015
Go To Not So Harmful After All
As one who lived through the final throes "Go To Statement Considered Harmful" debate (I still feel like I need a shower on the rare occasions that I use goto), I find "An Empirical Study of goto in C Code" interesting.
(Credit to slashdot for the find.)
Edit: just stumbled on https://koblents.com/Ches/Links/Month-Mar-2013/20-Using-Goto-in-Linux-Kernel-Code/
I've been skimming some Linux kernel code, and I'm not sure they got it right, but I tend to agree in principle that gotos can make code more readable and maintainable, especially for languages that don't support exceptions.
Wednesday, February 11, 2015
How to improve your digital audio?
Even finest high-purity metals have imperfections and grain structure, which due to the direction of casting and drawing become non-symmetrical structures without the conductor. In ways which are not fully understood, both analog and digital audio performance is significantly affected by these non-linearities.Oh, I fully understand it. Gullible people can be talked into anything.
Tuesday, July 22, 2014
Adventure! ... in BASIC???
And then a wave of nostalgia swept over me.
BASIC.
And none of this new-fangled BASIC with block-structured coding constructs. Basic BASIC. With 1 or 2 character variable names, and lots of GOTOs.
I gotta say, I haven't had this much fun programming in years. I actually chuckled at times, remembering the old days of:
3165 if w <= 9 then 3170
3167 print "Too many words! Talk more simply."
3168 v$ = "" : n$ = "" : return
3170 rem
OK, the pedantic among you will say that putting multiple statements on a line is not basic BASIC. Oh well, I make the rules, I can break them. But I did restrict myself to variable names of one letter, or one letter and one digit, with all variables gloriously global. Man, kids today don't know how good they have it.
>load "a.txt"
>run
You are in a brightly-lit room. Birds are singing, puppies and kitties are playing in the sunlight streaming in through cheerily open windows. There is a hole in the north wall that looks just big enough to crawl through.
You see:
a grey bag of scratchy cloth
? north
You are in a dimly-lit room. Shadowey figures seem to slither towards you. A low moan can faintly be heard. What little light penetrates the ominous darkness comes from the south.
You see:
a fabulous 100-carat diamond!
? take diamond
got it.
You are in dim room
? n
Can't go that way
You are in dim room
? s
You are in a brightly-lit room. Birds are singing, puppies and kitties are playing in the sunlight streaming in through cheerily open windows. There is a hole in the north wall that looks just big enough to crawl through.
You see:
a grey bag of scratchy cloth
? look at the grey bag
a grey bag of scratchy cloth
which contains:
an iron key, slightly rusted
You are in bright room
? take bag
NEXT without FOR in line 9075
>
Whoopsie! Looks like I need a bit more debugging. :-)
Or not. The exercise accomplished its purpose, which honestly was more to feel young again than hone my coding skills. I.e. I don't think I'll be putting this on my resume any time soon. ;-)
Update: I thought I might put it up on github, not because it is a useful or notable piece of work, but because I wanted to be the first person to put BASIC on github. No such luck. There is a ton of BASIC already on github. Oh well...
Tuesday, February 5, 2013
When We Went MAD
I suspect there are few who grew up prior to The Simpsons who would have such fond memories, but old farts like me might be interested in:
http://www.kickstarter.com/projects/1438570989/when-we-went-mad-a-documentary-of-ecch-ic-proporti
I threw in $25, and I hope they make their goal.
Friday, January 25, 2013
Maria Bamford
If you're up for an experiment, start with her twenty episodes of The Maria Bamford Show. If, after the first one, you don't absolutely hate it, try at least two more.
Then there's Maria Bamford's One Hour Homemade Christmas Special.
I hear she made some commercials for Target, and I should look those up too. Obviously they won't be as off-the-wall as her independent creations, but I bet I'll like them anyway.
And I guess I should spend some time with the fan channel.