Skip to content

Writing & Creative Writing

Short stories, essays, and creative non-fiction — including the @polymatto Medium series (One Shot, One Story) and whatever else gets written for fun.

Showing 41-45 of 45 posts
Writing4 min read

Day #44: Thin skin, thick stems

It was snowing a week ago. Today it’s like 25°C. The flowers had all died out, some had closed but now they are in full blown beauty contest mode. Like if …

photo by Annie Spratt on Unsplash

It was snowing a week ago. Today it’s like 25°C. The flowers had all died out, some had closed but now they are in full blown beauty contest mode. Like if nothing happened. Actually, you can almost appreciate that the strongest and biggest stems that survived are now showing even more beautiful flowers than before the odd late April snow.

You were insulted in your DMs by a stranger and you skipped work today because you feel, deep inside, that these words had grounds. That stranger, namely “rocketd2003” got under your skin. You didn’t even shower, your steps count matches exactly the three round trips you did to the bathroom so far and you ordered fried chicken that you will most likely end up eating in bed.

Behind the closed blinds, it’s a beautiful day. You would know if you only glanced behind the blinds you are using as some sort of shield. But you keep looking with a scared side eye at your phone and at your laptop. The only discipline that you are showing, if we can call it like that, is to stay away from what’s currently hurting you.

Bzzz Bzzz. Your phone vibrates, it’s probably the Uber driver. You have to look.

It’s not, it’s rocketd2003 again. You swallow a big chunk of stale saliva that somehow materialised inside your mouth, making you realise that you hadn’t even brushed your teeth yet. You open the DM.

“I was joking dude, it’s just banter. I was expecting a cumeback haven’t seen you online at all today, sup?”

Mixed feelings. Then you start explode crying for no apparent reason. Maybe because of the relief you felt or because of the shame about yourself for the way you felt in the first place.

Bzzz Bzzz. Bzzz Bzzz. Another one? No. You are confused, it’s not your phone, you are holding it.

You open your eyes and… you get it. It was all a dream, a nightmare to be precise. You are all sweat and your heart is beating very fast. That was terrifying.

For a moment you thought you gave a fuck.

It was snowing a week ago. Today it's like 25°C. The flowers had all died out; some had closed, but now they are in full-blown beauty contest mode, as if nothing happened. Actually, you can almost appreciate that the strongest and biggest stems that survived are now showing even more beautiful flowers than before the odd late April snow.

You were insulted in your DMs by a stranger and you skipped work today because you feel, deep inside, that these words had grounds. That stranger, namely "rocketd2003," got under your skin. You didn't even shower; your step count matches exactly the three round trips you did to the bathroom so far, and you ordered fried chicken that you will most likely end up eating in bed. Sweaty shenanigans in bed with chicks was going to have a completely different meaning for you.

Behind the closed blinds, it’s a gorgeous day. You would know if you only glanced behind the blinds you are using as some sort of shield. But you keep looking with a scared side-eye at your phone and at your laptop. The only discipline that you are showing, if we can call it like that, is to stay away from what’s currently hurting you.

Bzzz Bzzz. Your phone vibrates; it’s probably the Uber driver. You have to look. You are hungry, your growling stomach reminds you that loudly and clearly.

It’s not; it’s rocketd2003 again. You swallow a big chunk of stale saliva that somehow materialized inside your mouth, making you realize that you hadn’t even brushed your teeth yet. You open the DM.

“I was joking dude, it’s just banter. I was expecting a cumeback; haven’t seen you online at all today, sup?”

Mixed feelings. Then you start to cry explosively for no apparent reason. Maybe because of the relief you felt, or because of the shame you feel about yourself for the way you felt in the first place.

Bzzz Bzzz. Bzzz Bzzz. Another one? No. You are confused; it’s not your phone, you are holding it.

You open your eyes and… you find yourself trying to turn off your alarm using your muscle memory. You get it now. It was all a dream, a nightmare to be precise. You are all sweaty, and your heart is beating very fast. That was terrifying.

For a moment you thought you gave a fuck.

Writing6 min read

Day #45: I, Drone

“You are a failure!” “You should get a job and a girlfriend!” “You are addicted to these games. Go get some fresh air!” And so on. That what I have been to…

photo by Michaela Římáková on Unsplash

“You are a failure!” “You should get a job and a girlfriend!” “You are addicted to these games. Go get some fresh air!”

And so on.

That what I have been told basically from puberty onwards. Well, up until I started my company. I had tried the streaming thing, I had a following, made a bunch of cash but I felt like if I was a drone. I had to perform for an audience. The audience was controlling me, remotely, via the interactions we had.

I was stressed, I wanted out, playing for fun is one thing but playing to have your audience have fun watching you it’s a job. I had lost interest and the numbers showed that clearly as well.

A friend of mine had a drones channel, acrobatic stuff. He never showed his face. Not because of his persistent acne but because the drones did all the work, he just had to pilot them and he was having a blast doing it.

I was jealous so I started getting into drones as well. I could code and I was more familiar with my gaming controller so I developed a custom interface. With that I could pilot my drone like if I was playing a game. From there I wanted to control multiple drones, and make them do choreographies. I added some LEDs to them and I started to do some shows for people. It was fun but not crazy fun.

These drones could pull some weight, especially if I made more drones move together, tether them to the payload and then control them via the software I had developed.

For fun and giggles I had tried to move my car from my driveway to the garden. I recorded the whole thing, uploaded it and. Damn. It went viral. My small fleet of drones had lifted my car, made it waltz in the air and then parked it perfectly next to me. I also starred in the video, I was on a sunbed with my laptop and when the car landed next to me, one of the drones entered one of the car windows and brought me a can of beer that was inside the car.

It was silly but people liked it.

I didn’t realise what I had developed. I could transport stuff, pretty cheaply to very hard to reach destinations.

Having to deliver a Cybertruck to this billionnaire’s private island was one of my first contracts. Of course I asked if I could stream the whole thing and we agreed on not showing anything that could harm my client’s privacy.

So, that I did.

Few months later, I delivered my dad his dream car. A 1968 Ford Torino GT. Attached to the key, acting as a keychain, a Ledger Nano. In it, I put their retirement fund. They’ll never have to worry about money and they can finally enjoy themself a little bit.

On top of that, I hugged my parents and I thank them for their patience. Not for having believed in me, because they didn’t, but probably that was what I needed to achieve what I had achieved.

— “You are a failure!” “You should get a job and a girlfriend!” “You are addicted to these games. Go get some fresh air!”

And so on.

That’s what I had been told, basically from puberty onwards. Well, up until I started my first company. I had tried the streaming thing; I had a following and made a bunch of cash, but I felt like a drone. I had to perform for an audience that was remotely controlling me through our interactions.

I was stressed and wanted out. Playing for fun is one thing, but playing so your audience can have fun watching you is a job. My interest waned, and the declining numbers clearly showed it.

A friend of mine ran a channel for drone acrobatics. He never showed his face—not because of his persistent acne but because the drones did all the work; he just had to pilot them, and he was having a blast doing it.

Jealous, I started getting into drones as well. With my coding skills and familiarity with my gaming controller, I developed a custom interface. This allowed me to pilot my drone as if I were playing a game. I wanted to control multiple drones and make them perform choreographies. After adding some LEDs to them, I started doing shows for people. It was fun, though not mind-blowingly so.

These drones could pull some weight, especially if I had multiple drones moving together, tethered to the payload, and controlled via the software I had developed.

Just for fun, I tried moving my car from the driveway to the garden. I recorded the entire process, uploaded it, and—damn—it went viral. My small fleet of drones had lifted my car, made it waltz in the air, and then parked it perfectly next to me. In the video, I starred, lounging on a sunbed with my laptop as one of the drones entered a car window and brought me a can of beer from inside the car.

It was silly, but people loved it.

I hadn't realized what I had developed. I could transport stuff, quite cheaply, to very hard-to-reach destinations. Of course, not for long distances but I was solving a problem apparently.

Having to deliver a Cybertruck to a billionaire’s private island was one of my first contracts. Of course, I asked if I could stream the whole thing, and we agreed on not showing anything that could harm my client's privacy.

So, I did. Went viral beyond my most optimistic predictions and that’s how I had to scale up my team all around the world essentially. I had some VCs reaching out but I never took a cent. Bootstrapped, solo founder, giving equity to the team as it should be. Innovating and trying to keep everyone happy.

A few months later, I delivered my dad his dream car, a 1968 Ford Torino GT. Attached to the key, acting as a keychain, was a Ledger Nano. In it, a retirement fund. My parents will never have to worry about money again and can finally enjoy themselves a bit.

