Why Do I Write?

Why does this blog exist? Is it worth the carbon footprint to compile, host and serve this blog?

In my worldview, programming is much more about transmission of knowledge than remembering how to invert1 a binary tree. I think it is paramount for programmers of this day and age to be competent in:

  1. Communicating their ideas clearly and concisely.
  2. Using existing abstractions, or creating ones if the need arises2. Abstractions entail vocabulary.
  3. Writing documentation, decisions, and tradeoffs that are selected. Both for posterity’s sake and as a way to decant what was and was not important at that time.

I suck at these three. But that’s ok because I can work on improving 😊.

Communicating Ideas

I have a lot of experiences where I have an idea for which I can’t put words. I imagine blobs, arrows, and boxes of how things need to interact. But when I want to communicate them I usually ramble on, fail to draw what I have in my head, and by and large, those concepts are communicated imperfectly. Or not at all.

Communication is hard.

But I think that the ability to communicate is a skill that can be worked on. Improved upon. It needs time and practice. This blog is my training ground. I don’t expect most of the posts here to be life-changing. But I hope that at some point I will have a groundbreaking idea that I’ll want to share. If/when that time comes, I would like to be prepared. So I train, here.

Existing Abstractions

Writing also forces me to do some research, and expand my vocabulary (and therefore my pool of abstractions). Every new entry I explore existing material. See what others have written about it. And I’m often presented with like-minded individuals with far more experience in the subject matter, that have interesting choices of terminology.

I’ve had some ideas I wanted to explore but quickly found other resources that covered all that I wanted to explore, and then some. And even if I didn’t end up writing an entry, my knowledge did expand.

I would love to be that resource for someone else; that might be struggling to find the words for a problem, or get some guidance on a topic. Even if they disagree entirely on what I had to say, at least I can be a bad example.

“I’m not totally useless. I can be used as a bad example.” ― Victor Hugo, Les Misérables

For Posterity’s Sake

Finally and most purposeless for you, the reader, it is a way I can log my journey through life. I look forward to coming back to some old entry and think: “Oh, how naïve young Joaco was”. And if you are me, in the future, then remember: you left a pair of socks in the top left drawer in the kitchen 🧦.

  1. Why would anyone, in any domain, need to invert a tree‽‽ 

  2. More often than not, abstractions over “new” ideas already exist. It is just too hard to find them in the heat of the moment. We need some time to work on a particular problem that we start to see patterns and similarities the new abstractions have with existing ones. 


Random Posts

Implementing Google OAuth to use Google API in Cloudflare Workers

In this blog-post, we'll go over the setup process and code required to implement a OAuth 2.0 flow, from the ground up, using Cloudflare Workers, their KV, and the Google API. #xpost

Deckchecks, Heuristics, and Decision Trees

One of the tools judges employ to thwart attempts to cheat is to require players to write down what cards they will be playing within a particular tournament, and routinely check them. Judges must perform these checks the fastest way possible to not delay the tournament. As such, they developed a myriad of techniques. I feel we under-use the availability of the decklist, so having a clear plan ahead of actually getting the deck in our hands can prove highly effective. In this post, I would like to explore some techniques' inner workings. Propose a hypothesis on why they might work in some situations but not others. Consider unexplored alternatives. And build a heuristic on what method is better for each circumstance. Join me! #mtg


¿Te pasa de querer programar algo y no saber que? tengo un bloqueo de ideas hace tiempo, quiero hacer algo con xxx y no se me ocurre qué hacer. #xpost


We are constantly trying to write code that easier for a human to comprehend. These high-level languages gave us the power of expression. And we like this!

We want more expression, and safety in the code we write; but we also want code that humans can understand and reason about. So what if we re-think our current software stack? And have humans evaluate other human’s code.

carbn is a Humans-as-a-Service, cutting edge technology that makes your code run in the distributed brains of our agents.