Reading Log

by Kurt Pan

We are automata, our minds are molecules in salt water.

Personal growth comes from using both internal and external changes, like a ladder with alternating left-right steps.

The todolist is an action-oriented long term memory prosthesis.

You create a project to represent reading the book, and that project is now tracked, and when you open the todo list, you can see it in the list of active projects.

To me, energy is less like a battery and more like voltage. Some machines require a threshold voltage to operate. Below that voltage they don’t just operate slower, they don’t operate at all. Analogously, different categories of activity have different threshold voltages.

In 2001, quantum computers factored the number 15. It’s now 2025, and quantum computers haven’t yet factored the number 21.

The future of the web cannot hinge on who controls the keys. We need protocols, not gatekeepers. Authentication, authorization, and monetization must remain open, interoperable, and standardized. I’m open-sourcing a first cut of these ideas chains of delegation, request-level authorization , and task-scoped authorization so anyone can implement them, today. The future should not be about who holds the gates. It should be about protocols that let everyone build, share, and innovate.

A person interacts with our work. Our work evokes a feeling. The feeling matters. The feeling is part of the work. The desired feeling is part of the requirements.

The feature makes you smile when you use it. It fits right in, like it was always meant to be there. You want to use it again. You want to tell people about it.

A lot of engineers design by trying to think of the “ideal” system: something well-factored, near-infinitely scalable, elegantly distributed, and so on. I think this is entirely the wrong way to go about software design. Instead, spend that time understanding the current system deeply, then do the simplest thing that could possibly work.

As with many skills, real mastery often involves learning when to do less, not more. Great software design looks underwhelming.

Simple systems are stable.

Blogs are great but I don't enjoy reading posts in my email, having to remember the websites each one is hosted at, or reading from each publications' different typesetting opinions with varying pop-ups and advertisements. An RSS reader centralizes all content from your blogs into a single place for reading.

When you compare two Uncertain values, you don’t get a definitive true or false. You get an Uncertain that represents the probability of the comparison being true.

The goal isn’t to eliminate uncertainty — it’s to acknowledge that it exists and handle it gracefully. Because in the real world, nothing is certain except uncertainty itself.

I believe a lot of the negativity towards CSS stems from not really knowing how to use it. Many developers kind of just skip learning the CSS fundamentals in favor of the more interesting Java- and TypeScript, and then go on to complain about a styling language they don’t understand.

I suspect this is due to many treating CSS as this silly third wheel for adding borders and box-shadows to a webapp. It’s undervalued and often compared to glorified crayons, rather than what it really is – a powerful domain-specific programming language.

In the past few years, CSS has received a ton of awesome quality-of-life additions, making it nice to do stuff that has historically required preprocessors or JavaScript.

What I suggest, is that people experiment with them. At the least, read about what others are doing, but pay attention to the details of their workflows. Preferably experiment yourself, and do share your experiences.

Hallucinations aren’t a bug of LLMs, they are a feature. Indeed they are the feature. All an LLM does is produce hallucinations, it’s just that we find some of them useful.

The difference in the answers can be as useful as the answers themselves.

A structural engineer builds in tolerance for all the factors she can’t measure. (I remember being told early in my career that the unique characteristic of digital electronics was that there was no concept of tolerances.) Process engineers consider that humans are executing tasks, and will sometimes be forgetful or careless. Software Engineering is unusual in that it works with deterministic machines. Maybe LLMs mark the point where we join our engineering peers in a world on non-determinism.

The entire concept of an agentic browser extension is fatally flawed and cannot be built safely”.

Technically, Google can store every message you receive and know everything, and U.S. agencies can request access to that data. So I decided to switch to another provider, one that respects privacy a bit more.

I decided to move all my emails from Gmail to mailbox.org, so I could (in future) completely wipe my Gmail account.

Miyazaki is right, and Altman is wrong. Miyazaki tells stories that blend the ordinary and the fantastic in ways people find deeply meaningful. Altman tells lies for money.

