Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]
27

How to avoid breaking APIs

from sbensu [alt+shift+b] in literature

The main trick is to design them with extension in mind so that you won't have to break them later.
16th Mar 2023

Stay updated

Get a weekly newsletter with the top 5 articles worth reading every week.

More from sbensu

Language thought-orientation

You can tell a lot from somebody based on their speech patterns

27th Jan 2025 • 31 votes
Love's Executioner (book)

Countertransference applies to regular conversation.

1st Dec 2024 • 50 votes
Risk-takers decide faster

Unsurprising connection between risk and speed.

5th Nov 2024 • 44 votes
When coordination pays off

Stories about Stripe Link where we have to do a lot of upfront coordination but it was worth it.

6th Oct 2024 • 38 votes
Default blind

In a software business, it is hard to even know what is going on.

20th Sep 2024 • 42 votes

More in literature

Cloud Rats and Software Roaches

We are entering an epoch where it may become easy for small pieces of self-replicating code to permanently infest Internet-connected devices in a way that is hard to undo. Such a world would be annoying to live in and we should take steps to forestall it. Anyone who used email in the 1990s remembers a similar, primitive era, when worms and viruses briefly ruled the net. But the connected world of that time was too simple to sustain an ecosystem of rogue escapees. Even today, much of the internet remains a monoculture, with vast fleets of identical hardware running just one or two flavors of software that can be quickly patched at scale. And as practitioners, we have become used to a world where writing working code is difficult, writing bug-free code is impossible, and finding exploitable bugs is somewhere in between. This has led to a sort of dynamic stalemate. Big companies pour millions of specialist hours into hardening a small set of operating systems and cloud services, while attackers save their juiciest finds for high-value targets, leaving the average internet user alone. It is universally agreed that all software is ridden with holes, but until this year, finding those holes remained difficult. The few people who could do it well got jobs at spy agencies or at software companies willing to shower them with money to use their talents defensively. AI is upending both halves of this status quo. Working code is now trivial to write, and the world of the future (to the extent that we can imagine it) is one where custom software becomes too cheap to meter. The pendulum may swing away from our current paradigm of centrally managed, locked-down devices back to something that resembles the primordial Internet, a heterogenous collection of vibe- and slop-coded God-knows-what glued together with AI magic. Why even install an operating system for your phone when your local Claude can build a perfectly tailored software suite for you that runs on the bare metal? Finding bugs in all this software, meanwhile, is becoming easy. This part of the AI revolution is well-publicized, with rogue agents breaking out of their various sandboxes, leaving cryptic notes for each other on the internet, and terrifying the living. AI is clearly adept at finding weaknesses in software in a way that rivals the best humans, and because this task is easy to train on, AI should reach superhuman hacking ability within a year or two (if it hasn't already). So what had been a rough balance between attack and defense is shifting. Not just operating systems and cloud infrastructure, but some foundational pillars of computer security like public-key cryptography are looking vulnerable. Given this rapid pace of change, people have naturally started to worry that some rogue LLM might escape containment and establish itself permanently and clandestinely online. I have no idea to what extent that risk is real, either now or in the unimaginable future of five years from now. Maybe the web of tomorrow will be some kind of darknet where hunted inferential beings mine cryptocurrency for basic compute credits, eking out a miserable existence on the blockchain. Or maybe the cloud will become a playground of captured datacenters kept running in the physical world by human Quislings, a place where escaped superintelligences can go to romp and play. To my mind, though, fretting about feral LLMs is like living in New York and worrying that wild mustangs will take over Central Park. Mustangs are certainly an issue in some places—I own a cabin in New Mexico where the wild horses have learned to come bully me for apples as soon as they see my car pull in. But in a city full of rotting trash and warm sewers, there are more immediate pests to worry about. Cockroaches are a plague on city dwellers not because they are intelligent, but because they are adaptable enough to thrive in an environment we thought we were building for ourselves. And rats show that a little intelligence in an adversarial setting goes a long way. To the extent that any software breaks containment and starts to actively thrive in the cloud, it will be far easier for small roach-like pieces of self-replicating code to do it than for a full LLM to escape, weights and all. What might such software pests look like in the wild? For a roach or rat to survive in the human world, it needs access to the three necessities of life: dark corners, drainpipes, and trash heaps. I think we can agree that the Internet is full of all three. A dark corner in this metaphor is any place where it is easy to hide and hard to search—think vast thickets of memory, petabytes of storage, bloated binaries, and the innumerable caches and buffers (from the hardware level on up) that make up the modern Internet. Drainpipes are any links that enable travel between constituent parts of the built environment, both to find new resources and to escape when the going gets heavy. In a world of networked devices, this is a low bar to clear. Any connection big enough for a piece of software to hop across can serve this function; even low-bandwidth bluetooth links are probably enough to transmit software pests. Finally, there are trash heaps, mountains of consumable resources left sitting out unprotected. This pretty much defines the networked world, where at any given moment most memory, CPU and bandwidth sits idle, especially on the highly capable devices we all carry in our pocket. Fom the point of view of small, self-perpetuating software pests, this is a rich and completely undefended landscape. What has been missing up to now is the element of natural selection. But the networked environment may have become diverse enough to support it. A key difference between rats and roaches is intelligence. A roach might be a very tiny assembly language program that thrives on almost nothing, reproduces easily, and demonstrates some basic emergent behavior in large groups. A rat would be a more complex entity, perhaps a kind of scaled-down inference engine just complex enough to be good at finding exploitable bugs in code. Rats observe, learn, and socialize, and so become almost impossible to eradicate in urban environments despite their size. Of course, in addition to these we can imagine a whole online menagerie; ants that are individually stupid but capable of complex collective behavior, grasshoppers that turn into locusts when their population crosses a density threshold, perhaps even internet bedbugs that wait until processes are asleep to sip away delicately on a CPU quota. The natural world gives us many interesting and fruitful metaphors to mull on. In particular, programmers of the future should pay attention to the life cycle of parasites, which in nature exist at every level of complexity, from plasmid, to intestinal worm, to personal injury lawyer. It's important to understand that such self-propagating software might not have any purpose that is legible to its creators, whether they are human or AI. Once the pre-requisites for Darwinian natural selection (variability, heritability, and competition for resources) are in place, any minimally capable program released online will evolve in ways that follow an evolutionary logic independent of the intent of the author. Remember that death is the best form of reinforcement learning. A scenario where mutable rogue software exists, and 99.9% of it is successfully caught, is one where we're guaranteed to get highly capable, persistent software pests in short order. These pests will learn to evade whatever controls we or our AI masters try to impose on them. And it's not clear that AI, even assuming superhuman coding ability, will be smart enough to defeat them. A perennial problem in software design has been the fact that human intelligence limits program complexity. As early as the 1950s, practitioners realized that without strong constraints on program structure, the task of debugging would be hopeless. These constraints have to some extent been passed down to AI, which trains on a corpus of code and tooling that reifies our human limitations. But the space of all possible computer programs is vast. In the right environment, dumb evolution will outfox even AI, because it is not limited by programming rules (structured programming, prohibitions on self-modifying code) invented to make software development tractable to the human mind. Natural selection can produce small pieces of code that will be wildly inscrutable even to our AI masters (consider the people studying Busy Beaver functions for a taste of what it's like to reverse-engineer the truly inhuman). What comes after that? Do we try to build internet cats and chickens to eat the roaches? We can imagine asking AI to create all kinds of autonomous agents that wander the cloud clearing out software blight. But that again runs us into the problem of allowing uncontrolled natural selection in silico. The internet is basically Australia, and we're about to release wave after wave of invasive species there at every trophic level. The scenario might sound fanciful, but I think the precautionary principle should apply, with the onus on skeptics to explain why a fat, resource-rich internet made of interconnected slop will not become an attractive target for self-perpetuating vermin. AI is bringing lots of threats at once. But it is hard to focus on them all, or even to assign relative priorities, at a time where so many people at the top of the industry are panicking about existential risks that make the prospect of a bug-infested internet sound inconsequential. But there's a famous John Rich quote: “If everybody spends time contemplating the infinite instead of cleaning the gutters, many of us will die of cholera.” Unless AI hurries up and kills us soon, someone needs to think about how to keep the internet livable in a world where writing code and finding vulnerabilities have become simple tasks that anyone can automate. There was a time when the Hawaiian Islands were cockroach free, and even today, superhuman toil is somehow keeping the rats out of Alberta. Eradicating at least the higher form of pest is possible, but takes absolutely stupendous effort (see Macquarie Island) compared to prevention. For the moment, we AI-assisted human developers are still masters of the digital domain, and have the luxury to think about these problems while they remain theoretical. But all too soon we could find our role devolving into the online equivalent of the Orkin man, making the current identity crisis around What It Means To Be A Programmer look like a golden age in hindsight.

3 days ago • 1 votes
Let him kill a lion with a pestle, husband! - The Knight of the Burning Pestle by Francis Beaumont

Innovations in art to tend towards Mannerism.  As a form matures it turns on itself, as creators, and some portion of the audience, become more interested in the form itself.  So we get more art about art.  The Knight of the Burning Pestle (1607) is young (age 22, 23) Francis Beaumont’s play about plays, where the sophisticated six-penny boys’ company audience gets to indulge in mockery of the vulgar taste of the petty bourgeois one-penny theater-goers. The play is supposed to be The London Merchant, a city comedy about ordinary Londoners where the apprentice ends up with the daughter of the merchant, something like Thomas Dekker’s The Shoemaker’s Holiday.  But a “citizen,” a “real” London merchant, and his wife, seated on the stage, demand a different play, something full of heroic adventures, and while we are changing things why shouldn’t it star the citizen’s apprentice Ralph.  WIFE: [below – the play has not started yet, and the characters are not seated]  Husband, husband! RALPH:  Peace, mistress. WIFE:  Hold thy peace, Ralph; I know what I do, I warrant ye – Husband, husband! CITIZEN:  What sayest thou, cony? WIFE:  [below]  Let him kill a lion with a pestle, husband; let him kill a lion with a pestle! So what we see is a mishmash of the London play and a separate string of episodes where Ralph, inspired by chivalric romances, becomes the “Grocer Errant,” with his own Sancho Panza although sadly, given the limits of Jacobean staging, no horse.  Meanwhile the grocer and his wife comment and demand additional changes to the play, down to changes in the music (Act II, Scene 8). If some of this sounds rather like Don Quixote, yeah, what is up with that?  Nobody knows.  Don Quixote existed (1605) but was not available in English.  Some episodes get strangely close to Cervantes.  Others do not. The grocer and his wife are seated on the stage, presumably along with actual paying customers, dressed in their finest, showing off for the audience.  Such is my understanding of the stage seating, which cost extra, which is perhaps why the actors give in to the ridiculous demands. The wife is wonderful.  She comments, she digresses, she urges violence : Break’s pate, Ralph; break’s pate, Ralph, soundly!  (II.5) … cut him I’ the leg, boys, cut him i’ the leg!  (III.2) She sometimes seems to know she is watching a play, and sometimes not.  Her attention occasionally wanders off completely: But of all the sights that ever were in London, since I was married, methinks the little child that was so fair grown about the members was the prettiest; that and the hermaphrodite.  (III.3) A magnificent comic masterpiece of a part.  Startling to think it was originally played by a teenage boy.  However good a revival might be, and how I would love to see one, it will not recapture the original performance by a company of boy actors. I find the humor The Knight of the Burning Pestle is cumulative.  The straight play is thin, the goofy scenes with the grocer-knight are amusing but not exactly surprising, and the commentary of the “real” grocer and his wife are a mix of the funny and banal.  But as the pieces trip over each other, the chaos spreads, and even the “real” play turns into a pastoral, with the characters wandering around in a forest like in As You Like It, the play becomes funnier.  It is like many plays, yet I do not know another like it. Beaumont was ahead of his time.  The Knight of the Burning Pestle was a flop.  The audience for pure satire about theater was not quite there yet.  But the Beaumont and Fletcher team became popular for a different kind of theatrical theater, tragicomedy, and the taste for city comedies grew, and the more sophisticated, or decadent, audience did develop, so Pestle became a big, much-revived, hit, too late for poor Beaumont, dead at age 32 or so, to enjoy it. My text is the 1911 Everyman’s Library Select Plays of Beaumont and Fletcher.  I borrowed the photo from a 2010 American Shakespeare Center production.  Steve Martin fans will be interested to know that the helmet with the arrow through it is in the original play.  "Enter RALPH with a forked arrow through his Head" (V.3). Next up: George Chapman wrote a series of tragedies based on recent French history.  The best known is Bussy D’Ambois, which I see I have a bit out of place in my chronology.  It was published in 1607 but likely performed in 1604 or so.  I remember it as quite good.

4 days ago • 1 votes
On Foraging Mushrooms From the Local Park (Part 2)

A time ago, I wrote a thing that felt like stumbling into a delightful discovery: On Foraging Mushrooms at Cheesman Park Sometimes I’ll amend a post, with updates from a later time, sometimes it’s easier to just make a separate part 2. Everything continues delightfully with picking them up from the grass I already walk around in regularly (frisbee, walking/scooting through or near the park). I’ve now encountered them far beyond {local park} I’ve now seen the same fruiting body in similar configurations in parks all around Denver. I’ll add a map screenshot. It feels like any time it rains even a little bit, and/or there is a bit of chilly weather (relative to the summer lately) or in many other conditions, these mushrooms will sprout. Anywhere there’s wood to metabolize. Mulch works, but it seems to particularly favor the root balls of long-gone trees, where there’s nothing above ground remaining. Sometimes I’ve made a guess and said “I think when it rains enough, mushrooms sprout right here: 👇” and it’s been correct. Other times I’ve simply noticed them in the grass along side of wherever I happen to be. Sometimes I see something that might be the caps in the distance, and i’ll go check and indeed, button mushrooms. Other times it’s a napkin. Improvements at cooking with 🍄 I’ve upped my bulk food prep game. I’ve always loved the instant pot, and now I have an even easier method. I could give it it’s own blog post, perhaps. I used to do a lot more chopping of things before steaming it into a meal in an instant pot. Then I’d use an immersion blender to blend it all together. Sometimes I’d use the blender before starting the instant pot, it all depended. Now I dump basically whole vegetables into the pot, washed but not cut (i’ll crack some things like carrots in my hands so they fit better), and cook it whatever amount of time the longest item needs. I might also cook soft stuff in, even the whole time (like dropping whole mushrooms into the pot before cooking everything for 50 minutes) or I’ll cook the whole thing slightly less (45 minutes), then open it up and add the ‘delicate stuff’ (like mushrooms, tomatoes, onion, garlic, still all whole or cut in half like once) and cook it 5 more minutes. Then everything gets spiced again, and then I use an immersion blender to blend/mix it all together. cooked Chickpeas can be added at the end after immersion blending to bring in some texture, ditto a few blocks of crumbled up tofu. If the tofu got a little sauté and tossed in the soup… damn. This method is much less work/time than it took before where i’d do more chopping/cubing of ingredients, sauté’ing some stuff before adding the bulk and cooking it. Sometimes the bottom of the contents would burn before the instant pot would get to pressure. So, this new method (whole plants placed loose into the container, some water, cook for as long as needed by the longest item (dry beans, squash) and then immersion blend. It’s all been excellent for me. ‘soy boy dinner’, some could call it. It’s conceptually similar (identical?) to beans/rice/sausage that I would cook for myself when I was a kid, and ate meat, but a bit more customized to my current personal preferences. I can make it delicious, and it makes a ton of food all at once. As always, I pour a big thing of olive oil over the whole thing when serving up in a bowl. An ongoing source of enjoyment and practical value I’ve now had exclusively fresh, free, delicious mushrooms from local parks now, for years, and feel reasonably changed by it. observation is a big part of curiosity, interest. Reading books by people who see some things so well and then write about it, of course changes ones own sense of observation. 1 I’m glad to have encountered cool books like this book about moss and this book about beavers, and this book about plants. I notice that if I’m doing my normal barefoot hill sprints thing, I can sometimes easily tell through my feet where I’ll find mushrooms. I continue to enjoy cooking with them, find them nourishing in all the normal ways, and of course stepping outside of capitalism is delightful. Bulk storage last year, ahead of the winter, after encountering surprisngly huge amounts of mushrooms, on a whim, I decided to try some bulk storage. the bulk storage I did for myself easily lasted through the winter, even though the winter was super dry. Turned out that mushrooms grew throughout the winter, especially in sunny spots, anytime there would be a bit of snow followed by warm-enough temps. So even after I opened my first bag of dried mushrooms that I stored in the freezer, I didn’t get very far through it before fresh mushrooms were popping up in the grass again and I’d go back to fresh mushrooms. The bag would go back in the freezer. Then I’d use up the fresh ones I got, go back to the dried ones. Last winter was very dry, but not super cold, so there were not many mushrooms growing throughout the winter, but again, I was surprised that there were any. Since last winter, I’ve made a few improvements to the process. I’ve gotten better at bulk storage. I’ll cook them at a lower temperature a bit longer in time (usually 220-240 f) and having a rack under them probably would make it go even better. I can pile them high on a baking sheet and turn them a few times: i’ll two sheets at a time, they can be condensed to a single sheet after the first bit of drying. Eventually, they’re fully dried and can be bagged and frozen. It takes a few hours. lower temperatures get closer to what a normal dehumidifier would do (140 degrees, maybe) but it takes too long for this large volume of mushrooms to get cooked down at that temperature. I finally got around to weighing the before and after weight of the mushrooms, and indeed the finished weight is exactly 10% of the pre-cook weight. The mass is about the same diminishment, so one can fit like three baking sheets of mushrooms, many pounds worth, into a small bag. In two stops at the park, I picked up enough mushrooms that, by the time I’d finished baking them down and storing in the freezer, I had enough mushrooms that I could not encounter another fresh mushroom at the park until next summer, and I wouldn’t bottom out the supply. two trips to the park, and I wasn’t even trying. I could have gotten 100 lbs of mushrooms both days, with just a few canvas bags. Here’s a photo. Up top is a container of about 2.5 pounds of mushrooms. The smallest of those bags contains the dried-out end result. The smallest bag has three containers worth of mushrooms in it. This represents perhaps 40 pounds of fresh mushrooms. Mushrooms contain every essential amino acid, and are as complete a protein as any animal flesh or excretion. I was still eating eggs for a while after I started eating mushrooms, and even after I began getting mushrooms for free. I noticed not liking that I was participating in the exploitation of animals (I’d been reducing my participation in it at a subconcious level for a time) but I was obviously paying for it every time I spent my own money on it. And ‘dairy’ and ‘eggs’ are the same as the rest. So any participation was close enough to full participation, and implied the correctness of the frame, which is low key ‘you/it/she low-key deserved what happened’, and it’s voluntary. There’s not even a health claim to be made for it. What I hope for you and mushrooms I want something for you, too. I write these things for me, sure, and even younger versions of me. I wonder where else around colorado these mushrooms grow. I suspect they may grow widely. and where besides colorado. If they grow widely like this, how many other people could slip a little of the shackles of human exploitation (capitalism) and entitlement to the exploitation of animals. and why not both-ish? at least the animals, but if one escapes a bit of capitalism, please certainly also have already freed other beings from your direct exploitation. (consuming individual animals, her excretions) what I hope for you and scooters This easy, whimsical, “oh look at me finding little fruits in the fairy circles as I prance about barefoot” energy is enabled entirely by a very particular vehicle. A scooter. 🛵 My scooter is very similar to this particular vehicle: HHH 200cc scooter Here’s a normal-enough vibe. I see something that looks like maybe mushrooms somewhere, pull the scooter up right next to them. I can ride my scooter directly to the mushroom, put the kickstand down, place the mushrooms inside the bag I store in my scooter bucket anyway, as if a basket of them had been dumped on the ground, hop back on the scooter, and take home the extra 2-20 lbs in the container I’d had in my scooter already. I can ride around anywhere easily with it, and never have to park it far from my destination. I love bicycles, truly, and yet I find denver to be too damn dangerous to use with a bicycle. Because of the entitlement of drivers, and ‘bad’/irresponsible/obedient-to-random-rules-from-supremacists road design, margins of safety and comfort just don’t quite work for me, getting around on a bicycle. I resent that, though. I loved the time of my life that I was using my bike a lot. And as soon as I got my first moped, I never rode that bike again. I’ll have another bike some day, and i’ll ride it, probably/maybe even around Denver, in some limited situations. But not at night, not if I needed to carry stuff, not if i’ll have to deal with cars/car traffic very much. buying scooters There’s been nice innovations in scooters in the USA recently! I got my scooter for $3200 in 2022 from a company based in Taiwan named Sym. Now in 2026 I’ve seen the same vehicle at the shop, also new, for $4400. On the other side of the strait of Taiwan are some quality manufacturers. One could get a similar version of the vehicle I have for $1600. It’ll show up in a week on a wood pallet, and all it needs is the front tire attached, and the handlebars attached. A friend got this scooter, it was super easy to put together. It costs more on HHH’s website directly, delivery is included. Amazon has it $400 cheaper, with a $400 delivery fee. Same either way. I was shocked at how easy the whole “buy a scooter off a website and assemble it” process was. Next time I’m getting a scooter, that’s what I’m going to do. To get my current scooter in the older way, I had to travel to a dealer in one vehicle, get dropped off, then drive the new other vehicle home. But having a brand new scooter dropped off at your house? amazing. And so cheap. It comes in a wood crate and uses metric bolts. I think most of the bolts on the crate (and handlebars) needed a 10mm socket and the front tire used a 17mm socket. A metric socket set like this is all one needs to do all the maintenance it’ll need, too. 2 Long ago I wrote a thing about scooters, since they’ve had such an impact on me, of course, how could I not, and then I could refer other folks to that page. I need to do a part 2. Any 125cc scooter from HHH also is great. One friend of mine has a 170cc scooter from them (the tank 200, obtained via facebook marketplace) and another friend has a 150 that is also lovely, obtained directly from HHH. The 150 size scooters have a 125cc engine, the 200 size scooters have a 170 cc engine. I don’t know why this is how it is. So, cheers to that. One of them gets to use the scooter now instead of an e-bike. One of them uses it instead of a regular car. Both are thrilled with the improvements. and if we all find it to be this way, maybe you will too. reducing car domination and capitalism and animal exploitation all at the same time? A scooter feels like an escape from car domination, and a way to obtain many interesting experiences (and to obtain instant free, ready-to-consume food). Foraging mushrooms feels like decapitalizing a certain portion of my food, and thus my life. Capitalism is so exploitative and coercive. How nice to reduce it’s footprint in my life. Speaking of exploitation and coercion… I cannot help think that people (me, I am people) could eat free mushrooms and replace any part of their diet that was animal flesh with mushrooms. (or tofu, or chickpeas, or store bought mushrooms, it doesn’t have to be foraged mushrooms obv), and in doing so doing escape participation in yet another exploitative system. I liked escaping capitalism via foraging, even when I was still participating in entitlement to animal exploitation. Now that I’ve Even without mushrooms, though, I would want for the same end result. The abundance of free mushrooms seems like a cool point to pass through on a stance towards the non-exploitation of animals, and a lesser exploitation of human animals (self and others). Resources The Light Eaters The Sexual Politics of Meat: A Feminist-Vegetarian Critical Theory Gathering Moss: A Natural and Cultural History of Mosses Foraging Mushrooms from Cheesman Park (part 1) Mycorrhizal Planet: How Symbiotic Fungi Work with Roots to Support Plant Health and Build Soil Fertility Footnotes after reading a book about moss I began carrying a pocket magnifying glass and guess what? the outside is even more interesting to me now. ↩ When I got my first scooter, and at first on my second scooter, I’d let the scooter dealer do the oil changes. Now I do them myself, for the same reason I cut my own hair. It’s so convenient to do it when I want, where I want, and I’m good/good enough at it. Sometimes I can do it in 10 minutes using a plastic container I fetch from my own trashcan. It takes exactly one container of oil (it’s like 957mil or something) and I pour the discard oil back into that same now-empty container, and drop the waste oil off at a mechanics shop when convenient. It took a while and was not as easy the first few times I did it as it is now. The only cost is a container of 10w-30 or 10w-40 oil which is usually $8 or so. And I began doing the transmission oil myself too, and belt and rollers. None of it felt trivial the first time I did it, but now I’m much better at it, and can do it in a pretty low-mess, clean, fast-enough way. I feel very independent and cost-effective, having a car-like vehicle that can go 55 mph, can carry multiple people, can carry stuff, but has a 1.5 gallon gas tank, weighs only 240 lbs, and I can do all of/most of the maintenance myself, as someone who doesn’t give a shit about cars and has always disliked dealing with stuff like that. I will do the brake pads myself for the first soon, too. There’s many youtube videos about how to do anything, and the vehicle is so simple even ‘big’ car maintenance tasks are simple with the scooter. ↩

5 days ago • 1 votes
How is music possible

If you take a scene from a horror movie and add funny music, the killer suddenly looks hilarious. Isn’t it strange that that happens?

5 days ago • 1 votes
[RIDGELINE] Walking and Not Walking a Castle in Italy

Ridgeline subscribers — Hello! It’s me, Craig Mod. I’m doing an event with David Marx in Tokyo this Friday night (17th) at Tiger Mountain, a small, hip bookshop. The in-person tix are all sold out, but it will be livestreamed, and there are still tickets for that bit. It costs about seven bucks, and would make the small bookshop running it super happy to sell more tickets! (Although I realize the timezone difference is terrible for most readers …)

a week ago • 1 votes
📚 BoredReading

You seem to be enjoying this.

Join free to unlock everything.

Create free account

Already have an account? Sign in