On top of that, I hugged them both and thanked them for their patience—not for having believed in me, because they didn’t. But probably because their scepticism and criticism was what I needed to achieve what I had achieved. I knew they were coming from a good place. I was just having fun, I only had to figure out a way to get paid for have fun.

https://twitter.com/polyMatto/status/1785381208899133910

Writing8 min read

Guests, prototypes, and the price of attention

AI made the faith-based OSS prototype cheap. It did not make the maintainer's attention cheap. On guests, slop, empathy, and why "nope" is still the contract.

I opened a pull request once, enjoyed writing it, and watched it sit for three years. I am not complaining. I was a guest in someone else's house. That is the deal: you may offer, they may refuse, and "nope" is still the contract.

What changed is not that maintainers suddenly became colder. What changed is that I can now run the same experiment for a fraction of the cost.

That gap. cheap production, expensive attention, is the actual story of open source in the age of language models. Most arguments about "slop" and "empathy" are people standing on opposite sides of that gap and using moral language for an economic problem.

Two honest urges

On one side: I use the software. I hit a wall. The official path is "fork it" or "use this unofficial hack." Forks are fine if you have time, taste, and a build pipeline. A lot of people don't. They just want the tool to talk to the KMS they already pay for. For example...

So you build a prototype. Not because you think the maintainers owe you a merge, but because a working thing in a branch is a better conversation than another "+1 would be nice." Before language models, that prototype was an expensive, faith-based experiment. You could spend a weekend, show up with something shaped more or less like a solution, and anyone in the thread could say "nope." That was acceptable. That is the social contract.

On the other side: maintainers don't starve for ideas. They starve for hours. Every extra backend is a dependency, a security surface, a release note, a user who will file a bug in three years when the cloud vendor changes an API. A plugin system is not "yes, add my provider." It is "we will live with this interface after you have moved on."

Both urges are legitimate. They do not automatically produce a good thread.

What "slop" is pointing at

"Slop" is a lazy word, and also not a meaningless one.

It does not mean "a machine touched this." A lot of good code is typed with assistance now, the same way a lot of good code used to be typed with Stack Overflow open. I have shipped plenty of both. The tell is not the tool. The tell is when the artifact asks the reader to do the thinking the author skipped.

In a pull request that usually looks like this:

  • a large diff that arrives as a conclusion, not a question
  • prose that sounds confident about tradeoffs the project already rejected
  • tests that exercise the happy path and leave the scary path to the reviewer
  • a tone that optimizes for "look, it works on my machine" instead of "here is why this belongs in this tree"

People say "lacking empathy" when they mean that. They don't mean you failed a feelings exam. Some of my exes told me that, but that's another story. They mean the comment or the PR did not budget for the other person's attention.

That usage is loaded. It is also closer to the old engineering meaning of courtesy: don't make the next person hold the whole design in their head because you didn't want to cut the work into reviewable pieces.

I care about results. Does this introduce fewer problems than it solves? That test still matters. It is not the only test. In a shared repository, "it works" is the start of the argument, not the end.

The cost inversion

The old bottleneck was implementation. You had to understand the codebase well enough to change it, or you didn't ship.

The new bottleneck is absorption, the cost of taking a patch into the tree. Anyone can produce a plausible patch. Almost no one can cheaply decide whether that patch should become load-bearing infrastructure.

So the social contract needs a footnote, but not a rewrite.

It is still fine to say "nope."

It is still fine to prototype in public.

It is not fine to confuse "I reduced my cost of trying" with "I reduced your cost of reviewing." Those are different bills. AI pays the first one. It does not pay the second. Cheaper prototypes do not entitle you to a cheaper "nope." They entitle you to try again, smaller, or somewhere else.

This is why a proof of concept and a merge candidate are different objects. A POC can be a bit ugly. It can be one commit called wip: can we even do this. Its job is to resume a conversation. A reviewable change is small, motivated, and shaped to the house style. Mixing the two, dumping a conversation-opener and then being surprised that nobody wants to rubber-stamp it, is how threads go sideways.

I would rather be told "this is hard to engage with" than hear nothing at all. That sentence is useful data. It is not a verdict on whether the problem is real. A clear "nope" beats silence every time.

Empathy, without the sermon

If empathy means "anticipate how this lands," then both sides owe some of it.

Contributors can:

  • say what is a prototype and what is asking for review
  • point at the decision, not the novelty: in-tree hook versus out-of-tree plugin, protocol, key type, compatibility
  • cut the first patch until a tired person can read it on a phone
  • accept that "already possible, albeit hacky" is sometimes the correct official answer
  • stop narrating how much joy or pain went into the work. Effort is not a claim check.

