👋! I'm Orlando, a product builder and inventor from Hamburg, Germany.

Currently I'm working at Ashby; before that I shipped ML infrastructure, distributed systems, rich user interfaces, and a lot in between using TypeScript, Rust, Python and whatever the job called for.

This is my personal website, so all thoughts and opinions here are entirely my own. Consider this a fair warning. If something here got you thinking or enraged, come find me — I'm always open to dialogue.

Slop Articles

The proof of work.

Mostly every post on this blog was written with some AI-assistance. If you scroll to the footer of any piece here, you'll see who wrote it and "who" co-wrote it — I built that disclosure into the site itself.
Tip

Honestly Co-Authored

How I disclose which and how AI helped create an article

At the bottom of every article here, there's a little section called "Changes." Often it names just me. On plenty of others, "Claude" sits right beside me — or one of the other agents I write with. I'm not against using AI to draft, edit, or refactor. I do it all the time. But it should be disclosed.

Lost in AI

How the messy but crucial engineering conversations got moved into private agent sessions.

When everything around AI is introduced with such fanfare, when every week brings a model update or a new agent framework or another "this changes everything" announcement, you don't notice the things that just happen. The quiet shifts. The ones nobody announces because nobody decided them. They creep up on you.
Article

Opus 4.7 Flagging Itself

Anthropic's new prompt-injection defense good enough to trip on its own system prompts.

I asked Claude Opus 4.7 to turn a batch of research into a document. It didn't. Instead of generating the markdown, it wrote that it had detected a prompt injection in the conversation.
Article

prelude.ts

A small TypeScript reference library for the FP patterns.

The first WIP commit for this thing landed in 2019. Before that it was not really a repository so much as a loose collection of files: snippets, tiny abstractions, examples I would pull up when I wanted to show someone why some supposedly esoteric functional programming concept was not actually that exotic. The code barely changed over the years. I just kept reaching for it, and at some point I had to admit it deserved a proper cleanup.

Agency Device

Why we see agents where there aren't any.

The first time I encountered a useless machine, it seemed like it was mocking me. There it sat — a plain wooden box, one switch, nothing else to it. I flipped it on. A little hand swung out, deliberately knocked the switch back off, and pulled itself back inside. So I flipped it on again, and again, and again. Every single time, that hand came back looking more determined, more stubborn.

You No Longer Need to Code

Learning to program may still change how you think.

Lazar Jovanovic is Lovable's first "professional vibe coding engineer." In a LinkedIn short that got some traction, he made the case that learning to code is pointless now. AI writes the code. The problem is solved.
Article

Seductive Answers

Why a confidently wrong AI answer is harder to question than an obviously wrong one.

There's a particular surprise in clearing out an old drive: you go looking for free space and find your past instead. Buried in a backup from 2014, I found this note about simple answers and stupid algorithms. Reading it now, in 2026, it's both funny and a bit unsettling how spot-on some of it was.
Tip

Changing an SSH key passphrase

A while back I wanted to change the passphrase on an SSH key. Mine was painful to type and I'd never thought to question whether it could be changed in place. Turns out it can, and it's a one-liner.
Tip

Show hidden files in Finder

Run the following in a terminal to show hidden files in Finder. The defaults command updates the preference; killall Finder restarts Finder so the change takes effect.
Tip

git://behind a firewall

The Git protocol is often blocked by corporate firewalls, which becomes a problem the moment your dependency manager — NPM, Bower — wants to clone something over git:// for speed. If you can't get port 9418 opened, you can tell Git to rewrite those URLs to HTTPS instead: