This blog has been a part of my life for over fifteen years ago.
When I first started, I was inspired by Patrick McKenzie’s article Don’t End The Week With Nothing. This post left a memorable impression on 20-something me who had yet to consider what work really was — trading time and (sometimes) skill for money.
You work for a week, collect your paycheck on Friday, and then you and the company are even. If you are happy settling for even, that’s great. But then how can you get ahead? What would it take to finish a week with more than a break-even trade of time for money? Here I will quote Patrick verbatim:
But no matter how much I spun, nothing about my situation ever changed. I worked my week, got to the end of it, and had nothing to show. The next week there would be more emails and more tickets, exactly like the week before. The week after that would be more of the same. And absolutely nothing about my life would change. I’d end the week with nothing.
Don’t end the week with nothing. Prefer to work on things you can show. Prefer to work where people can see you. Prefer to work on things you can own.
This blog started as a response to that call to action. By blogging, I reasoned, I could do something to get ahead each week, that is public, and that I own. I remember one year taking the advice to “not end the week with nothing” quite literally, and in 2016, tried to write a new blog post every week, ending the year with 53 posts of varying quality.
At first, I didn’t really know what to write about, but eventually settled on a pattern of first learning something new, and second writing about it, which also served as an excellent mechanism to reinforce what I was learning. In the early years I focused on Google’s App Engine MapReduce and Pipeline libraries. This proved to be fertile ground a couple of reasons: we used those libraries extensively at work, and the official documentation was sparse and in some cases non-existent.
As I learned more about MapReduce and Pipelines, I would make notes, run experiments, debug broken executions, and eventually developed a narrative tutorial on how to use these libraries effectively. At one point, I remember the project maintainers referring to my blog posts as the “semi-official” documentation when users would ask technical questions. Through this work I became an internal expert at work, and was becoming a trusted resource online.
A similar pattern happened when I explored the inner workings of Kafka, which ended up being often cited in StackOverflow answers, and how Kubernetes networking really worked, which a hiring manager told me was required reading for new hires at his company.
This may sound hyperbolic, but these experiences were transformative for me! I felt like I was contributing something to the world, establishing myself as a quality engineer, building my name, and my career. Returning to Patrick’s newsletter:
Amy Hoy has a great metaphor for this – “stacking the bricks”. Seen from the outside, you might say “That person with an impressive career? It’s like they have a sheer wall made out of awesome. I could not hope to ever have a wall like that.” Seen from the inside, it looks like one day of delivering a single good conference talk, a few weeks spent writing an OSS library, another day writing the definitive blog post on getting multiple Ruby versions playing together, a few months shipping a product used by many people, an hour recording a podcast. Brick by brick, stone by stone, the wall gets higher.
I was stacking bricks. I was building something.
Fast forward to 2025. I was taking on more responsibility for our encryption at transit and at rest, and realized I lacked some fundamental cryptography knowledge — it had been a while since I learned this in University and hadn’t really applied cryptography throughout my career.
This was a great opportunity to follow my previous pattern: learn cryptography more deeply, and write about it as a way to reinforce my learning. Working with the book Serious Cryptography and the cryptography lectures from MIT I started creating the blog series Cryptography for the Everyday Developer.
My typical process for blogging is to take notes while I learn about a topic. Then, I drop all of those notes into a blank Markdown document and begin assembling them into a post: first by organizing them a bit with rough headings, and then by fleshing out the headings into full paragraphs, adding examples, developing a draft, editing, and eventually ending with a blog post I can publish.
I started out my cryptography series the same way: I would read a chapter of the book, and then watch the relevant lecture(s) on YouTube, taking rough notes throughout. This time, however, I had a new tool that could help me assemble my notes into a finished article — ChatGPT. It was so easy — and so tempting — to drop my rough notes into the chat window and ask it to produce a blog post, that soon enough my workflow changed: I dutifully took notes like before, but this time dropped them into ChatGPT and asked for a blog post, did some light editing of the result, and hit publish.
At times it felt like I was doing good work. I was publishing something, upping my blog count, and starting to understand cryptography more. At other times, it felt like I didn’t. I knew I didn’t fully understand the posts I was publishing to a deep enough level. The act of writing clarifies both thinking and understanding, and I completely skipped the writing part, sacrificing thinking and understanding as a consequence. Anthropic recently released research that mirrors my experience writing this blog, stating that:
[C]ognitive effort — and even getting painfully stuck — is likely important for fostering mastery.
I wasn’t really getting stuck, and I was outsourcing the cognitive effort of writing to the LLM.
At times it felt like I was publishing into a void: who was I writing for? People? Machines? The likelihood of a software developer reading these words directly from my blog is diminishing daily as they become compressed into large language models. Anecodtally, user sessions on this blog have dropped by almost 60% since last year, and it seems like the need for technical-style tutorials and guidance is being quickly supplanted by LLMs.
So, although I was publishing articles I felt like I was also losing two important things: the core value of using writing as a means of clarifying thinking and deepening understanding, and my ability to develop and show my work as interested readers and curious learners went directly to ChatGPT instead of finding an article through organic Google search.
I found it harder and harder to get motivated to finish my cryptography series, and I’m not sure I will.
LLMs are an excellent tool. They immensely amplify my coding ability, perform research and analysis, and complete ever day tasks. Yet, they aren’t the right tool for this blog because they strip out some of the value I get from blogging in the first place. LLM-assisted writing reduces the amount I learn, reduces the feeling that I am building something unique for the world, and, as discoverability of technical material coalesces to a chat box, reduces the positive feedback I hear about my work.
So, for this particular blog, I will choose to write as I always have: by fumbling through the difficult work of developing thoughts, ideas, learning, and opinion into what I hope are cohesive posts that are useful to others. I can also add the human perspective. Instead of focusing on technical articles and tutorials, I can write about things that LLMs can’t: personal opinions, reflections, critique, analysis, and anything else with a personal touch.
I can still end the week with something.