Maintainers can:

  • close things. Silence is more expensive than a short no, and a short no is cheaper than a grudging merge
  • separate "we don't want this in core" from "you were wrong to want it"
  • keep the workaround visible, so the next person doesn't have to invent the same hack
  • remember that some of the volume they hate is downstream of years of no decision

Neither list requires anyone to become nicer in the abstract. They require people to treat attention as a limited reagent.

What I think is actually worth keeping

I like that models made the faith-based experiment cheaper. I like that someone who is not a full-time systems person can stand up a working backend and put it next to a three-year-old issue. I like that users who will never maintain a fork still get a chance to see a path.

I wrote about the artisan's Mk 45 recently: forty-five iterations on a chisel that is still not perfect yet. A prototype is allowed to be Mk 1. A merge request is the chisel you hand to someone else to swing. Different objects. Same shop, different job.

I do not like the emerging habit of using that cheapness as moral leverage: I produced a thing, therefore the project should metabolize it. That was never the contract. The contract was: you may offer, they may refuse, the software remains someone else's house.

The interesting future is not "AI PRs versus human PRs." It is whether projects grow an immune system that can tell a cheap experiment from a cheap mess.

A healthy version looks boring:

  1. Issue first. One paragraph on the problem, one on the constraint, one on the rejected alternatives.
  2. Prototype in a branch or a sidecar repo, labeled as such.
  3. If maintainers want it, a sequence of small patches that each survive a skeptical reading.
  4. If they don't, the prototype still exists for the people who need the unofficial path.

That last point matters. Official purity and user need can both be true. Documenting the hacky integration is often a better gift than arguing about whether core should grow another cloud vendor.

The golden age of forks... it might be another blog.

The part I had to write down so I wouldn't post it on the issue

English is not my first language. Words like "slop" and "empathy" arrive already hot. It is tempting to unpack them in the thread, explain the old PR, explain the model, explain that you would have done the same work by hand in 2022, explain that you are a heavy user and also an author of OSS, explain that you are only trying to help the people who cannot keep a fork alive.

Don't.

The future reader of that issue came for a key type and a protocol. They did not come for your theory of collaboration. If the theory is worth anything, it belongs in a separate place, where it can be wrong in public without blocking the patch.

The patch still has to answer the only question that gets code merged:

Does this solve more problems than it introduces — for the people who will still be here after the excitement dies?

If yes, make it small enough to check.

If not, leave the prototype on the porch and don't demand that the household rearrange the furniture around it. The door can stay closed. Nope is still a complete sentence.

If you built something useful, users will use your fork. Solve your own problems first. You might help some other vagrant user with the same one down the line.

Ciao!

Writing7 min read

The artisan's tools

Master carvers put beautiful women on doors. We put waifus on screens. Same source-code, different compiler. On making your own tools and why Mk 45 is the honest version number.

You enter an artisan's shop and you see weird tools all around.

Not "weird" as in exotic. Weird as in unaccounted for. There is a chisel that is clearly a screwdriver that is clearly a spring that is clearly somebody's Sunday afternoon. Nothing has a label. Everything has a history.

You ask where he got them from, because they are nothing like the ACME Inc stuff you buy off the shelves, and he smirks the smirk of a man who has answered this question a hundred times and still enjoys it:

I made them myself. That one is its Mk 45. It's good, but not perfect yet, it only saves me 10h a week.

Mk 45.

Forty-five. On a hand tool. This man has been shipping versions of a stick since before "iteration" was a word startups rented. And note what he leads with: not the forty-four failures, the yet. The tool is good. It is not perfect yet. The artisan's tools are never finished, only current.

Have you ever been asked: "When are you going to be done with this?". Always a very weird question to answer.

What does "done" mean? It's always a matter of when to draw lines and when to say "NO" to further enhancements.

When you hit diminishing returns it's a good starting point for ending and be done... well, until change happens and the variables change^2 everything again. So is "done" really achievable? Only when you deal with your perfectionism and with the fact that your systems -will- have flaws and that your job is to make sure to cover the majority of the cases gracefully, in a way you can learn from instead of failing spectacularly without ever knowing what was wrong.

Success lies in the tradeoffs. So does failure. But you fail only if you stop at Mk 1 or even before then. Everything else is learning.

The carver's daughters

Back in the day, way back, master carvers used to carve beautiful women on doors, boats, staircases. Figureheads, door knockers, the odd scandalous banister. Turning a hunk of wood into a talisman of luck, lust, and let's be honest, a bit of a flex: look what my hands can do.

Today we do waifus.

Before you snicker: it's the same gesture. It's still an attempt to humanize the craft, to have a relationship with the thing you make. The sailor who carved a woman into his ship's bow wasn't confused about wood. He was negotiating with the sea. The anime girl on a mechanical keyboard is not (always) a cry for help. She's a sigil. Mine keeps the regex honest.

Nothing is new under the sun. Our source-code didn't change much.

I wrote that last line as a joke and then it followed me around for a week, because it's not a joke. Our source-code didn't change much. The carver and the programmer are running the same program on different materials. Both of us:

  • Stare at a raw material that does not care about us (wood does not care; the compiler does not care)
  • Build tools to shape it, because the shelves don't sell the tool we need
  • Put a face on the output, because a face is how you say this one is mine
  • Version everything, out loud, with a smirk

The commits? The PRs? They are your Mk 1, 2, 3 .... 152562. You might think it's too microlevel but the devil is in the detail and a single commit, even a oneliner can have a huge impact on your project.

ACME Inc does not know your hands

Here is the actual difference between the shelf tool and the Mk 45, and it's not quality. It's fit.

A shelf tool is an average. It is designed for the median hand doing the median task, which is to say: for nobody. It works fine, which is the most damming thing you can say about a tool. The Mk 45 works for him. It has his calluses mapped into its handle. It is illegible to everyone else in the shop. You would pick it up and put it back down, confused... because it is shaped by forty-four rounds of one man's specific failures.

This is what your dotfiles are. This is what every hacker's .zshrc is: a groove worn by one hand. My terminal is my Mk 45. I have been carving it for two decades and it saves me, conservatively, an ungodly number of hours a week, and to anybody else it looks like a chisel that is clearly a screwdriver. When I built my own terminal — a whole terminal, like an idiot, like a carver — the question was never "why not buy one?", "why not just get this open source one, it's just one download button away!".

The question was what shape does my work want? You cannot answer that at the store or in a README.md on github or on a /download route on a website.

And the tools accumulate you back. Muscle memory is a relationship, not a feature. After enough years, the tool knows your hand, and you stop thinking, and that is the entire point: the tool disappears and only the work remains. The carver wasn't showing me tools. He was showing me the parts of his hands that live outside his body.

Driving for me is the finest example, I don't know if you feel the same but sometimes it's like breathing, it's second nature. The car is like an extension of your legs. If something is wrong with your car you can just feel it. The odd vibration, the weird noise, the different responsiveness of the pedals, etc.

The forty-four are the resume

We keep the wrong artifacts. The shelf tool arrives perfect and stays perfect and teaches you nothing. The Mk 45 arrives wrong, forty-four times, in public, and each wrongness is a decision you can point at: here I learned the handle was too short. Here I learned I don't need the spring at all.

A perfect tool is a finished conversation. A versioned tool is a friendship. With all it's highs and lows.

This website is on Mk-something-hundred — I stopped counting somewhere around the hundred-and-fiftieth hand-built theme, each one a little wooden face saying this one is mine. And yes, some of them are pure AI slop, inspired/driven by a direction. I'll try random themes and make adjustments to them until I realize if it's the case to make them better, more "mine" or just to delete them and move on. The point is that the site is designed to have hundreds of themes.

Why?

Why not?

Nobody asked for a terminal-themed blog. That's how you know it's carved and not bought.

So, what's your Mk 45?

Not your job. Not your stack. The thing you made for your own hands, that nobody else would recognize, that saves you ten hours a week and is still not perfect yet.

If nothing comes to mind — that's not a shame, it's an open door. Start with something small and stupid. Carve the woman on the door. The sea will negotiate.

Enjoy the craft, everything else follows.

Writing1 min read

Just launched

The site is live. I'm still testing things — expect rough edges.

polymatto.com is up! This is the first real deploy: static site, themes, blog, Easter eggs, bugs, the whole lot.

I'm testing things out as I go. Layouts may shift, posts may appear and disappear, and something will probably break at least once. That's the point of a homestead: you fix it.

If you landed here by accident: hello!? If you meant to be here: thanks for reading while I figure this out.

More soon.

Share𝕏LinkedInRedditWhatsApp