The makers of AI aren’t damned by their failures, they’re damned by their goals. They want to build a genie to grant them wishes, and their wish is that nobody ever has to make art again. They want to create a new kind of mind, so they can force it into mindless servitude. Their dream is to invent new forms of life to enslave. And to what end? In a kind of nihilistic symmetry, their dream of the perfect slave machine drains the life of those who use it as well as those who turn the gears. What is life but what we choose, who we know, what we experience? Incoherent empty men want to sell me the chance to stop reading and writing and thinking, to stop caring for my kids or talking to my parents, to stop choosing what I do or knowing why I do it. Blissful ignorance and total isolation, warm in the womb of the algorithm, nourished by hungry machines.

I strongly feel that this is an insult to life itself.

I have found that Rust's strong safety guarantees give me much more confidence when touching the codebase. With that extra confidence I'm much more willing to refactor even critical parts of the app, which has a very positive effect on my productivity, and long-term maintainability.

The crux of OAuth is an access token, which is sort of like an API key for a specific user. An app gets an access token, and then they can use that to take actions on the user's behalf, or access data for a user.

Big O notation is a way of describing the performance of a function without using time. Rather than timing a function from start to finish, big O describes how the time grows as the input size increases. It is used to help understand how programs will perform across a range of inputs.

The real question isn’t whether you’ll make mistakes; it’s what you do after.

The most important parenting skill isn’t being perfect — it’s repair. Acknowledging what happened, taking responsibility, and reconnecting.

When you own your mistakes completely and specifically, something unexpected happens: your team trusts you more, not less.

When you know you can fix things when they go wrong, you’re more willing to make decisions, have difficult conversations, and take reasonable risks. You stop being paralyzed by perfectionism because you know that most mistakes, while serious, create opportunities for growth and stronger relationships when handled well.

Your job isn’t to be perfect. Your job is to ship working software that adds real value to users, to help your team grow, and to create an environment where people can do their best work.

run Claude Code headlessly in a loop forever and see what happens. Turns out, what happens is: you wake up to 1,000+ commits, six ported codebases, and a wonky little tool.

while :; do cat prompt.md | claude -p --dangerously-skip-permissions; done

We spent a little less than $800 on inference for the project. Overall the agents made ~1100 commits across all software projects. Each Sonnet agent costs about $10.50/hour to run overnight.

Experience and expertise tends to gradually reduce creativity. Learning the key ideas, constraints and challenges of a field requires an entirely different mindset than that which seeks to break those rules.

In those cases where experiments can be done easily, it can thus be advantageous to just run the experiment instead of always thinking out a solution beforehand.

The power of just meeting people without the intention of getting anything from them. Just meeting them for being cool and interesting. Long-term doing that has benefited them [the interviewed researchers] the most in their careers. Consciously participating in conferences can transform the experience from one of passive attendance, to a real opportunity to build brand new connections. The curious researcher even prepares beforehand, reviewing what posters and presentations may occur, to see what’s worth attending and who they’d like to speak with.

Stoking the flames of your scientific curiosity is one of the most accessible and vastly underrated ways of tapping into inner creativity and “zooming out” of your local pocket of research. Certainly you don’t need to start a podcast, but it can help.

In fact, this attitude of curiosity for topics beyond one’s specialty is a common trait among many great scientists. With the explosion in platforms sharing science, there’s an imminent revival of students and researchers tapping into inspiration from various domains.

Good APIs are boring. An API that’s interesting is a bad API (or at least it would be a better one if it were less interesting).

If your product is valuable enough, users will flock to even a terrible API. If your product is desirable, any barely-functional API will do; if it isn’t, it doesn’t matter how good your API is. API quality is a marginal feature: it only matters when a consumer is choosing between two basically-equivalent products.

If that sounds familiar, it’s because it’s similar to how bitcoin mining works. Anubis is not literally mining cryptocurrency, but it is similar in concept to other projects that do exactly that, perhaps most famously Coinhive and JSECoin.

I think the end result is just an internet resource I need is a little harder to access, and we have to waste a small amount of energy.

OCaml is, in many cases where fine-grained memory control is not needed, just as relevant as suggesting Rust (and probably more so).

OCaml is an amazing language! It offers an excellent balance between safety and expressiveness, thanks in particular to its advanced type system, a rich module language, objects, support for row polymorphism via objects and polymorphic variants, and user-defined effects! Its intersection of research and industry makes it, in my view, a language evolving in the right direction, carefully integrating new features to stay modern without suffering the pitfalls of too-rapid or untested adoption.

Enter your email to subscribe to updates.