Trashfuture were really cooking when they taped “The Sulla of Suburbia” with Patrick Wyman.
They want Sulla:
They have a hierarchical view of the world:
November saying that they really want Hitler:
The op-ed departments love this stuff:
Trashfuture were really cooking when they taped “The Sulla of Suburbia” with Patrick Wyman.
They want Sulla:
They have a hierarchical view of the world:
November saying that they really want Hitler:
The op-ed departments love this stuff:
I think this is a well argued plea by Ken Shirriff to stop using the term “cargo cult” and I agree with it but would like to add two things.
With a non-English speaking audience that does not have the same priors, nobody will have an idea what you are talking about if you use the term “cargo cult”. You’ll be stuck explaining the term in a ham-fisted way that will fail to convey the huge amount of history and social science involved.
One problem with rejecting the term is that it lets software engineers off the hook and allows them to pretend the way they work is different from the tribal inhabitants of pacific islands. I argue that most software engineering practice is based on folklore and is deeply tribalistic.
https://www.righto.com/2025/01/its-time-to-abandon-cargo-cult-metaphor.html
No port/adapter terms to learn, no unnecessary layers of horizontal abstractions, no extraneous cognitive load.
Reducing cognitive load is continuous battle. The entropy direction of a software system is always towards more complexity.
People add a lot of this stuff out of either inexperience or because they need to look smart. The simple code that gets the job done is often looked down upon.
What’s happening in Flint is a good example of how the social effects of institutional lapses are much more difficult to fix than just replacing a bunch of pipes. We’re seeing the same effects happening around COVID and its after effects and we’ll see many more examples of government distrust and chaotic confusion in the coming decades.
For those who want to introduce some whimsy into their programming and for whom using a variable width font in your code editor is a bit too far, there is now Comic Mono (via). It doesn’t even look all too terrible.
(After using Iosevka and Inconsolata for a long time, I’m now as are many people a happy Jetbrains Mono user.)
I would have been surprised if Devin had performed even 1/10th as well as it was hyped. This is a good clean write-up.
Social media excitement and company valuations have minimal relationship to real-world utility. We’ve found the most reliable signal comes from detailed stories of users shipping products and services.
I love Github Projects for tracking work. It’s close to the code and engineers understand it natively. I feel you can deliver features of any size with it if you work with the tool.
The only thing that’s a bit annoying is the lack of improvements from Github. There’s a bunch of quality of life features I’m used to from other tools that would really make a difference. But now with LLMs we don’t have to settle.
I asked Cursor to write me a user script that adds a “Create Follow-up Task” button (that I used a lot on Asana) to issues on Github. It did a reasonable enough job that I could tweak and then have something working for me. I could write this myself of course but the hurdle of figuring out the format and the wiring felt like a blocker.
https://github.com/alper/user-scripts/blob/main/github-followup-issue/github-followup.user.js
As if it were possible for me to love htmx more, they post a governance statement that the project is stable and there will be no more new features.
This is so much better than the endless revamps and scope creep that other projects suffer from.
I’ll have to agree here that for normal engineers it’s better to not really engage with Glue work.
Just drop it. If it’s important, the org will figure out a way to pick it up. That’s why you are part of an org in the first place.
Imagine shipping an app that is so bad that the CEO has to step down. Sonos has made it happen.
https://www.theverge.com/2025/1/13/24342179/sonos-ceo-patrick-spence-resignation-reason-app
Running a LLM on a Nintendo Switch is a marvellous little hack and it’s also a testament to the strength of NVIDIA’s platform.
I think Facebook rolled back their block of Pixelfed but they’re right to be spooked. Showing a bunch of pictures in a stream hardly seems like a technological challenge. And what are all the people working at Instagram doing other than figuring out novel ways to track you and serve you ads?
You should definitely try out Pixelfed which is more than usable.
A lack of knowledge about queueing theory and a dash of wishful thinking make this a common trap for most developers to believe that as long as you add bigger queues you can wiggle your way out of any scaling problem.
You can’t.
Brazil still remembers that it’s a state with state power and has found a delightful habit of pouncing on social media sites. Other states should follow suit.
A more than accurate description of my entire LinkedIn experience.
https://matduggan.com/stop-trying-to-schedule-a-call-with-me
The two entities arguably most responsible for keeping Germany in the digital dark ages, the CSU and Telekom, have found each other.
The Agents chapter from Chip Huyen’s book “AI Engineering” is clear and enjoyable to read. She’s right that “the concept of an agent is fairly simple” but building something functional still looks like a massive lift.
Maps for where you’ve been in Europe and the US (via). Stayed means having spent a night there which means the only places I’ve visited and not spent the night are Slovenia (went over the border to hike a mountain there) and the Vatican.
I should probably upgrade Turkey to lived depending on your definition: stayed in your own house or registered as a resident.
My score for the US is negligible and I don’t see this changing any time soon (maybe ever).
A live coding environment to create 3D graphics using signed distance functions written in the Janet programming language. Click through and edit some of the embedded examples to get a feel for how amazing this is.
A thought-provoking article about how to counteract car bloat. I would add that driving a SUV is even worse than smoking because it mostly harms others, not the person doing the driving themselves.
In Germany for many transactions you need a proof of address which a Personalausweis provides for German citizens. Us foreigners don’t get one however often we ask for it. In the Netherlands moving through the country without a battery of chip cards (OV chipkaart, Bonuskaart, OV-fiets etc.), apps and associated services is costly and annoying.
The signs have been there for a while but China seems to be pushing this much further along. The question is whether it’s a deliberate move or that the number of people affected is so small that they’re a negligible edge case for the policy makers over there.
It’s rare to find writing in German as lithe and delightful as what Christoph Rauscher puts out. The monthly lists are one particularly good example. I’m learning new and interesting words still in most of his pieces.
I totally agree that “Writing = Design” and you should hire him for Design/Writing/Illustration: https://christophrauscher.de/writing/
A tear down of how women still get erased from narratives like Toshi here in the new Bob Dylan movie.
https://merrillmarkoe.substack.com/p/a-complete-unknown-the-ballad-of
I think Home Row Mods for your keyboard are too complicated by far to use but I’m glad these kind of comprehensive guides exist.
The lamb ad does a good job showing the madness that is online comments sections. Also it made me want to eat a nice piece of lamb.
I’ve had to spend more time than I like thinking about how datetimes are stored in databases and even the commonly accepted practice of storing UTC does not work for all cases.
Specifically when you store something that would happen in the future, you need to store the location of the event as well. Otherwise any time of daylight savings change will shift your event around. This is not just for single events but can also happen for say ordering cut-off times which aren’t pinned to a single date.
Let’s see how this develops but good to see a positive healthcare story for AIs.
A very useful thought experiment whenever anybody tries to pretend LLMs are ‘human’ because they sound human.
[…] the Rands Leadership Slack is the most impactful thing I’ve built outside my family and job.
I can testify to the Rands Leadership Slack being an impactful thing. I’ve joined it a long time ago and more or less everything I know about engineering leadership I’ve learned there. I’m eternally grateful for all the hard work the people there put into making that a nice place to be.
RARE: Retrieval-Augmented Reasoning Enhancement for Large Language Models
Medical QA depends heavily on domain-specific knowledge that is not always available within pre-trained models, necessitating knowledge-based retrieval from external sources.
In addition medical knowledge evolves rapidly, and new treatments or updated guidelines may not be included in the model’s pertained corpus.
The question example for the reasoning process in Figure 1 is on a multiple-choice question. That seems overly simple.
In parallel, Commonsense Question Answering shares similar complexities with Medical QA, particularly in its reliance on structured multi-step reasoning and iterative evidence retrieval.
rStar (Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers)
The rStar approach seems worth diving into. That will be the paper I read next.
Monte Carlo Tree Search
enabling the open source LLMs (LLAMA3.1) to achieve competitive performance with top closed-source LLMs like GPT-4 and GPT-4o.
We’ll come to this later in the paper. Their conclusion is that they can trick out LLAMA to get similar performance to GPT-4 in these domains.
Upper Confidence Bound applied on trees (UCT)
In contrast, rStar incorporates five distinct actions that enable more adaptive exploration:
A1: Propose a One-Step Thought. This action generates the next reasoning step based on previous steps, allowing the LLM to build the solution incrementally.A2: Propose Remaining Thought Steps. This action enables the LLM to produce all remaining reasoning steps in one inference, similar to CoT, for simpler questions.
A3: Generate Next Sub-question and Answer. This action decomposes the main problem into a sequence of sub-questions, each solved in turn. A4: Re-answer Sub-question. This action allows the LLM to re-answer a previously generated sub- question, increasing accuracy by using few-shot prompting.
A5: Rephrase Question/Sub-question. This action rephrases the question to clarify conditions and reduce misunderstandings, enhancing the LLM’s interpretation of the problem.
I need to trace the rStar algorithm after reading the original paper. The explanation here is too short.
These queries target information that can either support or refute the content of each statement, ensuring comprehensive factual verification.
How does this approach deal with (non-)negation that LLMs often have a lot of trouble with? From a language perspective it could just as easily say I can or can’t eat grapefruit (iykyk) based on the temperature that day but especially in a medical context these kind of errors can be catastrophic.
RARE achieves substantial gains, outperforming rStar by 5.17% on MedQA, 2.19% on MedMCQA and 2.39% on MMLU-Medical.
Even if these numbers are statistically significant (which they don’t say), these increases are really modest. I would not call this in any way “substantial”.
Looking at Table 1, RARE is as much of an increase over rStar as rStar is over the next best approach so from that perspective maybe you could call it significant. The difference between worst and best framework here is around 10% across CoT, RAG, SC, rStar, RARE.
evaluated on StrategyQA (SQA), CommonsenseQA (CQA), Social IQA (SIQA) and Physical IQA (PIQA)
The main question I have is from what percentage accuracy such a system would be reasonably possible to use in a real world context. Even at 90-95% that would seem like it would be too low to rely on when the stakes are high.
By enhancing LLMs with retrieval-augmented reasoning, RARE bridges the gap between open source models and state-of-the-art proprietary systems.
The framework has only been tested on open source models like LLaMA 3.1 and not on larger proprietary models such as GPT-4. This is due to the high number of API calls required by RARE’s iterative retrieval and reasoning process, making evaluation on closed source models prohibitively costly.
So here they repeat the statement that they’ve bridged the gap but they say they haven’t used this approach with a model like GPT-4 because the number of API calls would make it too expensive.
That leaves on the table that these kind of many-call approaches are open to OpenAI because they can do these numbers of calls much more affordably from inside the house. No real gap has been closed here and it shows again how big of an advantage OpenAI has.
That raises the question: What makes GPT-4 so good? Why does it perform so much better than open source models?
RARE is designed to identify a single reasoning trajectory that leads to a correct answer but does not necessarily optimise for the best or shortest path that maximises robustness.
Any integration into medical workflows must be supervised by qualified practitioners to ensure patient safety and ethical use.
It’s been a bit of a grab bag year but overall not as bad as 2023 and a bunch of things seem to be on track.
I got on the neurodiversity bandwagon this year.
First I got myself a self-paid diagnosis for ADHD. This result should not surprise anybody who knows me. I’ve forced myself to be very high functioning throughout my life but it can’t be denied that there were always some underlying issues. I’m on medication from the end of the year and have gone off caffeine.
I also got myself tested for giftedness and got a positive result there as well.
Both of these results were validating if nothing else and put a lot of things that happened in my life in a different perspective.
For anybody who’s not sure whether they should pursue this, my recommendation would be: You will only know how differently you can feel if you do.
I got a mole cut out of my skin. It’s a nice scar to have.
I’m fully vaxxed against FSME and got a booster for COVID in November. That brings me to six jabs in total.
It could have been a great year for sports. After having a great time on our yearly trip to the Alps, I came back to Berlin and badly sprained my ankle after falling off some stairs. I didn’t need any surgery, thankfully, but it did set me back some 8 weeks of physical therapy and having to build up to walking again.
That notwithstanding, I managed to participate in three road cycling group rides this year. MAAP opening up a store here and organising open weekly rides has been really cool. The cycling and the coffee were lit. 🔥
I cycled up the Brocken for my first ever mountain and clocked 4201km in 2024 on Strava.
It’s my goal to weigh 75kgs and I’m still as far away from that as I ever was.
Letterbox does a good job tracking this and it was a pretty good year for movies. I review all of them over there in detail but I can say the non-Potter kids movies we watched were nice and the Japanese cinema on the whole was excellent. I saw Evil Does Not Exist two times with the second time in the local theatre live scored by its composer Eiko Ishibashi.
Trakt is doing a great job keeping track of which episodes of which television series I need to watch. It’s the only way I can possibly stay on top of this.
Looks like I’m turning into a weeb just like everybody else in the culture. I watch anime in part as light entertainment and in part as Japanese immersion. It’s very hard to find anime that has any kind of thematic depth. Frieren comes closest because of how it twists the standard fantasy trope into a story about loss and reminiscence.
It was a fair though not great year for reading.
I’m continuing my trend of reading one Knausgård and one Mantel book each year. No reason not to do that again this year.
I picked up some poetry at Perdu during my visit to Amsterdam and have been enjoying reading that.
Every time I see Maria Stuart (which I got put on to by Past Present Future’s fantastic Great Political Fictions series) in the list, I think: “I need to read more Schiller.” but then I keep forgetting to get the files off Gutenberg. Germans sure knew how to write back in the day.
Besides the trip to the Alps, I went to the Netherlands once in 2024 for Kars’s viva and we took a trip to idyllic Hiddensee after my foot was healed. Much more travel is slated for next year!
I don’t go to exhibitions for lack of time. Besides seeing Evil Does Not Exist in the theatre I managed to burn a ticket to the opera and one to a dance show due to conflicting commitments and forgetfulness. I’m not sure whether I’m going to retry this.
I took the kids to see Ronja at an open air show which was fun.
I was a member of the Greens but I cancelled that because even if they’re the least bad political party in Germany, they have been doing a lot of things that I do not wish to support from the inside. I wrote about that here.
I continued to learn and maintain my Japanese level in preparation for my trip in 2025.
I learned a bunch around Kubernetes and Kafka but would have liked to do more programming. I refreshed my algorithms a bit and picked up Factor to play with.
The terminal I use daily (because it’s the best really), fish, has been rewritten entirely in Rust, because it’s nice and more fun: “For one, fish is a hobby project, and that means we want it to be fun for us. Nobody is being paid to work on fish, so we need it to be fun. Being fun and interesting also attracts contributors.”
I can testify to this because when most of the code was rewritten I checked it out, built it and poked around a bunch to see how it works. I don’t think I would have done that or enjoyed doing it if it had been a C++ codebase. That was also when I was confronted with the fact that what makes a terminal really complicated is not the language in which it is programmed, but the underlying system that it is an interface to.
The story of the port and its success is legendary as far as these things go.
There was a brief period where Foursquare based recommendations were good and drawn from your wider social graph. Now we’ve gone back to Yelp and Google Maps where reviews and ratings don’t mean anything. A lower than 4 star review on GMaps has netted me a cease-and-desist e-mail for defamation.
That puts personally curated travel docs and word of mouth back in play as Thrillist describes here. Every Dutch person has or knows somebody who has a Berlin Google Doc with all the Geheimtipps. Dutch people’s tastes are fairly predictable and pedestrian, so these’ll mostly be cheap Asian eateries in Prenzlauerberg but that’s also fine.
For me the most interesting recommendations for Berlin but also for other cities come through TikTok. The algorithm is well tuned to my type of person and in the short videos it’s pretty easy to size up whether somebody knows what they’re talking about or not.
https://www.thrillist.com/travel/nation/google-docs-are-the-ideal-travel-guides
As a parent and as a social media user, I don’t buy that something that’s harmful to adults is not EVEN MORE harmful to children.
The platforms need to be curtailed and this entire situation has to be shutdown as soon as possible. We can keep our kids off smartphones but what about others?
Musks’s attack on Wikipedia is another step in getting rid of information sources where they can’t control the narrative and the “truth”. Everything they’re doing is built on lies.
https://www.citationneeded.news/elon-musk-and-the-rights-war-on-wikipedia
Hans de Zwart’s end of the year media overviews are one of the highlights of what still happens on personal blogs for me. He’s a voracious reader and one of the rare people who acts on his moral clarity. Also, Hans is a great guy and I had the chance to briefly catch-up with him last year.
I’ll see if I can pull something together, but definitely go through his list. I always pick up more than a couple of interesting things to explore.
The o3 AGI result looked so noteworthy that I dove into it. I read one of the papers that’s at the base of the approach and thought it was pretty interesting.
Turns out that it was mostly bullshit and everybody was doing another round of “let’s pretend that AGI is real”. What a shambles.
Trust Laura Olin, nobody has to stay on Twitter. It’s a bad place that’s only getting worse.
An overview of the year in databases by Andy Pavlo that does not pull any punches. I learned a bunch of things (and I somewhat keep up with this area).
https://www.cs.cmu.edu/~pavlo/blog/2025/01/2024-databases-retrospective.html
I think for sure we’ve built an Erlang but even then again Erlang is such an esoteric environment that I would barely consider using it to be an alternative. Where would you start and how would you get other people onboarded?
A cautionary tale of how you can try to avoid Kubernetes to then step-by-step build the same thing yourself but poorly.
https://www.macchaffee.com/blog/2024/you-have-built-a-kubernetes
Another take on the old adage that writing the code is the easy part of software engineering. The real work is figuring out what has to be built and how. Once that is clear, the actual building can be done relatively quickly and linearly.
I think the notion of a dead program is useful though it’s not always that clear cut:
The death of a program happens when the programmer team possessing its theory is dissolved. A dead program may continue to be used for execution in a computer and to produce useful results.
https://olano.dev/blog/software-design-is-knowledge-building
The MSF year in pictures is an unsparing overview of the circumstances that the rest of the world has to live in. Grim.
A paper where they fine tune an LLM to be able to answer some questions itself and figure out for which questions it needs to use a specialized tool. Intelligent tool usage seems like it would expand the use cases for LLM driven systems much more than any kind of scaling (real or imagined).
However, scholars note that their abilities are capped at approximately high-school levels
That seems like a noteworthy statement especially if you are looking to LLMs to provide “novel thinking”. It would seem much more that high school problems are abundantly available and relatively trivial so they see a specific focus.
For numerical answers in the MATH and SciBench datasets, we consider answers correct if they fall within a small tolerance range of the true value, specifically within ±5%.
Don’t really see why you could not get exact answers in a mathematical domain.
This performance gap on public benchmarks is likely due to the larger parameter count and specific optimization of state-of-the-art models on the open-source datasets.
Same as with the high school questions. These datasets are easily available and draw attention so the models overfit on them.
The model Ours-Pn demonstrates performance comparable to Base-Pf , both showing a significant improvement over the base model. This similarity indicates successful internalization of distilled knowledge from tools. The transition from Ours-Pn to Ours-Pi showcases further improvement in answer accuracy, resulting from the model’s enhanced ability to intelligently switch to tools for harder questions.
This is the core proposition of the paper. Looking at Table 1 with the accuracy percentages there is something of an improvement but it does not really look dramatic or so convincing that you could use these systems in any critical context.
We’re looking at increases of 10-20% and an accuracy that’s still well under 90% (which I’m also not convinced would be usable).
We introduced a novel two-component fine-tuning approach to enhance Large Language Models (LLMs) in solving scientific problems of varying complexity.
One of the key issues with the paper I have is how much work the term “scientific problems” is doing. If this is published, people are going to think that the LLM is solving actual novel issues where in this case it’s just filling in relatively basic question/answer pairs that are well understood. Calling them problems is problematic.
The most interesting part of the paper is the appendix where you can see the actual questions and answers in the various datasets and the prompts they used (with example responses). The answers mostly are multiple choice which already influences how many of them you should expect to be correct.
Monolith: Real Time Recommendation System With Collisionless Embedding Table
I didn’t get that much from this paper, probably because it’s pretty high level and I don’t have a strong background in recommendation systems.
The approach is their Cuckoo Hashmap for embedding from which they can update parameters on the fly using existing data engineering pipeline technology.
Instead of reading mini-batch examples from the storage, a training worker consumes realtime data on-the-fly and updates the training PS. The training PS periodically syn- chronizes its parameters to the serving PS, which will take effect on the user side immediately. This enables our model to interactively adapt itself according to a user’s feedback in realtime.
Eight Things to Know about Large Language Models
A bunch of stuff that maybe was somewhat surprising a year ago but by now should be common knowledge for anybody even half following the developments in this field.
Some interesting bits in there but for the rest it’s a bit rah-rah because the author works at Anthropic.
In particular, models can misinterpret ambiguous prompts or incentives in unreason- able ways, including in situations that appear unambiguous to humans, leading them to behave unexpectedly.
Our techniques for controlling systems are weak and are likely to break down further when applied to highly capable models. Given all this, it is reasonable to expect a substantial increase and a substantial qualitative change in the range of misuse risks and model misbehaviors that emerge from the development and deployment of LLMs.
The recent trend toward limiting access to LLMs and treating the details of LLM training as proprietary information is also an obstacle to scientific study.
Wikipedia does not really come to mind when I think of a place that’s really left-wing, but maybe that’s just me?
https://www.newsweek.com/elon-musk-takes-aim-wikipedia-fund-raising-editing-political-woke-2005742
Here’s Simon Willison writing about how he approaches his link blog.
I do something along similar lines here. I share links to various things that I find interesting and try to add what I think is interesting about them. From here I then schedule posts to Bluesky, Mastodon and LinkedIn using Buffer.
I’m not sure who reads my stuff here but I know for sure that people see the exhaust on those platforms. The main reason why I blog them here is to have my own repository of knowledge and links for if I ever have to refer back to it. For that I annotate things in a way where I hopefully can find it again and use site search to find ‘that one link about X I shared a while back’.
So yes, WordPress works just fine as a personal knowledge management system.
The Digital Patient Record system in Germany is built on smart cards and hardware which make it impossible to update and keep secure.
Of course a company like Gematik can’t update algorithms and keys on such a widespread heterogenous system. This is a competency that is impossible to organise except at the largest scales and even then companies like Microsoft will routinely leak their root keys.
The ‘hackers’ who made this presentation also can’t make something better than this and their culture is what led us to this point in the first place. It’s the same story with the German digital ID card which nobody uses.
The recipe is simple:
It’s a great way to make sure that everybody loses in the German IT landscape.
Solution: Simplify the architecture to a server model with a normal 2FA login and keep that server secure. Done.
From the Grothendieck biography, funny to see that the legend would express himself in German.
Riemann-Roch’scher Satz: der letzte Schrei: der Diagramm […] ist kommutatif!
Um dieser Aussage über f:X->Y einen approximativen Sinn zu geben, musste ich nahezu zwei Stunden lang die Geduld der Zuhörer missbrauchen. Schwartz auf weiss (in Springer Lecture Notes) nimmt’s wohl an die 400,500 Seiten.
Ein packendes Beispiel dafür, wie unser Wissens und Entdeckungsdrang sich immer mehr in einem lebensentrückten logischen Delirium auslebt, während das Lebens selbst auf Tausendfache Art zum Teufel geht – und mit endgültiger Vernichtung bedroht ist. Höchste Zeit unsern Kurs zu ändern!—Alexander Grothendieck
The low-latency user wants Bigtable’s request queues to be (almost always) empty so that the system can process each outstanding request immediately upon arrival. (Indeed, inefficient queuing is often a cause of high tail latency.) The user concerned with offline analysis is more interested in system throughput, so that user wants request queues to never be empty. To optimize for throughput, the Bigtable system should never need to idle while waiting for its next request.
This is also at the moment my abject suffering where we have lots of shared resources which need to stay available but can also be hammered by various parties.
Good to read that in this piece by Dan Slimmon: The Latency/Throughput Tradeoff: Why Fast Services Are Slow And Vice Versa. I read the SRE book as well but that part did not register with me back then.
I use AI tools to help me program despite them being mostly very disappointing. They save me some typing once in a while.
At least, now that I have switched from Perplexity to Cursor, I can ask my questions in my editor directly without having to open a browser search tab. I pass through a lot of different technologies in a given workday, so I have a lot of questions to ask.
For my use cases, it’s rare that Cursor can do even a halfway decent code change even in domains where there is a bunch of prior art (“convert this file from using alpine.js to htmx”). I know people who say they have generated thousands of LoC using LLMs that they actively use but there the old adage comes in: “We can generate as much code as you want, if only all the code is allowed to be shit.”
The position below is one of the more charitable positions of how AI can help a programmer and even that I don’t think is particularly convincing.
I thought I’d dive back into history and read the original paper that started it all. It’s somewhat technical about encode/decoder layouts and matrix multiplications. None of the components are super exciting for somebody who’s been looking at neural networks for the past decade.
What’s exciting is that such a simplification generates results that are that much better and how they came up with it. Unfortunately, they don’t write how they found this out.
The paper itself is a bit too abstract so I’m going to look for some of those YouTube videos that explain what is actually going on here and why it’s such a big deal. I’ll update this later.
Tree of Thoughts: Deliberate Problem Solving with Large Language Models
I came across this paper after the recent o3 high score on the ARC-AGI-PUB test. It’s a quick read and details how to scale LLMs at inference stage by generating new states at every node and so create a tree on which to perform DFS/BFS search algorithms.
A specific instantiation of ToT involves answering four questions: 1. How to decompose the intermediate process into thought steps; 2. How to generate potential thoughts from each state; 3. How to heuristically evaluate states; 4. What search algorithm to use.
For each of these steps they can deploy the LLM to generate the desired results which then scaled over the search space balloons the number of calls that need to be done (costing almost 200x the compute).
This isn’t your normal LLM stochastic parrot anymore. We’ve gone one up the abstraction chain and here we have a computer science algorithm running with LLM calls as its basic atoms.
I get to have a lot of conversations around compliance and this is as good a “SOC2 for tech people” guide as I could have asked for by the good people at Fly.
https://fly.io/blog/soc2-the-screenshots-will-continue-until-security-improves
Cal Newport has a quick list of his philosophy for busy people. Saves you from reading his books.
Something that Ed Zitron has already mentioned, internet users are being trained very rapidly to suspect everything to be a scam. In the case of honey, it’s a Paypal owned online shopping extension that lies and deceives.
I made the mistake of opening the desktop Spotify app which does not really work anymore. The UI is broken and there’s lots of irrelevant stuff going on.
Technology should become more useful, not more exploitative. It’s a simple thing to ask for.
(At some point, your music app is just done.)
Judging from this article, it will probably not be good for the acceptance of new technologies long term to build data centers in drought struck areas.
https://www.techpolicy.press/why-we-dont-know-ais-true-water-footprint
Postgres seems to reign as the database solution of choice but there are lots of new specialised databases that are worth looking at. All of these can be used in production at scale for the right application.
Fun little write-up how to make a web frontend to a dataset that’s almost infinitely large. See it at: https://everyuuid.com
That’s an amazing overview of all the things that can and will go wrong in online PvP gaming. It covers the range from networking exploits to all the in-game ways that people try to grief or abuse others.
So I felt I couldn’t really bring myself to do Advent of Code this year since I have more than enough other things to do (and watch and play) and with work and the kids, it’s always pretty miserable to keep up.
I saw this thing called December Adventure though and that fits in nicely with my current push to release a major update for Cuppings. If I’m going to be programming until late this month, then I’d prefer it to be on something that I can release.
I can’t promise that I won’t do any AoC (Factor is looking mighty cool) but I won’t force myself to do anything. With that, let’s get going.
I started working on the map view which clicking around looked like it could be really annoying. I found some dead ends and was afraid I’d have to hack in Leaflet support myself but I found a dioxus example hidden in the leaflet-rs repository.
Yes, I’m writing this website in Rust/WASM, why do you ask?
That example required a bunch of fiddling with the configuration and a couple of false starts, but now I have a vanilla map view.
I can say that I’m amazed that in this ecosystem 1. an example exists 2. that example works 3. it works in my project with a bit of diffing and 4. it seems to do what I need.
I raised a PR to the project to advertise this example on its README just like it does the others so that others wouldn’t have to search like I did. That PR got merged:
https://github.com/slowtec/leaflet-rs/pull/36
Today I’ll see if I can tweak the map view to show the location of the cafe we tapped and get things to a point where I can commit the change.
To do this I need to figure out how to pass information along to a router when we tap a venue. That should be easy enough but the Dioxus documentation is between 0.5 and 0.6 now and a lot of it is broken.
A tip from the Discord said I need to put the data into a context from a parent and then get it out again in a child. It’s a bit roundabout and required some refactoring, but it works.
Done on time even for a reasonable bed time.
Turns out my changes from yesterday did not make it to the staging server. I’ll fix that and manually run the job again.
That’s these annoying wasm-bindgen version errors that keep happening and that require a reinstall of this: cargo install -f wasm-bindgen-cli --version 0.2.97
and the dioxus-cli
. Dioxus which by the way is preparing its long awaited 0.6.0 release.
Yes, I build this on the same Hetzner box that hosts it. So here you go: https://staging.cuppin.gs
Other than that not that much will happen today since I spent most of the evening noodling around with Factor (despite my intention not to do any weird programming). It’s a nice language that’s very similar to Uiua which I tried out a while back but not being an array programming language makes it feel somewhat more ergonomic.
I can’t describe how nice it is to wake up and not have to deal with a mediocre story line involving elves and try to find time to attack a programming problem.
After today, I’m going to need that quiet morning, because I spent until 01:30 debugging an issue: Going to a detail view from the frontpage worked, but loading a detail view directly would throw an error.
There were two issues at play here:
Leaflet maps don’t deal well with being created multiple times so either we have to call `map.remove()
or we have to check whether the map has already been created and keep a reference to it somehow.
I solved it by pushing the map into a global variable:
thread_local!(static MAP: RefCell> = RefCell::new(None));
These are Rust constructs I would normally never use so that’s interesting. More interesting is that they work in one go and that they work on the WASM target.
Then the error was gone but the page was blank. Not entirely sure what was happening I poked at the DOM to see all the map elements there but simply not visible. Turns out that because of the different path, the path for the stylesheet was being added to the URL like this: http://127.0.0.1:8080/venue/176/main.css
It just has these two lines:
#map {
width: 100%;
height: 100vh;
}
But without a height the map is invisible.
Both issues are solved but not committed. I’ll see tomorrow whether I’m happy with the solution and how to package this up. Also I’m not sure how main.css
is being served on production and whether the same fix will work there.
I couldn’t help but noodle on Advent of Code a bit. Here’s my day 1 part 1 in Factor: https://github.com/alper/advent-of-code/blob/main/2024/day-01/day-01.factor
I like Factor the programming language. It’s like Lisp or Haskell but without all the annoying bits.
The environment that’s provided with it, I’m not so keen about. It’s annoying to use and has lots of weird conventions that aren’t very ergonomic.
I’ve been bad and I’ve finished part 2 of day 1 of the Advent of Code: https://github.com/alper/advent-of-code/blob/main/2024/day-01/day-01.factor#L27
Not so December Adventure after all maybe. I’ll promise I’ll finish the mapping improvements I was working on tomorrow.
Went on my weekly long bike ride. Then in the evening I didn’t have that much energy for programming other than finishing Advent of Code day 3 part 1: https://github.com/alper/advent-of-code/commit/0a74c38e7641141e10b4c48203c9e414cc492e1c
(I looked at day 2 part 2 but that just looked very tedious.)
Got in a ton of commits on Cuppin.gs today. After fixing the map, I wanted to see what would happen if I would add all 2000 markers to the map.
Performance seems to be doable but this is probably not ideal for a webpage. Dynamically rendering the venues is something for later. For now I can probably get away with filtering for the 100-200 nearest locations by distance and dumping those into the map view.
Now I’m back debugging Github Actions. I’m splitting up the build and deploy of the backend and the frontend into separate actions. Compiling dioxus-cli takes forever which is a step I hope I can skip with cargo-binstall.
Iterating on Github Actions takes forever and there really doesn’t seem to be a better way to develop this or a better CI solution that everybody is willing to use.
Spent some hours massaging the data that goes into the app. I had to add all new venues and after that I wanted to check whether any place in our 2k venue set had closed so we can take them off the display. This is a somewhat tedious multi-step process.
I have an admin binary that calls the Google Maps API for each venue to check the venue data and the business status (CLOSED_TEMPORARILY and such). But to be able to do that you have to feed each place ID into the API. The only issue with place IDs is that they expire from time to time. There’s a free API call that you can use to refresh them.
That expiration does not happen that often. What happens more, I found, is that a place will disappear entirely of Google Maps. For some reason it will be deleted. I don’t handle that case yet so there my updaters break entirely and the quickest fix around it is to delete the venue from the database and restart.
The only data issue that I still have outstanding is when venues move their location to a different address. I have a place around here that I think is still showing on its old spot.
Tried to run Cuppings in Xcode to be met with some weird compilation errors. Turns out that there’s an Expression type in Foundation that’s overriding my SQLite.swift
Expression. It’s a pretty silly reason for code to be broken: Expression – name space conflict with Xcode 16/iOS 18
Also still fighting with the frontend deployments which seem to need a --
frozen passed to them to not proactively go update package versions.
Love to have a crash on startup for the Cuppings TestFlight build and then sit down today to bake a new one and upload that and for that one to work. No clue what the issue was even though I took a look at the crashlog (that I sent in myself).
I’ve also automated building the iOS app to be done by Xcode Cloud which should making new versions (whenever the database is updated) a lot easier.
Upgraded the frontend to Dioxus 0.6.0 which just came out and has lots of quality of life issues. For my case, I did not need to change a single line of code, just change some version numbers and build a new dioxus-cli
.
I hope that maybe solves the wasm-bindgen
issues on the frontend deploy. The annoying part about the build is that it takes so long that it’s very hard to iterate on.
It’s too late even for me to see what this does. I’m off to bed. You may or may not get a new version of the website by tomorrow morning.
Spent some iterations running the frontend deploy and rerunning it but now it should be working.
I spent the evening doing manual data munging and correcting some venue locations that hadn’t been updated correctly through my data life cycle.
That forced me to clarify the two name fields the venues
table has.
name
was the original name field and was pulled from the Foursquare metadatagoogle_name
is the name field that’s pulled from Google Maps and was effectively leading but not updated correctly yet when refreshing the dataSo to figure that out I did a bunch of auditing in the list to see venues where there was a large discrepancy between the names. Something that happens is that a place will change its name but keep the same location and Google Maps place.
I also added a label to the iOS app to indicate whether this is a DEBUG
build but that messed up the layout and I guess I might as well remove it. Sometimes I get confused what I’m running, but since it’s just me running DEBUG
builds on their phone, I think I can do without.
I also started a rewrite that I’m not sure I’m going to pull over the line: I wanted to remove the search dependency on Alpine.js and replace it with htmx. For this I asked Cursor to do the translation which it did a stab at but ultimately rather failed to do even the basic steps for it. Then I did it myself and while htmx is super easy to setup, the data juggling I have to do with what I get from Google Maps is very fragile and needs to be cleaned up (which I may or may not do given that things are working right now).
Working with the backend was very annoying because every time the server restarts, it would log me out. To fix that I changed the persistency of tower-sessions from MemoryStore to FileSessionStorage and that fixed it without issues. There is now a .sessions
folder in the backend which needs to be ignored for cargo watch
but other than that it’s a drop-in replacement.
That means I will need to write a logout view at some point.
Old people’s brains have been entirely cooked by the slop feeds that Meta produces. No parent worth their salt would trust these people to protect their kids. The EU should follow suit.
the law may infringe on the rights of young people and reduce their ability to participate in society
Since when is being spoon fed the worst advertising and content created by awful people looking to make a quick buck “participating in society”?
https://www.theguardian.com/media/2024/nov/29/meta-australia-social-media-ban-response
Seeing if I can move from Arc to Vivaldi but there are half a dozen radical improvements in Arc that *make* the experience. It just shows how much innovation and solid thinking was packed in all of that frivolous design.
Vivaldi on the other hand has a million settings which mostly show that nobody knows wat this app is supposed to be doing. There are entire note taking apps and e-mail clients in there but none of them fun or nice to use.
Products truly live and die in the pixels.
Chuffed by the strength of my team that we have most of the easy decisions from these Node.js pillars in place and we are making headway on all of them to the extent that’s appropriate for us.
I read this piece about CORS and the only thing I can tell you about it is that I hate web security.
What China has done in industry after industry is to flatten the supply curve by subsidizing hordes of producers. This spurs innovation, increases output and crushes margins. Value is not being destroyed; it’s accruing to consumers as lower prices, higher quality and/or more innovative products and services.
If you are looking for returns in the financial statements of China’s subsidized companies, you are doing it wrong. If China’s subsidized industries are generating massive profits, policymakers should be investigated for corruption.
A piece well worth reading about China’s economic policies if only for the fact that their flattening of supply curves is the only thing that is really fighting climate change.
Data centres shouldn’t be using water for cooling in the first place. In the summer many parts of Europe are under water strain. It’s not weird that locals would oppose having a huge data center built near them.
https://www.asianometry.com/p/the-big-data-center-water-problem
Add the fact that they’re unsafe (both for the people in and around the car) to the stack of reasons why you should not be driving a Tesla.
Nicolas from All About Berlin has done so much to make living in this administrative nightmare bearable for people. It’s a very clear example of what kind of 10-100x improvements are there to be had.
Hard work isn’t always the work that takes the most time, or the work that gets paid the most. The hardest work is the work that challenges, makes us uncomfortable, or requires change. If we actually value hard work — we have to do some of our own.
I sure missed AHP’s writing. This is one about why people think that the next generation does not ‘work hard’ anymore.
I painstakingly built a bespoke Rust web application to host the Cuppings venue data and to add Google place_ids to almost 2000 Foursquare location. That’s been done for a while now but now we have the announcement of Foursquare open sourcing their location dataset.
That has two direct consequences for me:
https://simonwillison.net/2024/Nov/20/foursquare-open-source-places/
Cool to read this long view from the inside by Carlton Gibson of what has made Django work (and not work) for the past 20 years. Django has been a stellar achievement that’s been a cornerstone of my career and I look forward to see the project reach new heights.
https://buttondown.com/carlton/archive/thoughts-on-djangos-core
Reading these database migration stories is usually interesting, but what I found especially noteworthy here is that all of the Django features they used to make it easy for themselves have been in there for more than a decade.
That’s the kind of maturity that maybe makes a technology like that not that appealing to work with for new developers but it is also a maturity that lets you get real work done.
https://engineeringblog.yelp.com/2024/10/migrating-from-postgres-to-mysql.html
An interesting article to read about how the city botched renaming the Manteuffelstraße to Audrey-Lord-Straße. I cycle past this street every day and I don’t think it’s a bad change. Unfortunately, they’ve done it in such a bad way that it’ll poison every person who hears about it against the very concept of government:
„Im Nachhinein ist das eine gute Frage“, sagt Werner Heck von der Bezirksverordnetenversammlung (BVV) Friedrichshain-Kreuzberg.
Werner Heck‘s statements are a good argument here for abolishing the entire concept of the BVV. If they couldn’t even be bothered to check-in on the implementation of one of their more material and prestigious measures, then what are they good for?
Heck sagt, es sei „nicht optimal“ gewesen, dass die involvierten Verwaltungsabteilungen „nicht miteinander gesprochen“ hätten.
This makes it clear that it is not uncommon for the Berlin administration to do things without talking to other departments. This is the way you would work, if you’re mentally entirely dead and checked out.
Das Bezirksamt erklärt, das „komplexe Verfahren“ solle künftig ressortübergreifend organisiert werden.
This sounds ‘good’ to the average German but it will in no way prevent these kind of problems from happening because the issue is not one of process or tactics, but one of culture.
All of these were unforced errors and you can ask yourself maybe they were actually intended to make a mockery of the entire process by a civil service that is politically opposed or too lazy to do any real work.
I think “Project-Power” from this newsletter by Adam Tooze is going to be a useful concept going forward:
A project in this sense is the historically specific, intentional mobilization of multiple resources around a significant objective on whose success and failure important things depend.
I’m struck mostly by how bad the German government is at this. Every part of the country seems to be fully paralysed.
Watched “Evil Does Not Exist” as GIFT, the recut and rescored (silent) version performed live by Eiko Ishibashi at HAU1.
This has a shorter runtime than the movie because a lot of fluff is cut out and we are only left with a very summary story. That is a good choice and I can’t say the movie suffers from it very much even though this is version is very much its own thing (i.e. not a narrative movie).
Ishibashi-san is on stage and directs the musical soundtrack while occasionally accompanying the movie on her flute. From the distance it was very hard to tell what she was doing or even what sounds she was producing on top of the soundtrack.
Musically it’s a lot of the soundscapes with the main theme interspersed at various key junctures. We don’t get to learn anything more about the ending.
In modern justice and on the part of those who dispense it there is a shame in punishing, which does not always preclude zeal. This sense of shame is constantly growing: the psychologists and the minor civil servants of moral orthopaedics proliferate on the wound it leaves.
Instead of insanity eliminating the crime according to the original meaning of article 64, every crime and even every offence now carries within it, as a legitimate suspicion, but also as a right that may be claimed, the hypothesis of insanity, in any case of anomaly. And the sentence that condemns or acquits is not simply a judgement of guilt, a legal decision that lays down punishment; it bears within it an assessment of normality and a technical prescription for a possible normalization. Today the judge – magistrate or juror – certainly does more than ‘judge’.
But we can surely accept the general proposition that, in our societies, the systems of punishment are to be situated in a certain ‘political economy’ of the body: even if they do not make use of violent or bloody punishment, even when they use ‘lenient’ methods involving confinement or correction, it is always the body that is at issue – the body and its forces, their utility and their docility, their distribution and their submission.
The very excess of the violence employed is one of the elements of its glory: the fact that the guilty man should moan and cry out under the blows is not a shameful side-effect, it is the very ceremonial of justice being expressed in all its force.
It was as if the sovereign power did not see, in this emulation of atrocity, a challenge that it itself threw down and which might one day be taken up: accustomed as it was to ‘seeing blood flow’, the people soon learnt that ‘it could be revenged only with blood’ (Lachère).
In short, penal reform was born at the point of junction between the struggle against the super-power of the sovereign and that against the infra-power of acquired and tolerated illegalities.
The right to punish has been shifted from the vengeance of the sovereign to the defence of society. But it now finds itself recombined with elements so strong that it becomes almost more to be feared. The malefactor has been saved from a threat that is by its very nature excessive, but he is exposed to a penalty that seems to be without bounds. It is a return to a terrible ‘super-power’.
the injury that a crime inflicts upon the social body is the disorder that it introduces into it: the scandal that it gives rise to, the example that it gives, the incitement to repeat it if it is not punished, the possibility of becoming widespread that it bears within it.
Nothing so weakens the machinery of the law than the hope of going unpunished;
Let us hear once more what Servan has to say: the ideas of crime and punishment must be strongly linked and ‘follow one another without interruption … When you have thus formed the chain of ideas in the heads of your citizens, you will then be able to pride yourselves on guiding them and being their masters. A stupid despot may constrain his slaves with iron chains; but a true politician binds them even more strongly by the chain of their own ideas; it is at the stable point of reason that he secures the end of the chain; this link is all the stronger in that we do not know of what it is made and we believe it to be our own work; despair and time eat away the bonds of iron and steel, but they are powerless against the habitual union of ideas, they can only tighten it still more; and on the soft fibres of the brain is founded the unshakable base of the soundest of Empires’ (Servan, 35).
If incorrigibles there be, one must be determined to eliminate them. But, for all the others, punishment can function only if it comes to an end.
But the guilty person is only one of the targets of punishment. For punishment is directed above all at others, at all the potentially guilty.
Why would society eliminate a life and a body that it could appropriate? It would be more useful to make him ‘serve the state in a slavery that would be more or less extended according to the nature of his crime’;
Discipline sometimes requires enclosure, the specification of a place heterogeneous to all others and closed in upon itself. It is the protected place of disciplinary monotony.
it was a change of scale, but it was also a new type of control.
‘The order and inspection that must be maintained require that all workers be assembled under the same roof, so that the partner who is entrusted with the management of the manufactory may prevent and remedy abuses that may arise among the workers and arrest their progress at the outset’ (Dauphin, 199).
By walking up and down the central aisle of the workshop, it was possible to carry out a supervision that was both general and individual: to observe the worker’s presence and application, and the quality of his work; to compare workers with one another, to classify them according to skill and speed; to follow the successive stages of the production process.
This obligatory syntax is what the military theoreticians of the eighteenth century called ‘manoeuvre’. The traditional recipe gives place to explicit and obligatory prescriptions. Over the whole surface of contact between the body and the object it handles, power is introduced, fastening them to one another. It constitutes a body-weapon, body-tool, body-machine complex. One is as far as possible from those forms of subjection that demanded of the body only signs or products, forms of expression or the result of labour. The regulation imposed by power is at the same time the law of construction of the operation.
In becoming the target for new mechanisms of power, the body is offered up to new forms of knowledge. It is the body of exercise, rather than of speculative physics; a body manipulated by authority, rather than imbued with animal spirits; a body of useful training and not of rational mechanics, but one in which, by virtue of that very fact, a number of natural requirements and functional constraints are beginning to emerge.
How can one capitalize the time of individuals, accumulate it in each of them, in their bodies, in their forces or in their abilities, in a way that is susceptible of use and control?
It is this disciplinary time that was gradually imposed on pedagogical practice – specializing the time of training and detaching it from the adult time, from the time of mastery; arranging different stages, separated from one another by graded examinations; drawing up programmes, each of which must take place during a particular stage and which involves exercises of increasing difficulty; qualifying individuals according to the way in which they progress through these series.
the special productive power of the combined working-day is, under all circumstances, the social productive power of labour, or the productive power of social labour. This power is due to cooperation itself (Marx, Capital, vol. 1, 311–12)
Thus a new demand appears to which discipline must respond: to construct a machine whose effect will be maximized by the concerted articulation of the elementary parts of which it is composed. Discipline is no longer simply an art of distributing bodies, of extracting time from them and accumulating it, but of composing forces in order to obtain an efficient machine.
While jurists or philosophers were seeking in the pact a primal model for the construction or reconstruction of the social body, the soldiers and with them the technicians of discipline were elaborating procedures for the individual and collective coercion of bodies.
These mechanisms can only be seen as unimportant if one forgets the role of this instrumentation, minor but flawless, in the progressive objectification and the ever more subtle partitioning of individual behaviour.
the ‘admonitors’ were placed in charge of those ‘who talk or hum when studying their lessons and those who will not write and who waste their time in play’
It was also organized as a multiple, automatic and anonymous power; for although surveillance rests on individuals, its functioning is that of a network of relations from top to bottom, but also to a certain extent from bottom to top and laterally; this network ‘holds’ the whole together and traverses it in its entirety with effects of power that derive from one another: supervisors, perpetually supervised.
In a sense, the power of normalization imposes homogeneity; but it individualizes by making it possible to measure gaps, to determine levels, to fix specialities and to render the differences useful by fitting them one to another.
They did not receive directly the image of the sovereign power; they only felt its effects – in replica, as it were – on their bodies, which had become precisely legible and docile.
And it is this inversion of visibility in the functioning of the disciplines that was to assure the exercise of power even in its lowest manifestations. We are entering the age of the infinite examination and of compulsory objectification.
It is an important mechanism, for it automatizes and disindividualizes power. Power has its principle not so much in a person as in a certain concerted distribution of bodies, surfaces, lights, gazes; in an arrangement whose internal mechanisms produce the relation in which individuals are caught up.
It is polyvalent in its applications; it serves to reform prisoners, but also to treat patients, to instruct schoolchildren, to confine the insane, to supervise workers, to put beggars and idlers to work.
The Panopticon, on the other hand, has a role of amplification; although it arranges power, although it is intended to make it more economic and more effective, it does so not for power itself, nor for the immediate salvation of a threatened society: its aim is to strengthen the social forces – to increase production, to develop the economy, spread education, raise the level of public morality; to increase and multiply.
When, in the seventeenth century, the provincial schools or the Christian elementary schools were founded, the justifications given for them were above all negative: those poor who were unable to bring up their children left them ‘in ignorance of their obligations: given the difficulties they have in earning a living, and themselves having been badly brought up
‘Discipline’ may be identified neither with an institution nor with an apparatus; it is a type of power, a modality for its exercise, comprising a whole set of instruments, techniques, procedures, levels of application, targets; it is a ‘physics’ or an ‘anatomy’ of power, a technology.
it is not that the beautiful totality of the individual is amputated, repressed, altered by our social order, it is rather that the individual is carefully fabricated in it, according to a whole technique of forces and bodies.
The ideal point of penality today would be an indefinite discipline: an interrogation without end, an investigation that would be extended without limit to a meticulous and ever more analytical observation, a judgement that would at the same time be the constitution of a file that was never closed, the calculated leniency of a penalty that would be interlaced with the ruthless curiosity of an examination, a procedure that would be at the same time the permanent measure of a gap in relation to an inaccessible norm and the asymptotic movement that strives to meet in infinity.
What, then, is the use of penal labour? Not profit; nor even the formation of a useful skill; but the constitution of a power relation, an empty economic form, a schema of individual submission and of adjustment to a production apparatus.
It was the most direct way of expressing ‘the intelligence of discipline in stone’ (Lucas, I, 69); of making architecture transparent to the administration of power;12 of making it possible to substitute for force or other violent constraints the gentle efficiency of total surveillance;
all this made it possible to canalize and to recover by a whole series of intermediaries the enormous profits from a sexual pleasure that an ever-more insistent everyday moralization condemned to semi-clandestinity and naturally made expensive; in setting up a price for pleasure, in creating a profit from repressed sexuality and in collecting this profit, the delinquent milieu was in complicity with a self-interested puritanism: an illicit fiscal agent operating over illegal practices.
The political use of delinquents – as informers and agents provocateurs – was a fact well before the nineteenth century.17 But, after the Revolution, this practice acquired quite different dimensions: the infiltration of political parties and workers’ associations, the recruitment of thugs against strikers and rioters, the organization of a sub-police – working directly with the legal police and capable if necessary of becoming a sort of parallel army – a whole extra-legal functioning of power was partly assured by the mass of reserve labour constituted by the delinquents: a clandestine police force and standby army at the disposal of the state.
Police surveillance provides the prison with offenders, which the prison transforms into delinquents, the targets and auxiliaries of police supervisions, which regularly send back a certain number of them to prison.
But he brought with him, at least potentially, a horizon of illegalities that had, until quite recently, represented a threat: this ruined petty bourgeois, of good education, would, a generation earlier, have been a revolutionary, a Jacobin, a regicide;19 had he been a contemporary of Robespierre, his rejection of the law would have taken a directly political form.
The criminal fait divers, by its everyday redundancy, makes acceptable the system of judicial and police supervisions that partition society; it recounts from day to day a sort of internal battle against the faceless enemy; in this war, it constitutes the daily bulletin of alarm or victory.
The combination of the fait divers and the detective novel has produced for the last hundred years or more an enormous mass of ‘crime stories’ in which delinquency appears both as very close and quite alien, a perpetual threat to everyday life, but extremely distant in its origin and motives, both everyday and exotic in the milieu in which it takes place.
In short, one should have a master, be caught up and situated within a hierarchy; one exists only when fixed in definite relations of domination
They were in a sense technicians of behaviour: engineers of conduct, orthopaedists of individuality.
In this panoptic society of which incarceration is the omnipresent armature, the delinquent is not outside the law; he is, from the very outset, in the law, at the very heart of the law, or at least in the midst of those mechanisms that transfer the individual imperceptibly from discipline to the law, from deviation to offence.
The carceral ‘naturalizes’ the legal power to punish, as it ‘legalizes’ the technical power to discipline.
resistance is to be found not in the prison as penal sanction, but in the prison with all its determinations, links and extra-judicial results; in the prison as the relay in a general network of disciplines and surveillances; in the prison as it functions in a panoptic régime.
The case of the Italian Mafia transplanted to the United States and used both to extract illicit profits and for political ends is a fine example of the colonization of an illegality of popular origin.
We’ll say nothing when we should speak up. We’ll quarrel when we should inquire. We’ll remain reticent when we should be resolved. We’ll be closed-minded and critical when we should be open-minded and curious.
On the one hand, a “little voice” in the back of his brain urged him to raise his concern; on the other hand, he didn’t want to be labeled a troublemaker, a non–team player, or a “high-maintenance” flight operations officer.
Put simply, conversational capacity is the ability to have open, balanced, nondefensive dialogue about tough subjects and in challenging circumstances.
But this collegiality came at a cost: their nice culture created a bad business. While the team members enjoyed pleasant meetings and warm relationships, they sacrificed the candor needed for rigorous problem solving and decision making in order to maintain the amiable environment.
The National Transportation Safety Board, the entity responsible for investigating civil aviation accidents in the United States, estimates that 25 percent of aviation accidents occur because someone doesn’t speak up when a mistake is being made.
“To be honest, it makes me mad. I went out of my way to hire the best and the brightest people I could find, but I’m not getting access to all the intellectual firepower I’m paying for.”
A person with high conversational capacity can do just that. He’s able to remain open-minded, nonreactive, and fully engaged in tough circumstances that send his less disciplined colleagues into a highly reactive state of mind. Balancing candor and curiosity, he converses with his teammates in a way that actually increases the conversational capacity of the entire group.
On the one hand, you feel compelled to speak up, but on the other hand, you don’t want to cause trouble, be labeled a troublemaker or non–team player, tarnish your reputation within the team, or damage relationships.
When we minimize, it’s not that we don’t have an agenda, it’s that our agenda is subverted by a strong need to keep things comfortable, to avoid conflict, to keep things calm.
Any issue can set off our need to win, but especially those ideas that contradict our current ways of thinking, our notions of what is acceptable, proper, or right. When we snap into win mode, we circle our cognitive wagons and load our conversational guns, ready to defend our current map of reality from all foes. We become dogmatic and close down when we should get curious and open up.
If they’re not speaking up, they’re being paid for something they’re not providing. But the harsh reality is that our own management behavior may be stifling their abilities to contribute. By failing to compensate for the minimizing effect our authority has on our people, and, even more egregiously, when we trigger into win behavior, we encourage our people to minimize, guaranteeing we won’t get full access to their knowledge, expertise, ideas, and suggestions.
Under what circumstances in life do I find myself minimizing at the expense of my effectiveness?
But awareness is not the same as skill. A drowning man may know he’s drowning, but his awareness is no substitute for the ability to swim.
When we’re making an acquisition, initiating a major change process, or wrestling with a tough decision, we want access to as much information and as many perspectives as possible to expand our options for effectively tackling the challenge. We want to reduce the number of blind spots in our view of the situation we’re facing.
When we’re truly dedicated to expanding our thinking and making informed choices, difference is our greatest ally.
Because our level of internal commitment directly correlates with how much energy we put into enacting the decision.
When we’re dedicated to informed and effective choices, we pull people into decision-making or problem-solving processes because they’re useful in two ways. First, involving key players leads to better information and more robust decisions because we have access to their thinking. Second, those same people feel more connected to the decisions that do get made. It’s a double win; we get better decisions that are more effectively implemented.
Contrast this unilateral approach with the more learning-focused joint control, where we proactively make our goals and concerns explicit and ask others to help us manage them. This is a far more effective way to make informed and effective decisions because we’re involving others in the important decisions for how to best achieve the desired objectives.
The managers who asked, “What do you need more or less of from me so I can help you do your job more effectively?” were in positions to make better choices about how to manage their people, but the conversations that helped them make those choices weren’t always an ego massage.
requires the mindful use of four distinct skills that are extremely difficult to balance under pressure: Stating our clear position Explaining the underlying thinking that informs our position Testing our perspective Inquiring into the perspectives of others
Like a topic sentence in good paragraph construction, a position statement is clear, candid, and concise. It lets others know where we stand on an issue, the specific point we’re putting forward.
To that end, let’s look at more vigorous tests to employ in situations where it may be more difficult for others to push back, or when we’re putting forward a particularly strong perspective: That’s how I see the problem. What does the problem look like from your perspective? Right now I feel like my idea makes perfect sense, and that makes me nervous. Are you seeing something I’m missing? I am more interested in making an informed decision than in winning or being right, so I’d like to hear your point of view—especially if it differs from my own. If I’ve got a blind spot about this issue, please help me to see it. I’ve shared what I think and why I think it. I’m curious to hear how other people are thinking about this problem—especially those who have a different take on it than I do. To help me improve how I’m looking at this decision, I’d really like to hear from someone who has a perspective that challenges mine. I’d like someone to expand my view of this situation. Who has a different way of looking at it? I know I may be wrong about this—what do you think? If you disagree with me, please let me know. I’d really like to hear your point of view. Push back on me here—especially if you think I am being unfair. What would our worst critic say about this decision?
Randy’s handling of this conversation is impressive. Neither accepting the accusation at face value nor dismissing it, he defused the explosive situation by getting curious. By inquiring into the underlying reasoning behind the assertion, he brought the conversation back to a more balanced, data-based dialogue, pulling a tense and divisive parent-teacher conference right back to the sweet spot.
What are you seeing that leads you to that view? I have to admit that I see the issue very differently, but before I jump to conclusions, please tell me what you have seen or heard that leads you to see it the way you do. Tell me more about how you’re looking at this issue. Obviously, you’re looking at this differently. Help me see this through your lens. How are you making sense of X? What does this look like from your (marketing/finance/engineering) perspective? Help me expand my thinking on this. Tell me how you see X. What have you seen or heard that leads you to think X? Can you provide a couple of examples that illustrate your position? Clearly, we don’t agree. Let’s see what our different perspectives can teach us about this issue. Explain in more detail how you’re seeing the situation. I’m intrigued by the way you’re framing this issue. Can you give an additional example or two so I can better understand your thinking? Can you give me an example of X? Can you illustrate why you see this so differently than I do? When team members haven’t even shared their positions, much less their thinking, and we want to invite their perspectives into the conversation, we might say: We’ve been bouncing this idea around for quite some time, and we haven’t heard from you yet. As you’ve been listening to the pros and cons of this decision, what’s your take on the best choice?
Are you seeing anything that the rest of us may have missed? I’d be interested in hearing your views on this problem. Do you have a different perspective than those that have already been shared?
Imagine a team full of such people. Now imagine an organization full of such teams.
Any dolt can shut down or argue when he or she is being challenged, but it requires real strength to remain open to learning, squarely focused on informed choice, even when we’re feeling stressed and vulnerable. Our capacity to rein in our derailing tendencies in circumstances where other people cannot is a sign that we’re in disciplined control of our behavior and not a piteous slave to our emotional reactions.
For a really challenging conversation—a 10/10 (rated 10 on the difficulty scale and 10 on importance)—there is no substitute for practicing with a partner. By having a colleague play the person with whom we need to have the conversation, we can more realistically assess and improve our ability to maintain conversational discipline.
As we build our discipline for working in the sweet spot, we’re seeking the yin and yang of dialogue by being bold, authentic, and direct and, simultaneously, open-minded, unpretentious, and inquisitive.
When a consensus decision is the best option, a more balanced approach helps to level the playing field. It’s far harder for the team member with the strong win tendency to run away with the decision if the team has the capacity to work in the sweet spot
Trust isn’t a prerequisite for effective conversations; it’s the product of effective conversations.
When it comes to building our competence, the workplace is our dojo—an ideal practice space for building and refining our skills.
As these men explore the city, their unique cultural, educational, experiential backgrounds lead them to filter the available sensory input in very different ways.
The key is to lean our ladder into difference. We don’t learn much by engaging people who agree with our views, we learn the most by engaging people who don’t. This dramatically increases our ability to detect and correct errors in how we’re looking at a situation and to generate a far more accurate mental map. With this in mind, we treat anyone who disagrees with us as the most valuable person in the room.
When we double-loop learn we hop off our hamster wheel of thought and question the way we’ve made sense of the problem in the first place.
described to his fellow workshop participants the loud and combative arguments he and his team had in meetings. They were, as he put it, “very intense.”
Like a group of skilled jazz musicians, a team that can deliberately double-loop learn is more nimble and adaptable in the face of unusual, shifting, complex circumstances because team members can better adjust their thinking to fit the new challenge.
Our minds, in other words, have a self-serving, single-loop tendency to resist information that threatens our current view of reality, so they filter the world around us so we see what we want to see.
When people, teams, and organizations react defensively to an idea, what is it they’re defending? Their current idea and the assumptions, beliefs, and mental models on which it stands—the very things they need to question and adjust in order to double-loop learn.
Because conflict is the primary catalyst for double-loop learning, only teams with reliably high conversational capacity can deliberately orchestrate it.
Their research demonstrates that as people consistently practice the replacement behaviors, they actually change the physical structure of their brains, because, just like a muscle, the neural circuits for any activity grow where they’re being used and atrophy where they’re being neglected.
With regular practice, we produce a flywheel effect, where the more we use the skills, the more our skills grow, and the more our skills grow, the more we use the skills. Is it hard work? Sure it is. Any skill worth learning takes effort.
Use every meeting, problem, decision, conflict, or change as an opportunity to build your skills. There should be no such thing as a boring meeting because you’re practicing as you participate, facilitate, or both.
Your naturally self-serving tendency to look outward, in other words, is a defensive routine: You avoid looking at your own behavior by placing all your attention on the behavior of others.
What are my tendencies, and how are they displayed?
When it comes to disciplined dialogue, you do this by listening to what’s being played, and then playing what’s missing.
Acknowledge and reward people who are making a genuine effort, and do it both publicly and privately. “I tested a view earlier, and Jane took me up on it and pushed back. I know that wasn’t easy, and I’m grateful you did it. I’m hoping to see more of that kind of behavior from everyone around the table as time goes on.”
When someone puts out a naked position, they inquire into it. When someone forgets to test, they jump in and test for that person. When they put forward their own perspective they shore up the conversational capacity of the team by intentionally balancing their push and their pull.
One is a routine problem,1 which can be difficult and bothersome, but for which we have ready experts and proven solutions on which we can depend for a fix. In other words, a routine problem is routine not because it happens regularly but because we have a routine for dealing with it.
Far from routine, an adaptive challenge is a problem for which there are no easy answers,2 no proven routines for dealing with the issue, no expert who can ride in and save the day.
They treated the implementation process like a routine checklist, and failed to address its more adaptive aspects—their corporate culture, their old habits, and their instinctively defensive reactions to change.
It makes no sense to march our team into a challenging predicament it’s ill equipped to handle.
They needed the skills to climb out of their dysfunction, but they were too overwhelmed by their dysfunction to acquire the skills.
Adaptive leadership13 is not about coming up with an idea or solution and then convincing the group to adopt it. It’s about orchestrating a process of learning that gets people with different views and agendas learning from each other as they tackle an adaptive challenge.
But when we liberate leadership from authority we empower anyone who wants to foment productive change because we realize that while authority is assigned to us by the organization, leadership is an activity we choose. Seen this way, leadership can be exercised from any point in the system.
Leadership is not about the roles we’re formally assigned; it’s about the roles we choose to perform.
Tina also spent untold hours behind the scenes listening to concerns, smoothing ruffled feathers, and keeping people engaged in the learning. This trio worked together to do the requisite adaptive work—rebuilding relationships, earning back trust, improving how they interacted with each other, and resolving festering conflicts.
“With or without authority, exercising leadership is risky and difficult,” says Heifetz. “Instead of providing answers as a means of direction, sometimes the best you can do is provide questions, or face people with the hard facts, instead of protecting people from change.”
A person with an inflated ego and a strong opinion says, “I know exactly what to do,” and a flock of people passively minimize by going along with the unadulterated bullshit he’s slinging—even when they know, deep down inside, it’s not going to work.
Whenever we choose to head down one of these daring paths we’d better have our demons in check.
We can seek out and enroll partners, colleagues, friends, or teammates as fellow learners—people eager to head up and out of their own sheltered, self-limiting village by acquiring the mindset, learning the skills, and using both to tackle increasingly difficult issues and situations.
I don’t really know where to find a Honeycrisp apple locally, but since moving to Germany I have been eating tons of amazing juicy, sweet, crisp apples. It turns out that this is deliberate and these are not the apples of my childhood.
https://www.scientificamerican.com/article/apples-have-never-tasted-so-delicious-heres-why
A beautiful elegy for photographer Matthieu Chazal by Paul Salopek on the epic Out of Eden Walk.
On those bitter days afoot in the Caucasus, Murat and I would sometimes send Matthieu ahead to search for shelter in the snowy wastes. He was very good at it. Often, we found him at a tumbledown farmhouse or roadside inn, regaling a crowd with outlandish stories, and sipping from a jar of homemade Georgian wine. Last month our nomad friend left us, at 49, a casualty of aggressive cancer. Once more he scouts the road ahead.
https://outofedenwalk.nationalgeographic.org/articles/2024-10-forgiving-moment
Ribbonfarm retiring is another such ending in a time rife with them. I can’t overstate how influential it has been on my (our) thinking and practice. Tremendously impressive to think all of that was thought up by one person (who I still haven’t met).
It’d be impossible to summarise all the themes, intersections and other tidbits that I got out of Ribbonfarm. I can say how it begun: I was lying on the river-shore in Avignon in 2012 and I had a large part of the blog’s back catalog in my Instapaper and there I read the entire thing while listening to the crickets.
Alan Moore definitely is not wrong:
At the same time, I’m sure that fandom is sometimes a grotesque blight that poisons the society surrounding it with its mean-spirited obsessions and ridiculous, unearned sense of entitlement.
Twitter’s ending is fine and can be the ending of more things as well as the beginning of other things. Delete all your stuff on that awful place and simply let go.
I can’t believe I have to say this, but let’s do it anyway: Going to Mars is—just like the hyperloop—a distraction from the actual problems and solutions in front of us.
https://defector.com/neither-elon-musk-nor-anybody-else-will-ever-colonize-mars
Filing for myself for if we need to really work on Postgres integration tests: https://gajus.com/blog/setting-up-postgre-sql-for-running-integration-tests
I’ve been waiting for an updated edition of “Designing Data-Intensive Applications” and now I see that Kleppmann is working on it. Reading the first edition has given me such an outsized advantage when architecting and building systems.
Love having the kids be off school every 6 weeks or so which means we get a week of everybody adjusting to them being at home and then another week of adjusting them being back at school. All thanks to the trash tier school logistics of Germany.
GitHub Copilot is like every Microsoft product. Everybody uses it because it comes bundled in their company contract but nobody likes it.
Cancelled Apple Arcade because I haven’t seen a nice game enter the set in months now.
Comment on Leetcode on my solution that makes it all worth it:
probably the most understandable use of a stack i’ve seen in the solutions. thx
I was somewhat excited to watch this anime series. It’s only 12 episodes for its first season so it was over pretty quickly.
It was fun and well done but too short to be satisfying or really have an impact. I may need to skip unfinished anime adaptations1 entirely given there’s so much old catalog I could be watching instead. Also now I understand how people get into reading the manga’s while they wait for the adaptations to catch up.
The Kaiju No 8 story is—how could it be any different with such a name—a standard monster beat ’em up. The characters are a bunch of young kids. Things escalate steadily with increasingly powerful and shadowy monsters attacking them. The suits and the group dynamics are somewhat reminiscent of Attack on Titan. As a standard shonen monster beat ’em up anime, it’s fine.
It’s just that there’s nothing in the story that sets it apart, there are no deeper themes that are explored, no interesting motivations, no moral or emotional payoffs worth talking about and no standout characters with staying power. I don’t think I’ll remember much about this show six months from now.
I couldn’t help but compare it to JJK which knocks every one of those dimensions out of the park. I never got around to writing a proper review for its S2 other than this:
The long awaited Hidden Inventory and Shibuya Incident arcs turned into a treat to watch despite the continuously escalating power levels and its sprawling cast of characters and villains. —2023 year in review
S2 was such a phase shift for JJK moving from low stakes happy go-lucky teen show to massively hard bouts of apocalyptic fighting and loss (Nanami…). So many of the characters (“My Brother!”) in JJK have depth and huge fan popularity (Panda-kun, the guy who speaks in Onigiri). Just go on TikTok and see all the Shibuya incident foreshadowing, the Satoru Gojo montages and the number of ships that are doing the rounds.
Turns out I hadn’t noticed my hosting provider Vimexx has their MySQL databases on latin1
coding and this blog was running on that happily corrupting data.
Given how common an occurrence this is—MySQL very regularly will throw your shit into the street and set fire to it—I had expected there being scripts or resources to fix this. Of course nothing was to be found anywhere.
I asked the Mastodon MySQL expert who did have a resource on the exact problem: https://blog.koehntopp.info/2020/08/18/mysql-character-sets.html
The way I fixed it was a bit more manual than I’d have liked but where I got is good enough and I’m not sure I’ll go for anything perfect:
Go to the phpMyAdmin and audit all the database tables.
My tables are in a mix of InnoDB and MyISAM which seems to be weird but not really problematic. I also had some Yoast tables that were lingering there which I dropped.
Find the setting and convert all tables and their columns to the collation utf8mb4_unicode_ci
. A collation implies the utf8mb4
character set that is its prefix so you don’t have to change the character set.
Now all your stuff is in UTF-8 but because of a coding error a lot of your content is messed up. A unicode character can be more than one byte but in latin1 each character can only be a single byte. So if your unicode character is two bytes, they are interpreted as two latin1
characters which is why you end up with stuff like “î“.
Maybe there would have been a clean automatic way to convert the data, but I felt it was fiddly enough as it was, so I opted for a manual fix. I identified where the corruption happened:
wp_posts
columns post_content
and post_title
wp_comments
column comment_content
wp_usermeta
column meta_value
Then I just ran queries to fix all the mismatches:
ü → ü
Ãœ → Ü
é → é
É → É
ÄŸ → ğ
Ç → Ç
etc.
Luckily in almost all cases the wrong coded string is unique and can simply be replaced with the right character.
Check if a string is in the column:SELECT post_content from wp_posts where post_content LIKE BINARY '%Ç%' and post_status='publish'
Later on check for specific characters and their environment in what can be very long post bodies:SELECT SUBSTRING(post_content, LOCATE('Ã', post_content)-15, 40), post_content from wp_posts where post_content LIKE BINARY '%Ã%' and post_status='publish'
Replace the wrong string sequence with the correct character:UPDATE wp_posts SET post_content = REPLACE(post_content, 'Ç', 'Ç') WHERE INSTR(post_content, 'Ç') > 0
After some hours of auditing and pounding SQL most of the things should be fixed and whatever’s left I can live with.
The moral of this story is that the entire complex of WordPress/PHP/MySQL is a pile of shit that should be burnt off the face of the planet. The fact that we can have these kind of encoding issues in the year 2024 shows what an absolute joke these systems are. Especially with the Mullenweg meltdowns, anybody who can get out of WordPress should do so.
This blog hasn’t received a comment or other bit of interactivity in years so I think I could also rip all the content (effectively just two columns in wp_posts
) out and host it on something that’s statically built. No reason to pay for a shit hosting provider like Vimexx anymore either.
I knew it of course, but I hadn’t realised how dead the web has gotten until I saw this historic overview of traffic to my blog.
It used to be worthwhile but right now more or less the only person that I’m writing these things for anymore is me.
It’s become fashionable in tech circles to say that all legislation is bad. This is a dangerous and wildly ignorant way of thinking. Without legislation, many people would not survive and the very things that we depend on for a good life would not exist.
The Verge gets this right in their endorsement because they’re some of the smartest people in tech reporting.
https://www.theverge.com/24282022/kamala-harris-endorsement-presidential-election-2024
Wer täglich, manchmal mehrmals die Stunde, die Verdammten belächelt, ist wohl zu Recht in der Hölle. Twitter, so mussten wir uns eingestehen, war der Ort, den wir bewohnten, weil wir sehr schlechte Menschen waren.
Utterly utterly savage feuilleton about Twitter as a medium for poetry.
https://www.zeit.de/2024/45/clemens-setz-twitter-gedichtband-poesie-social-media/komplettansicht
After some occasional brushes with party politics and reading up on the minimal political agency that we foreigners get here, I dove in. The rise of right-wing sentiment seemed to be a good reason to become a member of the Greens just like I imagine it did for a number of people. Much good that did do if you see the continued rise of that sentiment and this Green government all but enabling right-wing parties with their politics of austerity.
I rescinded my Green Party membership a couple of months ago because of irreconcilable disagreements with their politics. Also because I don’t think they’re effective even at the things they want to do. That move put me way ahead of the Green youth wings many of whom recently exited the party for similar reasons and with a lot of fanfare.
A lot of my beef with the Greens (though by no means all of it) is for their hypocrisy when it comes to the Palestine question.
I don’t really have a stake in the Israel-Palestine conflict. I know more Israelis than Palestinians and get along with them fine. I’m opposed against theocratic movements and governments of all backgrounds. Still, in this conflict it is obviously apparent what is right and what is wrong and it has been obvious for decades.
This topic is too big to treat in whole and I hope there will be hundreds of reckonings of the past year in German politics at some point. I’ll just post my receipts and explain why they made the Green Party morally repugnant to me.
I saw Özdemir in this video with many other high ranking German politicians quote Golda Meir saying: “Peace will come when the Arabs will love their children more than they hate us.” This is a vile bit of racism that should be unacceptable but to which nobody batted an eye back then.
Özdemir now is the mostly useless minister for agriculture in this Green government and his political views have not improved.
Baerbock sat here next to the person responsible for spreading IDF propaganda in Germany which you can understand consists mostly of lies and excuses for war crimes. Her fans will make lots of excuses for this but the optics of being this chummy with such a vile human being do not become any less terrible.
Baerbock now is the foreign minister in the current German government where her already questionable and empty platform of “feminist foreign policy” has devolved to the point where she is making passionate pleas in favour of war crimes in German parliament.
The Green parliamentary fraction invited and posed with Daniel Ryan Spaulding, a comedian who’s made a name for himself now with increasingly racist anti-Palestinian bits.
Habeck, the only functional politician in the German government, posted this sermon relatively quickly after the attacks. It has been much praised by mainstream Germany but every Palestinian and Arab listening to it will hear: “You are second class citizens. Your grievances are not real. You do not belong here.”
I didn’t think back then it was smart to put out a message alienating a sizeable minority in your country. I think I’ve been proven right.
What the of the Green Party members themselves?
Inside the party itself on this topic I’ve seen mostly silence and a significant number of statements that would not be out of place in the AfD.
The Green youth wings who left the party did so because of (valid) political disagreements with the party establishment but none of them even once mentioned Palestine in the exit statements.
I don’t think party membership is a thing for most people. There are power dynamics at play which are the same in the Greens as they are everywhere else. In every party there are two classes of members:
These two classes have almost no interaction with each other. The mechanisms of inner party democracy (and pretty much any functional organisation) are setup in such a way that ordinary members can’t bother the people doing the “actual work”.
So what is the point of being a member if you don’t have time or money to give?
I would answer that for me there is no point in party membership. I don’t get anything out of it. I may keep voting for the Greens (for lack of better alternatives) and support them in one way or another, but I don’t need to be a member to do either of those things.
Maybe being a party member will be worth it for others who have more to give or who stand to get more out of it. That is a calculation that everybody needs to make for themselves.
Wanted to show the kids some chiaroscuro for their art class about light and dark tomorrow and ran through some of the all time greats from Caravaggio. They were particularly impressed by Holofernes being beheaded.
Always stunning to see how good these paintings are and a bit sad for how long it’s been since I saw one for real. But Sanssouci has the picture of Doubting Thomas so that can be fixed.
Thoroughness unpacked in three dimensions like this by James Stanier is so good and gives a much better way to think and talk about issues of velocity:
Scope is what you’re building.
https://theengineeringmanager.substack.com/p/scope-hmm
Scalability is how well it will work as you grow.
Sustainability is how well it will work over time.