<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Write that blog!]]></title><description><![CDATA[For people who want to read/write great engineering blog posts.]]></description><link>https://writethatblog.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!wnDa!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd526d858-d510-49e0-8e4c-bdb4bded946d_1024x1024.png</url><title>Write that blog!</title><link>https://writethatblog.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 27 Apr 2026 05:45:10 GMT</lastBuildDate><atom:link href="https://writethatblog.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Piotr Sarna and Cynthia Dunlop]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[writethatblog@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[writethatblog@substack.com]]></itunes:email><itunes:name><![CDATA[Cynthia Dunlop]]></itunes:name></itunes:owner><itunes:author><![CDATA[Cynthia Dunlop]]></itunes:author><googleplay:owner><![CDATA[writethatblog@substack.com]]></googleplay:owner><googleplay:email><![CDATA[writethatblog@substack.com]]></googleplay:email><googleplay:author><![CDATA[Cynthia Dunlop]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Dan Moore on Technical Blogging]]></title><description><![CDATA[When you don't just say "oh, I've done that" but instead can say "oh, I've written about that, let me send you the post," it's a very powerful message]]></description><link>https://writethatblog.substack.com/p/dan-moore-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/dan-moore-on-technical-blogging</guid><pubDate>Thu, 23 Apr 2026 13:01:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c9a487b2-5420-4783-9858-1f4330e90628_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Authentication, authenticity, author&#8230;those are all good starting places for introducing <a href="https://bsky.app/profile/mooreds.com">Dan Moore</a>, who currently leads CIAM Strategy &amp; Identity Standards at <a href="https://fusionauth.io/">FusionAuth</a>. Community is a constant with Dan. If you&#8217;re on Bluesky, you know he&#8217;s the one to blame for your ever-growing bookmark queue. His blog-become-book, <em><a href="https://letterstoanewdeveloper.com/the-book/">Letters to a New Developer,</a></em> shares his personal lessons learned to help new developers navigate the awkward realities of their first job. He&#8217;s even found <a href="https://youtu.be/VrObxK-J_3I?si=jqGcxajC4uA2ABE8">zen in the snarkiest of communities</a>: the orange site that many of us love to hate (but can&#8217;t quite resist).</p><p>Dan&#8217;s been in the tech space for over 20 years &#8211; a former CTO, AWS certification instructor, engineering manager, devrel leader, and developer &#8211; and he&#8217;s been writing from all those different perspectives.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>We caught up with him to share his experiences and advice. Over to Dan&#8230;</p><p></p><h3>Why did you start blogging &#8211; and why do you continue?</h3><p>I started blogging because I wanted a &#8220;place on the internet&#8221; where I could write down what I was learning.</p><p>I continue blogging because it helps me in a number of ways.</p><ul><li><p>It helps me understand what I think about something.</p></li><li><p>It helps me scale when answering questions. I can write down the answer one time and share it with many people.</p></li><li><p>It helps me build my public profile because the things I&#8217;ve learned and the wisdom I have gained over the years aren&#8217;t locked up inside my head.<br></p></li></ul><h3>What has been the most surprising impact of blogging for you?</h3><p>Surprising things have happened due to blogging, for sure. Once, I was googling around for an answer to a question I had and I stumbled across an old blog post of mine. That was a surprise. Another time, I was in an interview and the interviewer asked me about blog posts I&#8217;d written. But the most surprising <em>impact</em> of blogging is different than some of the surprising events that resulted from my blogging.</p><p>The most surprising <em>impact</em> of blogging was the doors it opened up. When you don&#8217;t just say &#8220;oh, I&#8217;ve done that&#8221; but instead can say &#8220;oh, I&#8217;ve written about that, let me send you the post,&#8221; it&#8217;s a very powerful message. Whether that&#8217;s short-term contracts, which have happened to me when someone found my blog, or longer-term career options. The years I&#8217;ve spent in devrel are, I believe, due to the fact that I had been blogging for over a decade before my first developer relations job. My blog has impacted my career trajectory for the last decade.<br></p><h3>What blog post are you most proud of and why?</h3><p>In 2024, I wrote a post <a href="https://www.mooreds.com/wordpress/archives/3643">about requesting a change in my role</a>. At my current job, I was very clear that I did not want to manage people. I wrote about that and how I failed to have that difficult conversation with past employers.</p><p>This post was more about being professionally vulnerable than it was about technical difficulty. I&#8217;m proud of this because it took lessons I learned over my years and coalesced them into a post. I hope that it saves someone else from the anguish I had and the frankly dumb career moves that I made because I was afraid to ask for what I really wanted.<br></p><h3>What post was the most difficult to write and how did you tackle it?</h3><p>It&#8217;s hard to pick the most difficult one, but I wrote a post about <a href="https://www.mooreds.com/wordpress/archives/3244">Terraform and different environments</a>.</p><p>This was a tough one for me because of the technical depth and the detail that was needed to make sure this post was correct. And, to be honest, the tediousness of retesting terraform applys over and over again. I tackled this by standing up a GitHub project and sample AWS account and testing the code over and over and over again.</p><p>When you are writing deep technical how-tos, testing like this is boring but critical. Even one wrong fact can throw off a reader new to a technology or area.<br></p><h3>Any lessons learned that you want to share with the community?</h3><ul><li><p>Don&#8217;t over-focus on your tooling. I see a lot of people who focus on finding the perfect static site generation framework or twiddle with their blog&#8217;s look and feel or seek the perfect comments plug-in. Those are all excuses to not write! But the whole point of a blog is to take squishy thoughts from your head and put them into precise verbiages. This is why whenever someone asks how to start blogging, I always say &#8220;just use WordPress.&#8221; The tool doesn&#8217;t matter; the time and focus on writing is what matters.</p></li><li><p>Make sure that you share your work in communities (that make sense). This means that you have to join and participate in such communities. Otherwise, you are just a drive-by poster and who wants to be that. You can join slacks, you can join discords, you can join more public online communities like Reddit forums or Hacker News. Don&#8217;t share only your work. Have conversations and do other work that helps those communities thrive. But if you&#8217;ve written something worthwhile, you should share it. Otherwise, it won&#8217;t be discovered.</p></li><li><p>Take on blogging challenges. This could be doing something like 100 days of blogging or submitting to a topic-focused advent series (these tend to happen towards the end of the year). Find ways to do more with your blogging. Challenges are a fun way to do that.<br></p></li></ul><h3>Your advice for people just getting started with blogging?</h3><p>I wrote <a href="https://www.mooreds.com/wordpress/archives/2188">a short blog post about this</a> of course, but my advice for people just getting started is: blog for yourself.</p><p>If you write a blog to capture your thoughts at a certain moment in time, to illustrate something you&#8217;ve learned, or to help your future self, you&#8217;ll be thrilled with your blog. If, on the other hand, you write a blog to become famous or to get a job or to make money, you won&#8217;t be happy. Picking a goal that&#8217;s in your control will make you happier.<br></p><h3>A few blogs that you particularly enjoy?</h3><p>I love the <a href="https://randsinrepose.com/">Rands in repose</a> blog, the <a href="https://devblogs.microsoft.com/oldnewthing/">old new thing</a> blog, and <a href="https://www.swyx.io/ideas">swyx&#8217;s</a> blog. These all cover different areas of technical topics (engineering management, windows intricacies, wide-ranging thoughts on AI and devrel), but they all have style and I learn something every time I read one of them.<br></p><h3>Anything else you want to add?</h3><p>I mentioned earlier the importance of showing your work in communities. I&#8217;ve been an active member of Hacker News, an online link and comment-sharing community. Whenever I join a community like that, I try to keep sharing my own posts to about 5 or 10% of my interactions. I like to seek out other interesting posts from other communities and friends. I like to share those. Sharing the wealth is a great way to help other people at extremely low cost to yourself. I guarantee you that if you share someone&#8217;s post and it trends on Hacker News or gets extra visibility that it wouldn&#8217;t otherwise have had, they&#8217;ll remember that.</p><p>Blogging is a fantastic way to prototype writing a non-fiction book. Anyone who wants to write a book should write 10 titles of blog posts on the topic and then proceed to write those 10 blog posts. If either of those two steps stymy you, then you are probably not interested enough in the topic to write a book.</p><p>I took <a href="https://letterstoanewdeveloper.com/">a blog that I started in 2018</a> and after I wrote a couple of dozen blog posts, I turned into a book proposal. That&#8217;s how I would approach any future technical books because it not only lets you gauge your interest, as you share or publicize the blog, it also helps gauge other people&#8217;s interest. A book is a titanic endeavor and I would not want to do it unless I was sure that both my own interest and other people&#8217;s interest in the book topic made it worth my while.<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Cassidy Williams on Technical Blogging]]></title><description><![CDATA["You care more about your blog than any other person ever will, so don't worry about it not being perfect. Just write."]]></description><link>https://writethatblog.substack.com/p/cassidy-williams-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/cassidy-williams-on-technical-blogging</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Thu, 09 Apr 2026 12:54:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f171f1b1-d347-493d-8b9c-63aa33b3bf15_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you don&#8217;t know <a href="https://cassidoo.co/">Cassidy Williams</a>, that&#8217;s all on you. Cassidy is all about building in public &#8211; and she&#8217;s been sharing abundantly across Venmo, Amazon, Netlify, CodePen, and GitHub, plus many, many side projects.</p><p>Cassidy started <a href="https://cassidoo.co/blog">blogging</a> her first semester in college and has kept at it ever since. Readers get dev tips mixed with musings, both professional and personal. She takes blogging up a notch in December with <a href="https://cassidoo.co/post/blogvent-wrap-up-2025/">Blogvent</a> and maintains a steady weekly cadence for her wildly popular newsletter, <a href="https://cassidoo.co/newsletter">Rendezvous with Casidoo</a>. Oh, and she does videos too; just see <a href="https://www.youtube.com/@cassidoo">her recently relaunched YouTube channel</a>.</p><p>She recently popped into the <a href="https://discord.gg/d9gZyYuqKd">Overcommitted</a> community (a great group, btw), and we couldn&#8217;t resist asking her our usual writerly questions.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Over to Cassidy&#8230;</p><p><strong>Why did you start blogging &#8211; and why do you continue?</strong> I think the easiest one-liner response to this is: I like writing! I&#8217;ve been blogging on and off for almost 20 years. My current blog doesn&#8217;t actually have all of my writing in it (yet?) because sometimes it&#8217;s on my own domains, sometimes for companies, sometimes just out in the open. I&#8217;ve written a bunch over the years. I get a lot of value from writing things I learn (because I often run into problems over and over again, I&#8217;ve run into my own blog posts while debugging something multiple times), and so I try to do it regularly in case it might be able to help someone else, as well. On my newsletter side, I started it in 2017 as a way to more consistently write and share. It&#8217;s turned into probably my most important project I&#8217;ve taken on in my career, with several thousand subscribers and an issue that comes out every week!</p><p><strong>What has been the most surprising impact of blogging for you?</strong> Blogging has unlocked so many opportunities. I&#8217;ve made friends, joined communities, gotten jobs... it&#8217;s wonderful. &#8220;Learning in public&#8221; and also being vulnerable in a space that I own on the internet has been really valuable.</p><p><strong>What blog post are you most proud of and why?</strong> You know, that&#8217;s really hard to say. I think I like a bunch of posts for different reasons. I like<a href="https://cassidoo.co/post/react-children/"> this one about React Children</a> because it&#8217;s fairly snarky. I like<a href="https://cassidoo.co/post/ffmpeg-dark-light/"> this one about FFmpeg</a> because it was a really interesting technical problem. I like<a href="https://cassidoo.co/post/c-section/"> this one</a> and<a href="https://cassidoo.co/post/c-section-2/"> this one</a> about my birth experiences, because I wish those resources were available to my past self. I like<a href="https://cassidoo.co/post/micro-journal/"> this one about my Micro Journal</a> and<a href="https://cassidoo.co/post/wooden-phone-for-babies/"> this one about a laser cut wooden phone project</a> because the results were physical products I actually use. I can&#8217;t pick!!</p><p><strong>What post was the most difficult to write and how did you tackle it?</strong> I genuinely can&#8217;t think of one. I did write about<a href="https://cassidoo.co/post/new-blog-topics/"> coming up with blog topics</a> recently. I think it depends on my brain space if a post is difficult to write or not.</p><p><strong>Any lessons learned that you want to share with the community?</strong> AND <strong>Your advice for people just getting started with blogging?</strong> Just write. You care more about your blog and your content than any other person ever will, so don&#8217;t worry about it not being perfect. Just write. Your voice matters, and you&#8217;ll only get better the more you write!</p><p><strong>A few blogs that you particularly enjoy? Anything else you want to add?</strong> My favorite non-coding-oriented blogs I enjoy these days are:</p><ul><li><p><a href="https://www.eleanorkonik.com/">Eleanor Konik</a></p></li><li><p><a href="https://www.robinsloan.com/">Robin Sloan</a></p></li><li><p>Anything<a href="https://aresluna.org/"> Marcin Wichary</a> writes (sometimes on his blog, sometimes on his<a href="https://shifthappens.site/"> Shift Happens</a> site)</p></li></ul><p>They are definitely &#8220;tech-adjacent&#8221; but from a very cool, human lens!</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[writethat.blog Recap [March 2026]]]></title><description><![CDATA[Piotr&#8217;s picks for writethat.blog last month&#8230;]]></description><link>https://writethatblog.substack.com/p/writethatblog-recap-march-2026</link><guid isPermaLink="false">https://writethatblog.substack.com/p/writethatblog-recap-march-2026</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Wed, 08 Apr 2026 13:04:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9bf0948a-18ec-443d-b76b-72763cad5372_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Piotr&#8217;s picks for writethat.blog last month&#8230;<br></p><h4><a href="https://www.sigasi.com/opinion/jan/vhdls-crown-jewel/">VHDL&#8217;s crown jewel;</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>Turns out the difference between VHDL and Verilog is not &#8220;just syntax!&#8221; VHDL makes sure that events that happen concurrently in a &#8220;zero time&#8221; window are still simulated in a deterministic way. And determinism is a thing to be vastly appreciated in a hardware debugging world.<br></p><h4><a href="https://zeroclick.ai/blog/when-agents-have-wallets">When agents have wallets</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>An interesting projection on what the world is going to look like when we start giving AI agents pocket money.<br></p><h4><a href="https://antithesis.com/blog/2026/hegel/">Hypothesis, Antithesis, synthesis</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>Introduction to property testing, along with an open-source multilingual tool to put it in practice.<br></p><h4><a href="https://turso.tech/blog/what-happens-with-oss-in-the-age-of-ai">What happens with open source in the age of AI?</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>Welcome to March 2026: the month of questioning the Open Source paradigm in the age of AI. This one is quite an optimistic take on the topic, for a change!<br></p><h4><a href="https://codewall.ai/blog/how-we-hacked-mckinseys-ai-platform">How we hacked McKinsey&#8217;s AI platform</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=bug%20hunt">bug hunt</a></p><p>Terminator-style white hat hacker story on how an autonomous agentic AI job penetrated McKinsley&#8217;s platform and leaked all its data. The future is now.<br></p><h4><a href="https://lucumr.pocoo.org/2026/3/5/theseus/">AI and the Ship of Theseus</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>A philosophical take on GPL-ish licenses in the era of AI. Free Internet dramas inside!<br></p><h4><a href="https://www.feldera.com/blog/nobody-ever-got-fired-for-using-a-struct">Nobody ever got fired for using a struct</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Valuable tips for everybody struggling to squeeze a bloated database row into a structure in memory, while not keeping 150 NULL values around at all times.<br></p><h4><a href="https://jacko.io/snooze.html">Never snooze a future</a></h4><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Words of warning against a novel problem that emerged from async Rust -- cancel safety. Rule of thumb: futures can be implicitly &#8220;cancelled&#8221; by just not ever polling their status anymore, so it&#8217;s important to never leave important (or even worse, temporarily invalid) state hanging in them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writethat.blog/&quot;,&quot;text&quot;:&quot;Read more on writethat.blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writethat.blog/"><span>Read more on writethat.blog</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gLPR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gLPR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 424w, https://substackcdn.com/image/fetch/$s_!gLPR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 848w, https://substackcdn.com/image/fetch/$s_!gLPR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 1272w, https://substackcdn.com/image/fetch/$s_!gLPR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gLPR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png" width="703" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab85738b-db64-402b-853f-92b1ab621f59_703x822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88355,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writethatblog.substack.com/i/192879960?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gLPR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 424w, https://substackcdn.com/image/fetch/$s_!gLPR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 848w, https://substackcdn.com/image/fetch/$s_!gLPR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 1272w, https://substackcdn.com/image/fetch/$s_!gLPR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab85738b-db64-402b-853f-92b1ab621f59_703x822.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Gergely Orosz on Technical Blogging]]></title><description><![CDATA[Gergely&#8217;s path from beginning blogger to publishing the top newsletter in tech]]></description><link>https://writethatblog.substack.com/p/gergely-orosz-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/gergely-orosz-on-technical-blogging</guid><pubDate>Tue, 24 Mar 2026 13:24:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/308646af-2407-4ef9-a0fe-62d3aa24f52e_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Gergely Orosz has an uncanny sense of what matters. He spots and researches emerging engineering trends, then reports on them months, sometimes years, before anyone else. He scoops journalism giants like The Wall Street Journal, The New York Times, and Bloomberg. And when his vision for <em>The Software Engineer&#8217;s Guidebook</em> <a href="https://blog.pragmaticengineer.com/four-years-on-writing-a-tech-book-pitching-to-a-publisher/">didn&#8217;t fit neatly</a> into publisher conventions, he published it himself &#8211; and ended up with a <a href="https://www.linkedin.com/posts/gergelyorosz_the-software-engineers-guidebook-has-been-activity-7128974941823082496-vjKd/">#1 Amazon bestseller</a>.</p><p>That instinct has earned him over <a href="https://newsletter.pragmaticengineer.com/p/one-million">a million</a> regular readers, making <a href="https://newsletter.pragmaticengineer.com/">The Pragmatic Engineer</a> the top newsletter in tech. His focus on long-form analysis, original research, and insider perspectives sets it far apart from all the LLM remixes and Hacker News pandering. </p><p>Gergely&#8217;s path (engineer&gt; engineering manager&gt; professional writer/publisher/<a href="https://newsletter.pragmaticengineer.com/s/the-pulse">podcaster</a>/<a href="https://www.pragmaticsummit.com/">conference organizer</a>) is unlike most. So we thought we&#8217;d ask him an expanded version of <a href="https://writethatblog.substack.com/">our usual writerly questions</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Over to Gergely&#8230;</p><h4>Why did you start writing &#8211; and why do you continue?</h4><p>I started a blog when I was still in university because a lot of devs I looked up to all had personal blogs. When I got my first job, I wrote down interesting learnings I came across. It did not have many readers - but it helped me reflect on some of my learnings.</p><p>After a while, I got annoyed that my blog was a mish-mash of all kinds of posts, and no clear topic. The blog post <a href="https://blog.codinghorror.com/how-to-achieve-ultimate-blog-success-in-one-easy-step/">How To Achieve Ultimate Blog Success In One Easy Step</a> by Jeff Atwood (cofounder of Stack Overflow) suggested that if you want a successful blog: write regularly, for an extended period of time. I took this inspiration, registered the domain &#8220;<a href="http://pragmaticengineer.com">pragmaticengineer.com</a>&#8221; and started to write one post per week. I managed to do it for two months, before throwing in the towel.</p><blockquote><p>Note:  Jeff <a href="https://writethatblog.substack.com/p/jeff-atwood-on-technical-blogging">also shared his writing experiences here</a>.</p></blockquote><p>What got me back to this blog is one of my early articles got submitted to Hacker News, and got so much traffic that crashed my shared hosting. I realized &#8220;huh, something I wrote 5 months ago resonates with people and starts conversations?&#8221;</p><p>From there on, when I thought I learned something interesting (or observed something interesting) I blogged about it <a href="https://blog.pragmaticengineer.com/">on this blog</a>.</p><p></p><h4>What has been the most surprising impact of writing for you?</h4><p>A few things:</p><ul><li><p>Meeting people who think similarly as I do and becoming friends &#8211; purely thanks to writing. Charity Majors is one such example. Unbeknown to me, a person sent me and Charity the same question, and we both blogged about it independently. Our views came out&#8230; very similar (here&#8217;s <a href="https://charity.wtf/2020/07/07/questionable-advice-can-engineering-productivity-be-measured">Charity&#8217;s tak</a>e, and <a href="https://blog.pragmaticengineer.com/can-you-measure-developer-productivity/">my take</a> on measuring individual developer productivity.) And it&#8217;s how we started talking, and later met as well.</p></li><li><p>I learned more &#8211; whenever I wrote things down! I retain information better when I write about it. This was pretty surprising. I guess it makes sense: when writing about it, I think about it a lot more.<br></p></li></ul><h4>What article are you most proud of and why?</h4><p>Two stand out:</p><p><strong><a href="https://blog.pragmaticengineer.com/distributed-architecture-concepts-i-have-learned-while-building-payments-systems/">Distributed architecture concepts I learned while building a large payments system</a></strong>.<strong> </strong>This was the first article where I spent months <em>learning</em> about a topic (I felt pretty lost with distributed systems when I started working at Uber), then another ~1-2 months writing up what I learned, <em>hoping</em> that it would be useful for others.</p><p>And it was the first time ever that it felt worth it putting in all this time writing it all up: the response was phenomenal, and developers translated in Japanese and Russian as well, further spreading it (it was also the first-ever article I wrote where I got requests to translate it.)</p><p><strong><a href="https://blog.pragmaticengineer.com/software-engineering-salaries-in-the-netherlands-and-europe/">The Trimodal Nature of Software Engineering Salaries in the Netherlands and Europe</a></strong>. This one article helped hundreds of people get better jobs they were not aware of, and it was the catalyst to have at least a dozen companies I know of increase compensation bands by 10-25% a year after I published it.<br></p><h4>What article was the most difficult to write and how did you tackle it?</h4><p><a href="https://blog.pragmaticengineer.com/software-engineering-salaries-in-the-netherlands-and-europe/">The Trimodal Nature of Software Engineering Salaries in the Netherlands and Europe</a> &#8211; This was the first time ever I did a post with a lot of research. I wasn&#8217;t sure that I did research the &#8220;right&#8221; way, or that people would take it seriously when it came out.</p><p>Turns out when there&#8217;s zero information on a topic (in this case, Big Tech salaries in the likes of the Netherlands), some information is always better than none!</p><p></p><h4>Any lessons learned that you want to share with the community?</h4><p>It&#8217;s hard to publish the first few blog posts or articles: but it gets easier, over time. If and when you develop a habit, it happens a lot more automatically.</p><p>I have a simple system where I take notes when I get an idea about something I could write about. When I feel like writing, I go through these!</p><p></p><h4>Your advice for people just getting started with blogging?</h4><p>Counter-intuitive, but pay for a basic service where you write your blog on! Paying even $10/month reminds you that you <em>should</em> write something else that money you pay goes nowhere! Honestly, it&#8217;s hard to get into the habit of writing regularly, so some external &#8220;push&#8221; can help.</p><p>Also, consider that it feels like blogging is less popular these days: which is why it can be easier to stand out if you do start!</p><p></p><h4>A few blogs that you particularly enjoy?</h4><p><a href="https://simonwillison.net/">Simon Willison</a></p><p><a href="https://charitydotwtf.substack.com/">Charity Majors</a></p><p><a href="https://www.seangoedecke.com/">Sean Goedecke</a></p><blockquote><p>Note: <a href="https://writethatblog.substack.com/p/simon-willison-on-technical-blogging">Simon</a>, <a href="https://writethatblog.substack.com/p/charity-majors-on-technical-blogging">Charity</a>, and <a href="https://writethatblog.substack.com/p/sean-goedecke-on-technical-blogging">Sean</a> also shared their writing experiences here.</p></blockquote><h4><br>How has the importance of writing shifted since you published <a href="https://blog.pragmaticengineer.com/on-writing-well/">&#8220;Undervalued Software Engineering Skills: Writing Well&#8221; and &#8220;Becoming a Better Writer</a>&#8221;?</h4><p>With AI tools, I feel it should be easier to produce writing that looks good. You can also ask AI to edit your work, critique it, and so on.</p><p>I&#8217;m not sure I see that much more or better tech blogs though - which is strange!</p><p>One trend I notice is more longform writing is happening over newsletters (mostly Substack), and on social media (e.g. X articles.) I also see engineering leaders do more opinion pieces on some of these platforms than before.</p><p>Writing is still an underrated way to connect with people who either work on similar stuff as you are, or think similar to you do.</p><p></p><h4>You&#8217;ve pivoted from engineer to professional writer. What&#8217;s similar now and what has changed?</h4><p>What&#8217;s different is I now have strict deadlines to publish: twice a week, for my paying subscribers! Nothing is as motivating to finish an article like a deadline that cannot be moved! My writing cadence is up thanks to this self-imposed constraint.</p><p>I now write much less about my own experience (which was the only thing I wrote when I blogged, before The Pragmatic Engineer) and most of my pieces are based on research, interviews or analyzing events.</p><p>Personally, I greatly appreciate blogs where someone shares hard-earned experience (something they did over months, sometimes longer.) My nature of writing is that I often get people to talk to me about these, then I write them down to share.</p><p></p><h4>What&#8217;s your take on blog writing in Big Tech? Do you think the process is too prohibitive? Any insights into best practices or antipatterns?</h4><p>Personally, I stayed away from writing for my employer, because of how painful the process was. Also, every time I wrote on a company blog: within 3 years, it got removed/deleted.</p><p>I found it easier to write about my own learnings at the company, but omitting business-sensitive details. This is a much easier way to start.</p><p>Writing on the company eng blog can give good visibility to you externally, and doing it once can be educational. I would suggest you copy the blog and publish it on your own domain &#8211; expect that corporate can and will delete it in a few years&#8217; time!</p><p></p><h4>What are the best and worst aspects of running The Pragmatic Engineer?</h4><p>The best aspect is talking to far more people than I had access to when I worked fulltime as an engineer. Both in terms of time, but also getting responses from a lot more people.</p><p>An aspect that is surprisingly challenging is the pressure to publish both things that are timely, but also well-researched. Good research takes time: but by the time it is done, it can get out-of-date. What is timely &#8211; a trend, a technology or framework getting popular etc &#8211;  on the other hand is hard to go into meaningful details without putting in the time and work to research.</p><p>Having too many drafts in progress (researching) can get overwhelming as I feel some of them could get out-of-date by the time research is done. Working only on one timely topic at the same time can make me worry I won&#8217;t have any other topic researched in, say a week or two&#8217;s time.</p><p>Finally, &#8220;scaling&#8221; The Pragmatic Engineer is surprisingly difficult - and maybe this is why it is as popular as it is? People are surprised to learn that it&#8217;s just me working fulltime on it, and Elin part-time. That&#8217;s all we are! After four years, I&#8217;m now hiring one more tech industry analyst to help with research. </p><p>***</p><p><strong>Note: </strong>Gergely&#8217;s work is featured throughout <em><a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">Writing for Developers</a></em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Murat Demirbas on Technical Blogging]]></title><description><![CDATA[&#8220;While writing, I become smarter and more creative. One thought leads to another, one question opens a new investigation, and that leads to an insight.&#8221;]]></description><link>https://writethatblog.substack.com/p/murat-demirbas-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/murat-demirbas-on-technical-blogging</guid><pubDate>Tue, 03 Mar 2026 13:53:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fa345abc-1812-4828-aeb9-d40315609918_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you ask anyone in the distributed systems space what blogs they follow, the name <em>Murat Demirbas</em> is likely to come up. </p><p>Murat is currently principal research scientist at <a href="https://www.mongodb.com/company/research">MongoDB Research</a>, ex-principal applied scientist at AWS, and ex-professor at SUNY Buffalo. He&#8217;s known for systems research and algorithmic work across domains like cloud computing, distributed databases, distributed consensus, wireless sensor networks, fault-tolerance, formal methods, and self-stabilization. If you&#8217;ve worked with hybrid logical clocks or WPaxos, there&#8217;s a good chance you&#8217;ve encountered his contributions.</p><p>Murat blogs prolifically at <a href="https://muratbuffalo.blogspot.com/">https://muratbuffalo.blogspot.com/</a> (and also on a shiny new <a href="https://muratdemirbas.substack.com/">newsletter</a>). Although he writes mainly <a href="https://muratbuffalo.blogspot.com/2024/03/why-i-blog.html">for himself</a>, millions have discovered his blog and faithfully follow it for a steady dose of distributed systems insights. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Let&#8217;s learn a bit about Murat&#8217;s blogging experiences and advice&#8230;</p><h2>Why did you start blogging &#8211; and why do you continue?</h2><p>In 2010, when I was a professor, one of my colleagues in the department was teaching a cloud computing seminar. I wanted to enter that field coming from theory of distributed systems, and later wireless sensor networks fields. So I attended the seminar. As I read the papers, I started blogging about them. That is how I learn and retain concepts better, by writing about them. Writing things down helps crystalize ideas for me. It lets me understand papers more deeply and build on that understanding. <a href="https://muratbuffalo.blogspot.com/2010/09/mapreduce-simplified-data-processing-on.html">The post on MapReduce</a>, the first paper discussed in the seminar, seems to have opened the floodgates of my blogging streak, which has been going strong for 15 years.</p><p>I think a big influence on me has been <a href="https://muratbuffalo.blogspot.com/2014/09/revisiting-ewds.html">the EWD documents</a>. I remember the day I came across these as a PhD student. It felt like finding a treasure, a direct gateway into Dijkstra&#8217;s brain through his writings. <a href="https://muratbuffalo.blogspot.com/2014/09/revisiting-ewds.html">As I wrote in this post</a>, Dijkstra was the original hipster blogger. He was blogging before blogging was cool. <em>&#8220;For over four decades, he mailed copies of his consecutively numbered technical notes, trip reports, insightful observations, and pungent commentaries, known collectively as EWDs, to several dozen recipients in academia and industry.&#8221;</em> The EWDs go till 1318. I have a total of 799 posts in my blog as of today. I still have about nine more years to catch up with his sheer post count.</p><p>Why did I continue blogging? I continued because I like writing. While writing, I become smarter and more creative. One thought leads to another, one question opens a new investigation, and that leads to an insight. I even sound smart (if I may say so) when I read some of my old posts.</p><p>Writing is now a deeply ingrained habit. If I go without blogging for a week, I feel bad. It feels like my creativity got clogged. I am not going to compare myself to artists, but I do feel uneasy if I have not exercised my creativity for a while. My blog became a good vessel for creating and sharing ideas, so I can get them out of my system and make room for new ideas.</p><h2>What has been the most surprising impact of blogging for you?</h2><p>Around 2016-2017, I started running into people at conferences who followed my blog, and that surprised me. I had very few page views until then, and I never cared about page views. At first, I thought this was a fluke, but it kept happening more frequently. I was not expecting many people to read my blog because I write for myself first, and I had no expectations that others would read it. (I think this is the difference between intrinsic motivation versus extrinsic motivation. I get the reward while writing the post itself and learning through it. Of course, I am very grateful when people read these posts, and very happy when these turned out to be helpful.)</p><p>Related to this, I was surprised by how much developers enjoy reading and following my research paper reviews and summaries. Research papers are often not written to be accessible. They are written to satisfy three reviewers. And consequently, in some parts, the papers get overly defensive. In others, they become pompous and oversell to impress. Knowing how the sausage is made, I think I was able to interpret what was going on and cut to the main ideas and contributions better and translate them more clearly. There is still a large gap in translation and exposition, and I hope more people step in to fill it by blogging.</p><p>Another big surprise was how often I refer back to my own blog. Referring back to my posts lets me quickly cache the concepts again. Because I strained my brain while writing them in the first place, reading them later refires the same neurons and helps me reconstruct that state of understanding quickly. In that sense, my blog started acting as an external memory.</p><p>I also started pointing my PhD students, and later other people, to my blog. It is an easy and fairly reliable way to transfer knowledge because I package these advice posts neatly for consumption. <a href="https://muratbuffalo.blogspot.com/2020/06/research-writing-and-career-advice.html">Here is a snapshot from 2020</a>, and I have written <a href="https://muratbuffalo.blogspot.com/search/label/my%20advice">many more advice posts since then</a>.</p><p>I actually just realized that I already wrote about <a href="https://muratbuffalo.blogspot.com/2024/03/why-i-blog.html">why I blog</a>, and I can refer people to that post for more insight into my thought process.</p><h2>What blog post are you most proud of and why?</h2><p>It is hard to choose. I think I am proud of all of them, simply because I like having written them and put them out there for others to benefit.</p><p>I am particularly fond of<a href="https://muratbuffalo.blogspot.com/search/label/my%20advice"> my advice posts</a> about writing and research. They may sound a bit cheesy as I write them, and I sometimes feel a bit pompous giving advice. Still, <a href="https://muratbuffalo.blogspot.com/2024/07/advice-to-young.html">they do help people</a>. I occasionally get feedback about how a post meant a lot to someone, and that means a lot to me as well.</p><p>Some posts I like come out very easily, often within half an hour, and end up under <a href="https://muratbuffalo.blogspot.com/search/label/misc">the misc label</a>. I wrote a short reminiscence about my life after realizing I am getting old and failing to follow new trends. <a href="https://muratbuffalo.blogspot.com/2020/03/i-have-seen-things.html">That post</a> became very popular and reached 100K reads. I also wrote a quick post about <a href="https://muratbuffalo.blogspot.com/2025/02/my-time-at-mit.html">my time at MIT</a>, which got 40K reads. I wrote a short post about what my cat taught me about communication. <a href="https://muratbuffalo.blogspot.com/2022/01/clear-communication.html">That one</a> didn&#8217;t get many views, but I still think the world would be a better place if more people practiced what Pasha intrinsically knows.</p><p>On the technical side, it is again difficult to choose. It is futile to estimate the impact of a topic in advance, so I write about what I find interesting or what I am working on. Again, one quick post turned out to be especially impactful. <a href="https://muratbuffalo.blogspot.com/2018/03/anatomical-similarities-and-differences.html">This post</a> about anatomical similarities between Paxos and Bitcoin/Nakamoto consensus protocols became the seed for one of <a href="https://cse.buffalo.edu/~demirbas/publications/bridging.pdf">our research papers</a>. This was an example of <a href="https://muratbuffalo.blogspot.com/2018/05/book-review-accidental-genius-using.html">generative writing</a>. I began writing, and the connections became clearer as I went. The blog is a place where I am free to explore and play with wild ideas like this.</p><p>I am also proud of my <a href="https://muratbuffalo.blogspot.com/search/label/tla">TLA+ posts</a>. I think the examples I modeled have helped many people get started with TLA+ modeling.</p><h2>Your advice for people just getting started with blogging?</h2><p>I wrote about <a href="https://muratbuffalo.blogspot.com/2013/08/how-i-write.html">how I write</a> here. My approach is to mess up and tidy up later. I clearly separate drafting from editing.</p><p><a href="https://muratbuffalo.blogspot.com/2014/03/how-to-write-your-research-paper.html">In this other post</a>, I draw inspiration from a legend about a horse and an outlaw. I must be nuts! But the idea is not that crazy. Keep a file where you dump half-ideas and half-written text. Accumulate as much writing as possible as a braindump, and then edit them by organizing/wrangling the text around. When you have something you are happy with, put it out there and forget about it. Let go of expectations about <a href="https://muratbuffalo.blogspot.com/2020/07/the-great-work-of-your-life-by-stephen.html">the fruits of your labor.</a></p><p>Finally, <a href="https://muratbuffalo.blogspot.com/2025/10/the-invisible-curriculum-of-research.html">follow your curiosity</a>. No niche is too small. Write for yourself and trust that over time, people will find it. Entertain and serve yourself first. Writing itself should feel good. Try to get your dopamine hit from finishing a post and hitting publish. The more you write, the more you can write. Be intrinsically motivated. I am repeating myself, but it is worth repeating: do not hold expectations about people reading your work.</p><h2>Anything else you want to add?</h2><p>I am <a href="https://x.com/muratdemirbas">https://x.com/muratdemirbas</a> on twitter, and <a href="https://www.linkedin.com/in/murat-demirbas-distributolog-a2233b176/">https://www.linkedin.com/in/murat-demirbas-distributolog-a2233b176/</a> on LinkedIn. I also have a <a href="https://muratdemirbas.substack.com/">newsletter</a> now.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[writethat.blog Recap [February 2026]]]></title><description><![CDATA[Piotr&#8217;s picks for writethat.blog last month&#8230;]]></description><link>https://writethatblog.substack.com/p/writethatblog-recap-february-2026</link><guid isPermaLink="false">https://writethatblog.substack.com/p/writethatblog-recap-february-2026</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Mon, 02 Mar 2026 14:06:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/70047c2b-cc37-4e60-9b73-f41aa2c07344_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Piotr&#8217;s picks for writethat.blog last month&#8230;</p><h3><a href="https://iggy.apache.org/blogs/2026/02/27/thread-per-core-io_uring/">Apache Iggy&#8217;s migration journey to thread-per-core architecture powered by io_uring</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>February longest title award granted! It is quite to the point though. A good set of conclusions and results on how best to apply io_uring and CPU sharding to a large Rust project.</p><h3><a href="https://writethat.blog/fuss.html">Look ma, no FUSE!</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>(shameless self-promo, I enjoyed writing this one more than usual though)</p><h3><a href="https://yieldcode.blog/post/farewell-rust/">Farewell, Rust</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>False alarm, the language is still alive, and so is Rust Foundation. What ended is the author&#8217;s eagerness to use it for web development, with quite a few valid points.</p><h3><a href="https://antithesis.com/blog/2026/readyset/">Catching a caching bug at Readyset</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>Antithesis demonstrates a real scenario of debugging a bug in an SQL cache, through fuzzing, time travel, and exploring multiverses.</p><h3><a href="https://turbopuffer.com/blog/object-storage-queue">How to build a distributed queue in a single JSON file on object storage</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>Simplest idea wins. A fantastic crash course of how a single JSON file laying around somewhere in an S3 bucket can be a full-fledged distributed queue with optimistic locking on top.</p><h3><a href="https://wingolog.org/archives/2026/02/09/six-thoughts-on-generating-c">six thoughts on generating c</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>A neat package of six patterns to follow when generating C language snippets. The code snippets and practical references help a lot.</p><h3><a href="https://blog.comma.ai/datacenter/">Owning a $5M data center</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>comma.ai&#8217;s recipe for running your own datacenter the oldschool way. Tips and tricks on energy and cooling included.</p><h3><a href="https://hy.tencent.com/research/100025?langVersion=en">Learning from context is harder than we thought</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=benchmarks%20and%20test%20results">benchmarks and test results</a></p><p>An interesting approach to benchmarking large language models. Its main conclusion is that at the time of writing, best models still struggle with real-time learning from latest context -- something that humans tend to excel at.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writethat.blog/&quot;,&quot;text&quot;:&quot;Read more on writethat.blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writethat.blog/"><span>Read more on writethat.blog</span></a></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A00u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A00u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 424w, https://substackcdn.com/image/fetch/$s_!A00u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 848w, https://substackcdn.com/image/fetch/$s_!A00u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 1272w, https://substackcdn.com/image/fetch/$s_!A00u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A00u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png" width="807" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:807,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103620,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writethatblog.substack.com/i/189610716?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A00u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 424w, https://substackcdn.com/image/fetch/$s_!A00u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 848w, https://substackcdn.com/image/fetch/$s_!A00u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 1272w, https://substackcdn.com/image/fetch/$s_!A00u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb85483-c2e5-43fb-9e30-140814fe5e1d_807x977.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Gwen Shapira on Technical Blogging]]></title><description><![CDATA[&#8220;Blogging connected me to like-minded people, and through this network, I found work I loved. You could say that blogging created my whole career.&#8221;]]></description><link>https://writethatblog.substack.com/p/gwen-shapira-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/gwen-shapira-on-technical-blogging</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Wed, 18 Feb 2026 14:06:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b3f5db35-f10c-44c1-ab51-b2bc46524832_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Gwen Shapira brings a grounded pragmatism to everything she&#8217;s involved with. An engineer (and now <a href="https://www.thenile.dev/">Nile</a> co-founder) who&#8217;s often on the front line with users, she&#8217;s developed a direct yet empathetic communication style focused on helping others succeed.</p><p>For years, Gwen has been sharing that expertise as a prolific blogger, conference presenter, and co-author of the popular <a href="https://www.oreilly.com/pub/au/6026">O&#8217;Reilly Kafka guide</a>. If you&#8217;ve watched her talks or read her writing, you know to expect deep technical experience punctuated with memorable zingers &#8211; and perhaps a cat or two along the way. If not, you can <a href="https://github.com/gwenshap">catch up here</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here&#8217;s how Gwen responded to the questions we&#8217;ve been asking our <a href="https://writethatblog.substack.com/t/tech-blogger-insights">favorite tech bloggers</a>&#8230;</p><p><strong>Why did you start blogging &#8211; and why do you continue?</strong></p><p>I started blogging back in 2007. Almost 20 years ago! Blogging was new and exciting back then. &#8220;Web 2.0&#8221; started trending. The idea that the web isn&#8217;t like a newspaper where authors publish and readers read, but it can be more social and include comments, responses, reactions and interactions. The internet as a place to exchange ideas with smart people all over the world really appealed to me back then, and it is still something that I look for today.</p><p>There were people I admired and looked up to who were early bloggers. Tom Kyte (from Oracle&#8217;s AskTom fame), Jonathan Lewis and Cary Millsap come to mind. I read their blogs and found them entertaining and educational. Their example inspired me to start my own blog, and also influenced my own writing style to a large extent.</p><p>The last bit of motivation was provided by my job. At the time, I was kinda bored with my job and felt that my ideas went unheard. A blog was a great outlet for my ideas. And paradoxically, by forcing myself to blog daily, I had to find interesting things to write about. By actively diving deeper and looking for the interesting bits in my job, my day job became interesting again!</p><p></p><p><strong>What has been the most surprising impact of blogging for you?</strong></p><p>Today, the importance of building a personal brand and networking through social media is very well understood. But back when I started blogging, I couldn&#8217;t have predicted that every single job I&#8217;ll find will be through my blog.</p><p>Blogging connected me to like-minded people, and through this network, I found work I loved. You could say that blogging created my whole career.</p><p></p><p><strong>What blog post are you most proud of and why?</strong></p><p>This is the first blog post I ever published: <a href="https://prodlife.wordpress.com/2007/06/15/why-im-still-not-using-asm/%5D(https://prodlife.wordpress.com/2007/06/15/why-im-still-not-using-asm/)">https://prodlife.wordpress.com/2007/06/15/why-im-still-not-using-asm/</a></p><p>I&#8217;m proud of having published it. Even though, in retrospect, it is&#8230; less than great. But still, a few folks reacted to it and it encouraged me to keep publishing. I wrote almost every day back then. Soon, I found my voice and my style. I&#8217;m actually surprised by how quickly this happened.</p><p>My favorite types of posts are:</p><p>1. &#8220;how to&#8221; posts: Sometimes inspired by a tricky issue I encountered, by a new tool that I learned how to use, or just an excuse to dive into system internals.</p><p>Here&#8217;s my first post of this type: <a href="https://prodlife.wordpress.com/2007/07/06/how-high-can-you-go%5D(https://prodlife.wordpress.com/2007/07/06/how-high-can-you-go)">https://prodlife.wordpress.com/2007/07/06/how-high-can-you-go</a></p><p>And a recent one: <a href="https://www.thenile.dev/blog/drop-column%5D(https://www.thenile.dev/blog/drop-column)">https://www.thenile.dev/blog/drop-column</a></p><p>2. &#8221;someone is wrong (or right) on the internet&#8221; posts: I love interacting with other people&#8217;s ideas. Sometimes I agree with them and can share my own examples of how their ideas are helpful. Sometimes I disagree and share my opposing view with my anecdotes or data. Sometimes I argue with a general idea rather than an individual. I love writing &#8220;myth busting&#8221; posts for this reason.</p><p>Here&#8217;s an early example of this: <a href="https://prodlife.wordpress.com/2007/07/10/data-types-and-cost-based-optimization/">https://prodlife.wordpress.com/2007/07/10/data-types-and-cost-based-optimization/</a></p><p>And a recent one: <a href="https://www.thenile.dev/blog/pgvector_myth_debunking">https://www.thenile.dev/blog/pgvector_myth_debunking</a></p><p><strong>Your advice for people just getting started with blogging?</strong></p><p>This is a cliche by now, but the best advice I have is: Just write that blog (and publish it).  I haven&#8217;t regretted a single blog that I published (although I do find some embarrassing). I had blogs that I was scared to publish and clicked &#8220;post&#8221; anyway. I wrote things that turned out to be wrong, and smart people called me out on it. But in almost 20 years of blogging, nothing bad ever happened as a result of publishing a blog.</p><p>The other advice is to be thoughtful about how you connect with people online. The social media climate changed a lot since 2007. Back then, it was all nerds sharing ideas and helping each other. As a nerd myself, it was easy to see myself as part of this group and join the conversation. These days, social media is noisy and competitive. Joining the conversation doesn&#8217;t feel like joining a table with 20 friendly nerds. Instead, it feels like trying to be the most popular kid in a school with 10 billion students.</p><p>If your goals around blogging are like mine: Connect with like-minded people and form communities where we help each other out. You&#8217;ll want to be thoughtful about your own sensibilities and &#8220;vibes&#8221;. Social platforms like LinkedIn and X can help you &#8220;go big&#8221; but require an eye toward marketing and a thick skin. Substack and community Discords can be smaller and more supportive. Personally, I&#8217;m still looking for my own way to connect with like-minded people in 2026.</p><p><strong>A few blogs that you particularly enjoy?</strong></p><p>I&#8217;ve been following <a href="https://ardentperf.com">Jeremy Schneider</a> more-or-less since the day I started blogging, and his writing is still one of my favorites. It helps that we both moved from blogging about Oracle to blogging about Postgres!</p><p>I met <a href="https://www.morling.dev">Gunnar Morling</a> through the Kafka community, and I love that his blog ranges through many different technical topics from a software engineering perspective. His writing also tracked my own interests from Kafka and streams to Postgres. </p><p>I enjoy reading in-depth distributed systems topics. My favorites are <a href="https://muratbuffalo.blogspot.com">Murat Demirbas</a> and <a href="https://brooker.co.za/blog/">Marc Brooker</a>. Both mix theory and real-world experience in a way that I find both engaging and useful.</p><p><a href="https://simonwillison.net">Simon Willison</a> posts a lot. Possibly too much for me to keep up with. But he&#8217;s a great source of information about AI.</p><p><a href="https://benn.substack.com">Benn Stancil </a>writes about data analytics and has a unique writing style that I love. It also helps that he posts every Friday, like clockwork.</p><p><a href="https://netflixtechblog.com">Netflix</a> and <a href="https://blog.cloudflare.com">Cloudflare</a> are my favorite &#8220;company blogs&#8221; with in-depth technical content.</p><p>***</p><p><em>Note: <a href="https://writethatblog.substack.com/p/gunnar-morling-on-technical-blogging">Gunnar </a>and <a href="https://writethatblog.substack.com/p/simon-willison-on-technical-blogging">Simon</a> also responded to our questions. And Murat&#8217;s responses will be featured quite soon.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Robin Moffatt on Technical Blogging]]></title><description><![CDATA[&#8220;Writing is a great way to coalesce your thoughts and prove out whether you have fully understood something.&#8221;]]></description><link>https://writethatblog.substack.com/p/robin-moffatt-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/robin-moffatt-on-technical-blogging</guid><pubDate>Tue, 10 Feb 2026 14:13:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/839a66a9-05b7-4cd9-8c3a-129f5fc57164_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Fitting for a data streaming expert, <a href="https://rmoff.net/">Robin Moffatt</a> is both a producer and consumer of blog posts in this space. In addition to sharing his own take on &#8220;Data engineering, Kafka, and other nerdy stuff,&#8221; Robin ingests a steady stream of data-related blogs and publishes his favorites in monthly roundups of <a href="https://rmoff.net/categories/interesting-links/">Interesting Links</a> (also available as a <a href="https://interestinglinks.substack.com/">Substack</a>). </p><p>All that reading/writing leads to lots of blogging lessons learned &#8211; and those are nicely shared in the <a href="https://rmoff.net/categories/blogging/">blogging section of his blog</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here are Robin&#8217;s responses to our (now standard) tech bloggerly questions&#8230;</p><p></p><h2>Why did you start blogging &#8211; and why do you continue?</h2><p>I was new to the world of Oracle, and learning lots about the tools as I went. One of the things that frustrated me was that the documentation and support knowledge base would just stop at a certain point and you&#8217;d have to figure things out for yourself. I benefited from others sharing their knowledge through blogging, and wanted to do the same.</p><p>That was over 15 years ago, and I&#8217;ve never found it not useful to keep writing and sharing. Writing is a great way to coalesce one&#8217;s thoughts and prove out whether one has fully understood something.</p><p>This year I&#8217;ve enjoyed writing a monthly series called &#8220;<a href="https://rmoff.net/categories/interesting-links/">Interesting Links</a>&#8221; which has proved popular, and helped me stay abreast of developments in the data ecosystem. I&#8217;ve even experimented with <a href="https://interestinglinks.substack.com/">publishing it to Substack</a>!</p><h2>What has been the most surprising impact of blogging for you?</h2><p>I got a job at a consultancy firm as a direct result of my blog posts. That was a very nice surprise. Since then, my blog has definitely helped me in my career, but less surprisingly given that I made the move from data engineering into DevRel and hence blogging became one of my core skills that an employer might be interested in :)</p><h2>What blog post are you most proud of and why?</h2><p>Can I pick more than one? One technical, one personal.</p><p>I wrote <a href="https://rmoff.net/2018/08/02/kafka-listeners-explained/">a blog post about configuring an aspect of Apache Kafka, called &#8220;advertised listeners.&#8221;</a> It came up again and again in community spaces like Stack Overflow, and there was never a truly good answer (and lots of bad ones). I&#8217;m not a software engineer, so I sat down to understand it for myself by poking at it and reading what I could find, until I finally got my head around it. It took much longer than I&#8217;d expected, but the blog post was&#8212;and still is&#8212;really popular. I&#8217;ve had people IRL at conferences thanking me for it, which is nice.</p><p>The other blog post I&#8217;m particularly proud of is <a href="https://rmoff.net/2019/02/09/travelling-for-work-with-kids-at-home/">a personal one about the impact of travelling for work on your family</a>. It&#8217;s something that&#8217;s not always discussed widely, and I realised that if <em>I</em> was struggling with it, perhaps others were too, and sharing it might help. I wrote <a href="https://rmoff.net/2020/12/03/life-as-a-developer-advocate-nine-months-into-a-pandemic/">a couple</a> of follow-up<a href="https://rmoff.net/2022/04/07/hanging-up-my-boarding-passes-and-jetlagfor-now/"> posts</a> too. The responses I got to these posts were very positive. It&#8217;s one of the things I love about having my own blog&#8212;I can write what I like, about any subject.</p><h2>What post was the most difficult to write and how did you tackle it?</h2><p>Probably the personal ones that I describe above. They were difficult partly because I didn&#8217;t really know what I wanted to say&#8212;or indeed, what I necessarily felt&#8212;until I started writing it, as well as the natural inclination as an Englishman to view anything personal as something to keep to oneself and tightly bottled up&#8230;</p><h2>Any lessons learned that you want to share with the community?</h2><p>Yes, quite a few that I&#8217;ve shared in this <a href="https://rmoff.net/2023/07/19/blog-writing-for-developers/">blog post</a> and <a href="https://rmoff.net/talk/blog-writing-for-developers/">talk</a> ;) In short, just start writing! You don&#8217;t have to write &#8220;War and Peace,&#8221; nor do you have to write something that&#8217;s novel. Writing <em>your experience</em> of something is totally OK, even if someone else has already written it. Work out what your voice is, and nurture it. Oh, and for the love of everything holy: do NOT use AI to generate your writing. Using it to <em>help</em> (proofreading, bouncing ideas, etc) is totally a good idea. But generating it&#8230;hard no.</p><h2>Your advice for people just getting started with blogging?</h2><p>Use your own platform. Medium is a <a href="https://rmoff.net/2025/11/25/ai-smells-on-medium/">cesspit</a>. Any platform that&#8217;s not yours could shut down tomorrow, or decide to gate the content, or sell it to the highest bidding AI company for training LLMs. A static site generator like Hugo, hosted on GitHub Pages or Cloudflare, is completely free, and it&#8217;s your content forever.</p><h2>A few blogs that you particularly enjoy?</h2><p>This makes me nostalgic for blogrolls :)</p><p>I love the <a href="https://ludic.mataroa.blog/blog/i-will-fucking-piledrive-you-if-you-mention-ai-again/">biting yet eloquent snark</a> in the writing style of Nikhil Suresh, a.k.a. Lucidity.</p><p>It was probably <a href="https://rittmananalytics.com/blog/2025/12/08/an_homage_to_oracle_warehouse_builder_25_years_ahead_of_its_time">Mark Rittman&#8217;s writing</a> that inspired me to start writing, and I&#8217;ve always enjoyed his easy way of describing how to use a technology.</p><p><a href="https://jack-vanlightly.com/">Jack Vanlightly</a> writes in a way that is mind-blowingly detailed yet clear, and always makes me feel stupid trying to understand it (in a good way).</p><p>Two blogs about the non-technical side of work that I really enjoy are <a href="https://randsinrepose.com/archives/shields-down/">Rands in Repose</a> and <a href="https://www.modernleader.is/p/invisible-gun">Kelly Vaughn</a>.</p><p>I use RSS to follow blogs, and have a curated list that I maintain through Inoreader, and <a href="https://rmoff.net/2024/05/22/how-i-try-to-keep-up-with-the-data-tech-world-a-list-of-data-blogs/#_companies_using_data">share the feeds for these here</a>.</p><h2>Anything else you want to add?</h2><p>Thank you for asking me; I&#8217;m honoured to be in such venerable company as those already on your site :)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[writethat.blog Recap [January 2026]]]></title><description><![CDATA[Piotr&#8217;s picks for writethat.blog last month&#8230;]]></description><link>https://writethatblog.substack.com/p/writethatblog-recap-january-2026</link><guid isPermaLink="false">https://writethatblog.substack.com/p/writethatblog-recap-january-2026</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Tue, 03 Feb 2026 14:13:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0e31da27-40cd-49c5-9eeb-f90ca718622a_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Piotr&#8217;s picks for writethat.blog last month&#8230;</p><h3><a href="https://rokn.io/posts/building-movie-recommendation-agent">Building a movie recommendation agent</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>Actually practical walkthrough on building an actually helpful agent (specifically two of them, so an &#8220;agent orchestrator,&#8221; but not of the unhinged gas town quality). Easy to follow and get inspired to build one for your own use case.</p><h3><a href="https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/">Why does SSH send 100 packets per keystroke?</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=benchmarks%20and%20test%20results">benchmarks and test results</a></p><p>A machine-enhanced investigation on throughput and latency issues in an SSH game. Quite educational on SSH protocol quirks.</p><h3><a href="https://pgdog.dev/blog/replace-protobuf-with-rust">Replacing Protobuf with Rust to go 5 times faster</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=we%20rewrote%20it%20in%20X">we rewrote it in X</a></p><p>A story on rewriting serialization routines to Rust, while keeping the protobuf interface intact. Bonus: interesting take on recursive algorithms and their interaction with CPU caches (the L1/L2/... kind).</p><h3><a href="https://alexharri.com/blog/ascii-rendering">ASCII characters are not pixels: a deep dive into ASCII rendering</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>A must-read. The author decided to spend a fair amount of time creating a comprehensive tutorial on rendering 3D graphics with ASCII characters. With visuals, code snippets, and all. Go read it and find out that ASCII rendering is a branch of science in its own right.</p><h3><a href="https://fly.io/blog/design-and-implementation/">The design &amp; implementation of sprites</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>The article describes a quite novel approach to disposable computers, which is a term lately coined by fly.io. Like sandboxes, but with custom containers replaced with persistence and speed.</p><h3><a href="https://planetscale.com/blog/database-transactions">Database transactions</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>Practical and interactive summary of what database transactions are. Comes with a complimentary rundown on isolation levels.</p><h3><a href="https://antirez.com/news/158">Don&#8217;t fall into the anti-AI hype</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>A nice counterweight to all the, well, anti-AI hype.</p><h3><a href="https://lcamtuf.substack.com/p/see-it-with-your-lying-ears">See it with your lying ears</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>Extremely educational piece on audio editing, including a 20-line implementation of fast Fourier transform and lots of audio+video samples. Also includes neat tricks on how to make the output more feasible when na&#239;ve approaches subtly fail.</p><h3><a href="https://mitchellh.com/writing/ghostty-memory-leak-fix">Finding and fixing Ghostty&#8217;s largest memory Leak</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=bug%20hunt">bug hunt</a></p><p>An investigation of memory leaks in the world&#8217;s most hyped terminal emulator&#8217;s scrolling implementation. Includes practical debugging techniques like ARM memory tags (TIL).</p><h3><a href="https://www.cs.cmu.edu/~pavlo/blog/2026/01/2025-databases-retrospective.html">Databases in 2025: A year in review</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>Everything you need to know about the state of databases in 2025. Delivered in a uniquely entertaining way.</p><h3><a href="https://devblogs.microsoft.com/oldnewthing/20260101-00/?p=111955">Swapping two blocks of memory that reside inside a larger block, in constant memory</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>The title kind of says it all.</p><h3><a href="https://rybicki.io/blog/2026/01/01/mutexes-from-scratch-in-go.html">Writing mutexes from scratch in Go</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Another hands-on tutorial on implementing a mutex, through spinlocks, process schedulers, and finally the grand idea of futex. Very nice summary, and the part with using Go explicit coroutine scheduling is a nice touch.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writethat.blog/&quot;,&quot;text&quot;:&quot;Read more on writethat.blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writethat.blog/"><span>Read more on writethat.blog</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t5p5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t5p5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 424w, https://substackcdn.com/image/fetch/$s_!t5p5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 848w, https://substackcdn.com/image/fetch/$s_!t5p5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 1272w, https://substackcdn.com/image/fetch/$s_!t5p5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t5p5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png" width="947" height="992" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:992,&quot;width&quot;:947,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132586,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writethatblog.substack.com/i/185601777?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t5p5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 424w, https://substackcdn.com/image/fetch/$s_!t5p5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 848w, https://substackcdn.com/image/fetch/$s_!t5p5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 1272w, https://substackcdn.com/image/fetch/$s_!t5p5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0245483-7e59-46ca-868d-13e3ee8c789e_947x992.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Sean Goedecke on Technical Blogging]]></title><description><![CDATA[&#8220;I thought I'd run out of ideas, but the more I write, the more ideas I have.&#8221;]]></description><link>https://writethatblog.substack.com/p/sean-goedecke-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/sean-goedecke-on-technical-blogging</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Tue, 27 Jan 2026 14:06:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f77620b5-a6e9-47d8-b8a0-019210bbbd08_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sean Goedecke emerged as one of the most prominent tech bloggers about a year ago. But he&#8217;s been writing for many years, and he&#8217;s certainly not aiming to fan the legendary Hacker News flames.</p><p>Sean writes with a philosophical precision that makes you feel like you&#8217;re crawling into his mind for a little bit. His first real &#8220;hit&#8221; was a late 2024 post on how he thinks about shipping software at large companies. From there, things escalated fast. In 2025, he <a href="https://www.seangoedecke.com/2025-wrapup/">published 141 posts, 33 of which hit the top of HN</a>. His posts at <a href="https://www.seangoedecke.com/">https://www.seangoedecke.com/</a> cover topics from AI in software development, to what it&#8217;s like being an Aussie in an American company, to where your engineering salary comes from.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>So how did he get here? And what lessons has he learned? Over to Sean.</p><p><strong>Why did you start blogging &#8211; and why do you continue?</strong></p><p>I&#8217;ve been blogging forever, in one form or another. I had a deeply embarrassing LiveJournal back in the day, and several abortive blogspot blogs about various things. It was an occasional hobby until <a href="https://www.seangoedecke.com/how-to-ship/">this post of mine</a> really took off in November 2024. When I realised there was an audience for my opinions on tech, I went from writing a post every few months to writing a post every few days - turns out I had a lot to say, once I started saying it!</p><p>The biggest thing that keeps me writing is getting emails and comments from readers. I like it all: positive feedback, people sharing their own experiences, people who disagree and want to argue. We all get such a narrow picture of what it&#8217;s like from our own jobs. It&#8217;s so cool to open up the aperture and hear from hundreds of other people who&#8217;ve had different experiences.</p><p><strong>What has been the most surprising impact of blogging for you?</strong></p><p>I thought I&#8217;d run out of ideas, but the more I write, the more ideas I have. If I don&#8217;t write for a few weeks, I feel like I&#8217;ve got nothing to say, but as soon as I get a post out, I immediately want to write five more. No idea why!</p><p><strong>What blog post are you most proud of and why?</strong></p><p><em><a href="https://www.seangoedecke.com/water-impact-of-ai/">Talking to ChatGPT costs 5ml of water, not 500ml</a>. </em>It&#8217;s not the deepest post I ever wrote, but I&#8217;m happy that I was able to trace through the chain of references for the &#8220;every ChatGPT query costs a bottle of water&#8221; claim to find the actual source (which of course didn&#8217;t support the claim). This post gets a constant stream of Google traffic and is frequently linked in Reddit or Twitter arguments about AI water usage. There&#8217;s a lot of people now who have looked into AI water usage in depth, but in October 2024 it was basically unquestioned that language models used ridiculous amounts of water. I&#8217;m proud to have been one of the first voices poking holes in that claim.</p><p><strong>What post was the most difficult to write and how did you tackle it?</strong></p><p><em><a href="https://www.seangoedecke.com/good-system-design/">Everything I know about good system design</a>. </em>I was really worried that it would come off as just a boring summary of some vaguely systems-related topics. I rewrote it a bunch to try and bring out my overall point: that system design is about combining a relatively small &#8220;toolbox&#8221; of generic components. It was also a challenge to decide how many details to include. I wanted to be concise, but I also knew that people would gleefully point out any edge cases I missed. I&#8217;m really happy with how it turned out - and I&#8217;ve gotten a lot of positive feedback - but I think I spent more time editing this post than any other post I&#8217;ve written.</p><p><strong>Any lessons learned that you want to share with the community?</strong></p><p>If any of your posts become popular, people are going to be really, really mean about you on the internet. I&#8217;ve had Hacker News and Reddit commenters calling me a sociopath, saying that I&#8217;m the kind of engineer who ruins companies, that it must be awful to work on the same team as me, and so on. You just have to develop a thick skin about it. I have a hard rule for myself that I don&#8217;t engage with the comments on aggregator sites at all. I&#8217;d much rather interact with people over email, where we can talk a bit more thoughtfully and nobody&#8217;s &#8220;playing for the crowd.&#8221;</p><p>As a matter of practical advice, I&#8217;d also suggest setting up a RSS feed before you think you might need one. It&#8217;s very easy to do, and if one of your posts does blow up, you&#8217;ll be very glad you did it beforehand instead of a day afterwards. I didn&#8217;t do this and probably missed out on a few hundred subscribers because of it.</p><p><strong>Your advice for people just getting started with blogging?</strong></p><p>Try and use it as a tool for figuring out what you really think about things. It&#8217;s fine to write several posts about the same topic, even if it feels like you&#8217;re repeating yourself. I like to have each post make a single point (and ideally to express that point in the title), but if you prefer a more meandering style, go for it!</p><p>I strongly suggest not using AI to make edits to your posts, or to generate content directly. The AI &#8220;voice&#8221; is really easy to detect, and can turn readers off your blog forever. Worse, AI edits tend to tone down the most interesting and controversial aspects of your writing.</p><p><strong>A few blogs that you particularly enjoy?</strong></p><p>First, let me shout out my fellow Melbourne tech bloggers <a href="https://ludic.mataroa.blog/">Ludicity</a> and <a href="http://thundergolfer.com/">thundergolfer.com</a> (who wrote by far the best <a href="https://thundergolfer.com/blog/aws-us-east-1-outage-oct20">report</a> on AWS&#8217;s recent outage).</p><p>Like everyone with a passing interest in AI, I&#8217;ve also been loving Simon Willison&#8217;s <a href="https://simonwillison.net/">blog</a>. And he hasn&#8217;t posted much in a while, but Dan Luu&#8217;s <a href="https://danluu.com/">blog</a> is excellent and was a big inspiration for my personal style.</p><p>Finally, this isn&#8217;t about programming, but <a href="https://acoup.blog/">A Collection of Unmitigated Pedantry</a> is the only blog where I stop what I&#8217;m doing to read new posts as they come out.</p><p><strong>Anything else you want to add?</strong></p><p>If you&#8217;re working in tech, I would strongly recommend <em>not trying to monetize your blog</em>. I know it sounds like a good side hustle, but in my view the long-term career benefits of having a popular blog massively outweigh any short-term gains you might get from sticking ads on your site or introducing paid-only posts. It&#8217;s also just nicer to put all your posts out there for free, like how blogs worked on the old internet before social networks.</p><div id="youtube2-jaK2VxJxVQE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;jaK2VxJxVQE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/jaK2VxJxVQE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em>See Sean&#8217;s blog for some <a href="https://www.seangoedecke.com/tags/writing/">great reading on writing</a>. Also, watch/listen to this podcast for more writing tips. </em></p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Simon Willison on Technical Blogging]]></title><description><![CDATA["It turns out having an established blog gives you a surprising amount of influence in a field"]]></description><link>https://writethatblog.substack.com/p/simon-willison-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/simon-willison-on-technical-blogging</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Thu, 15 Jan 2026 14:08:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/83bed475-814f-4648-835b-a0344e8f0ef8_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>New year, new round of <a href="https://writethatblog.substack.com/t/tech-blogger-insights">tech blogger interviews</a>. Let&#8217;s kick it off with Simon Willison: co-creator of <a href="https://www.djangoproject.com/">Django</a> and creator of <a href="https://datasette.io/">Datasette</a>. Over the course of two decades, Simon has built a remarkable body of work at <a href="http://simonwillison.net">simonwillison.net</a>. His blog ranges from rigorous long-form analyses to pithy link commentaries and lots in between. He&#8217;s particularly well-known for offering a pragmatic &#8211; and independent &#8211; take on AI in software development.</p><p>In past posts, we&#8217;ve shared the mantra &#8220;<a href="https://livebook.manning.com/book/writing-for-developers/front-matter">You&#8217;re not writing enough</a>&#8221; (Bryan Cantrill quoting Pat Helland quoting Jim Gray). Simon, who <a href="https://simonwillison.net/2025/Jan/2/ending-a-year-long-posting-streak/">blogged every day for an entire year</a>, sets a high bar for what&#8217;s possible here.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Over to Simon&#8230;</p><p><strong>Why did you start blogging &#8211; and why do you continue?</strong></p><p>I started my first blog before I knew it was called a &#8220;blog&#8221; - I was an enthusiastic online gamer back in 1999, and I ran a competitive league for Team Fortress Classic clans. I decided to build a &#8220;news site&#8221; about the game using NewsPro, a freeware (not Open Source) Perl script. You can still see it <a href="https://web.archive.org/web/20000818051112/http://www.tfc-central.co.uk/index.shtml">in the Internet Archive</a>!</p><p>I started my personal blog a few years later at university in 2002. I was continuing to learn web development and found a huge amount of value in the small cadre of existing blogs about that topic, so I decided to join in.</p><p>My previous online activity had been tied to my gamer handle, Skunk. I called my blog &#8220;Simon Willison&#8217;s Weblog&#8221; because I wanted to deliberately start attaching my real name to my writing. This felt quite subversive back in 2002 when most online activity was still pseudonymous!</p><p>My blogging back when I started was an extension of my all-consuming message forum habit. I realized that forums were centered around specific interests, but often you find someone who is an interesting writer and who you want to hear from about a wider range of topics.</p><p>It also felt like blogging gave me a direct connection to some of the top experts in the world of web development that I was just getting started in, and the idea that they might link back to me was intoxicating.</p><p>That was all a long time ago. I took a break from blogging while I was running a startup (and then recovering from that), from around 2010 to 2017. In 2017 I started up again, because I realized that I really missed having a corner of the internet that was all my own.</p><p>Then the AI thing started to happen towards the end of 2022 and I found myself as one of the few remaining long-form bloggers who was following that space closely. It turns out having an established blog gives you a surprising amount of influence in a field, so I&#8217;ve been leaning into it. The effect is the same as it was for  web development back in the early 2000s: I get to meet all sorts of interesting people and learn more effectively thanks to those connections, plus writing and thinking with an audience in mind.</p><p></p><p><strong>What has been the most surprising impact of blogging for you?</strong></p><p>It&#8217;s hard to overstate how many opportunities come out of having a well constructed, long term blogging presence.</p><p>Most of the jobs I&#8217;ve had in my career can be attributed at least partially to my blog. I&#8217;ve also been invited to speak at conferences, I&#8217;ve had freelancing and consulting opportunities, and most importantly there are a whole lot of people out there with a basic awareness of who I am and what I&#8217;m interested in, which can turn into a great conversation any time in the future.</p><p>I&#8217;m a big believer in the idea of making your own luck - setting things up that increase the chances of a lucky scenario landing on you. Having a blog is a wildly effective way of doing that.</p><p>One other significant benefit that&#8217;s worth highlighting: blogging is a fantastic way to get better at writing. It&#8217;s a free venue for writing for a potential audience as often as you like. Even if nobody reads it you&#8217;re still incentivized to think carefully about your words and how you use them, and any conversations about your work will be certain to help you do better next time.</p><p>Writing is thinking. Having a blog helps you practice how to think.</p><p></p><p><strong>What blog post are you most proud of and why?</strong></p><p>That&#8217;s a really hard one - I&#8217;ve published 3,251 long-form and 9,607 short-form posts to my site over the years!</p><p>I&#8217;m going to cheat and pick several:</p><p><a href="https://simonwillison.net/2025/Mar/11/using-llms-for-code/">Here&#8217;s how I use LLMs to help me write code</a> from March 2025 is the most comprehensive piece I&#8217;ve written about AI-assisted programming. Most of it still holds up today, though I need to produce an updated version that explores how far into the Claude Code hole I&#8217;ve fallen over the past few months.</p><p><a href="https://simonwillison.net/2022/Nov/26/productivity/">Coping strategies for the serial project hoarder</a> is an example of a format I really like - an annotated presentation. Every time I give a talk at a conference I later write that up on my blog as slides and very detailed notes, on the basis that a lot of people won&#8217;t sit through a video but they may well skim or even read the blog version.</p><p>This particular talk is from DjangoCon 2022 and describes how I use large-scale software engineering practices like issue trackers and documentation and automated tests to improve my productivity on my smaller personal projects as well.</p><p><a href="https://simonwillison.net/2025/Dec/31/the-year-in-llms/">2025: The year in LLMs</a> is my 2025 LLM wrap-up. I did one <a href="https://simonwillison.net/2024/Dec/31/llms-in-2024/">for 2024</a> and <a href="https://simonwillison.net/2023/Dec/31/ai-in-2023/">for 2023</a> as well. These are a lot of work but I&#8217;m really pleased with them. I think I do a solid job of capturing the key trends over the previous twelve months of wild development in the space.</p><p></p><p><strong>What post was the most difficult to write and how did you tackle it?</strong></p><p>The hardest posts to write are the ones where I&#8217;m trying to make a convincing argument, especially on a potentially controversial topic.</p><p>A good (well, bad) example of that is <a href="https://simonwillison.net/2024/Jan/7/call-it-ai/">It&#8217;s OK to call it Artificial Intelligence</a> from January 2024. I used a clumsy strawman and ended up <a href="https://simonwillison.net/2024/Jan/9/what-i-should-have-said-about-ai/">having to apologize</a> for how poorly I argued my point.</p><p>I&#8217;ve grown a pretty thick skin over the years though, especially now that I&#8217;m frequently writing about a topic which invites extremely sharp opinions from multiple sides.</p><p></p><p><strong>Any lessons learned that you want to share with the community?</strong></p><p>My number one tip for blogging is to lower your standards! Aim to hit publish while you are still actively unhappy with what you have written, because the only alternative is a huge folder full of drafts and never publishing anything at all.</p><p>Nobody will ever know how perfect the thing you <em>intended</em> to write would have been. The flaws you see in your writing are invisible to everyone else.</p><p></p><p><strong>Your advice for people just getting started with blogging?</strong></p><p>Just start. It&#8217;s so easy to get caught in the trap of obsessing over the design of your blog, and planning for content that you never actually get around to writing. As long as each entry has a date on it and a permanent URL, it counts as a blog. I think adding an Atom or RSS feed is important too, but you can get started without one - don&#8217;t treat that as a blocker.</p><p>Don&#8217;t worry if nobody reads it. People are unlikely to stumble on your blog organically, but what matters is not the quantity but the quality of your readers. If the only person who reads your blog is a hiring manager that you send a link to, and that gets you an interview, your blog has already paid itself off many times over.</p><p>I wrote <a href="https://simonwillison.net/2022/Nov/6/what-to-blog-about/">What to blog about</a> describing types of content that are both low friction and high value: TILs (Today I Learned) and writing about your projects, neither of which have any expectations of shining new insights never seen before on the web. I also really enjoy link blogging, and wrote about that in <a href="https://simonwillison.net/2024/Dec/22/link-blog/">My approach to running a link blog</a>. Posting to a link blog often takes just 15 minutes and is a great way to bring short-form writing to your blog.</p><p>Set up an email list as soon as you realize that your blog is going to be an ongoing thing. Way more people want to subscribe via email than via RSS readers. I didn&#8217;t realize this until 20 years into my blogging journey and I&#8217;ve been kicking myself for not getting email subscribers sooner than that! I use Substack and literally <a href="https://simonwillison.net/2025/Nov/19/how-i-automate-my-substack-newsletter/">copy and paste my blog into it</a>, which keeps my cost of sending email at zero.</p><p></p><p><strong>A few blogs that you particularly enjoy?</strong></p><p><a href="https://interconnected.org/home/">Interconnected by Matt Webb</a> presents a delightfully eclectic mix of interests.</p><p><a href="https://daringfireball.net/">Daring Fireball</a> has been one of my key blogging inspirations for 20+ years.</p><p><a href="https://www.dbreunig.com/writing.html">Drew Breunig</a> is a recent addition to my feed reader who always feeds me something new to think about.</p><p><a href="https://fly.io/blog/">The Fly Blog</a> remains my favourite example of a company technical blog, with a very distinct voice and a constant stream of high signal articles.</p><p></p><p><strong>Anything else you want to add?</strong></p><p>Use AI thoughtfully. Look for opportunities where AI helps you produce something better than if you had gone without it.</p><p>I don&#8217;t like letting LLMs write for me, but I also have 20+ years of writing experience to lean on. I still use them to assist my writing: as a thesaurus, as a proofreader and occasionally to check that the argument I&#8217;m making does not have any embarrassing holes.</p><p>Sophisticated readers can sniff out LLM-generated text, which inevitably hurts your credibility with them. I value my credibility above all else, so I will avoid anything that is likely to hurt that.</p><p>***</p><p><em>Note: Simon has shared insights on practically every aspect of writing and publishing. Read<a href="https://simonwillison.net/tags/blogging/"> more on his blog</a>.</em></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Technical blogging lessons learned]]></title><description><![CDATA[Expert tech bloggers share their top tips for others]]></description><link>https://writethatblog.substack.com/p/technical-blogging-lessons-learned</link><guid isPermaLink="false">https://writethatblog.substack.com/p/technical-blogging-lessons-learned</guid><pubDate>Thu, 08 Jan 2026 14:23:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d6d107f2-c535-4e87-b7c8-662434398b15_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We interviewed a dozen(ish) expert tech bloggers over the past year to share perspectives and tips beyond <em><strong><a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">Writing for Developers</a></strong></em>. In this final 2025 remix post, let&#8217;s look at how everyone answered the question &#8220;<strong>Any lessons learned that you want to share with the community?</strong>&#8221;</p><p>Note: 1) You can <a href="https://writethatblog.substack.com/t/tech-blogger-insights">read all the past interviews here</a>. 2) We&#8217;ll kick off a new round of interviews next week, starting with <a href="https://simonwillison.net/">Simon Willison</a>. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><a href="https://writethatblog.substack.com/p/thorsten-ball-on-technical-blogging">Thorsten Ball</a> </h2><p>What has helped me the most:</p><ul><li><p>Setting time limits. I started <a href="https://registerspill.thorstenball.com/">Register Spill</a> with the idea of using 60min every Sunday to write. Whatever gets written in those 60min gets published. It helped me get over a lot of &#8220;but...&#8221; in my head.</p></li><li><p>Fixed schedule. I never wrote on a fixed schedule and started Register Spill partly in order to see whether I could. Now I know three things. (1) I can, (2) it can be stressful, (3) it helps to get stuff out.</p></li><li><p>Keeping drafts on my phone helps. I use Apple Notes and whenever I have an idea for a post, I jot it down, ignoring all spelling, punctuation, and so on. Then, over the course of a day, multiple days, weeks, I keep tweaking that note. On my phone, or on my computer. (I tweaked <em>this very Q&amp;A</em> on my phone for multiple days before now sitting down, in front of my computer, to finish it).</p><p></p></li></ul><h2><a href="https://writethatblog.substack.com/p/tanel-poder-on-technical-blogging">Tanel Poder</a></h2><p>One unexpected thing I learned is that it&#8217;s not worth distracting yourself from your target audience (which hopefully includes you), even if your planned next post might end up popular. Example: Some years ago, there was a Gmail web UI update and your email reply composing boxes were sized very small. This was not good for techies who sent wide command line tool outputs and code samples in their emails.</p><p>So I found a trick for expanding the Gmail reply compose box to full screen that&#8217;d be suitable for technical content and blogged about it &#8211; hoping that it&#8217;d be useful for a much wider audience. Indeed, it did reach a wider audience, but the end result was that my blog&#8217;s comments section ended up full of general email, Windows or printer troubleshooting questions from all over the Internet. I took that post down later on.</p><p>Also, blog commenting is pretty much in social media now, so you might want to add backlinks to your social media posts about your latest blog to the end of the article. I&#8217;ve been too lazy to do this myself though.</p><p>And last, I&#8217;m happy about my move to static hosting from a managed &#8220;CMS&#8221; system. The product details don&#8217;t really matter, but I moved from Wordpress to Hugo static hosting, where all my blog entries are stored in a GitHub repo. I feel better when treating my blog writings and updates as just code, stored in a repository and rendered to the public-facing HTMLs when needed. Your static page load times will be much better too, especially when a post of yours gets popular.</p><p></p><h2><a href="https://writethatblog.substack.com/p/sam-rose-on-technical-blogging">Sam Rose</a></h2><p>Yeah, a few things.</p><ol><li><p>I wish I&#8217;d found my &#8220;thing&#8221; earlier. Making use of visuals, interactivity, and vibrant colours to explain boring or scary topics is something I could have been doing years before I started. Take time to think about your own experiences and ambitions. How could you combine 2-3 things you know well, or would happily spend time getting better at, to create something novel and valuable?</p></li><li><p>Listen to all feedback, but be picky about what you act upon. Every one of my post-2023 blog posts has received contradictory feedback. You aren&#8217;t going to please everyone, and you shouldn&#8217;t try. Work on knowing what&#8217;s important to <em>you</em>, and what <em>you</em> want from your work. How do you want people to view you? What do you want people to take from your work?</p></li><li><p>Don&#8217;t let the numbers suck the joy out of it. Don&#8217;t let the tail wag the dog. Don&#8217;t write something just because you want to ride the current hype wave, or because you want to hit the best SEO phrases. Do it because you want to.</p></li></ol><p>To elaborate on the 2nd point, I&#8217;ll give you some examples of what&#8217;s important to me.</p><ul><li><p>I want my work to be visually beautiful. I want people to say &#8220;oh, wow&#8221; when they open it. This is why I use vibrant colours and have developed my own visual style.</p></li><li><p>I want my work to be accessible. I put effort into getting better at accessibility with every post. I know I&#8217;m not where I want to be with this yet, but it is important to me to keep improving.</p></li><li><p>I want my work to help people understand things they didn&#8217;t think they could. This is why my work tends to be introductions to topics.</p><p><br></p></li></ul><h2><a href="https://writethatblog.substack.com/p/phil-eaton-on-technical-blogging">Phil Eaton</a></h2><p>So many lessons, so many suggestions, because I hear so many different reasons people have for not writing or writing but not completing and publishing. However, to summarize it all I would stress that when you speak humbly and in good faith, the internet is incredibly helpful and forgiving, whether you&#8217;re an expert or not. So the stakes are just so low and the potential benefits to yourself and others are so great.</p><p>And in terms of what to write about, I think you should 1) write about whatever you feel like writing because the first big challenge is your own motivation and 2) focus on <a href="https://notes.eatonphil.com/2024-06-14-confusion-is-a-muse.html">what is confusing to you</a>!</p><p>Lastly, writing blog posts doesn&#8217;t need to be a public thing! It&#8217;s immensely useful to you and your team if you publish internal blog posts that the public will never see. If you can publish publicly, that is nice for you and the company. But don&#8217;t be under the impression that if your company is particularly secretive, you can&#8217;t participate in all the value blogging brings.</p><p></p><h2><a href="https://writethatblog.substack.com/p/preston-thorpe-on-technical-blogging">Preston Thorpe</a></h2><p>You will never please everyone, and the people who are going to overly criticize and critique everything you do are going to do so, no matter what. Focus on the people who appreciate your work and the positive impact you can have, rather than trying to appease every single critic out there.</p><p>That being said, with technical content especially, still make sure to be extra thorough when making claims or explaining concepts because someone will call you out on it every time if you get anything wrong.</p><p>Also, you will always continue to learn, and blogs are a good metric to go back and look at in a year&#8217;s time. You can reflect on how much you have learned since. I know I have gone back to old technical posts and had a good laugh at how naive I was at the time. This is another reason to write, even if you don&#8217;t feel like you are reaching any particular audience.</p><p></p><h2><a href="https://writethatblog.substack.com/p/matt-butcher-on-technical-blogging">Matt Butcher</a></h2><p>We all have different approaches to writing. For me, I have moments where words just seem to flow out of me. In one particularly striking example, I once wrote nine 500-word blog posts in two days, each about a different topic. I published those posts over a three-month period.</p><p>At other times, I&#8217;ve experienced the opposite. I was so blocked this summer that for three months I couldn&#8217;t get past writing the title or opening sentence of a post. I got nothing done. It was a complete dry spell.</p><p>Writing is a creative act. When I&#8217;m feeling creative, I can easily write a blog post or even two or three or (that one time) nine! When that energy is low, though, writing might be difficult or even impossible.</p><p>But what got me out of my dry spell was undertaking activities that got me back into a creative mode. That involved some sketching, some long walks, and (yes) some downtime spent playing my favorite video game (Stardew Valley), which is itself a creative exercise. Somewhere along the line, I found myself getting new ideas or feeling a renewed interest in those blog posts I had started and then put aside.</p><p></p><h2><a href="https://writethatblog.substack.com/p/jeff-atwood-on-technical-blogging">Jeff Atwood</a></h2><p>Just write. Make a habit of writing. It&#8217;s like exercise. It&#8217;s like anything else&#8230;mental health. What are the fundamentals of mental health? Are you eating? Are you sleeping? Are you exercising? Are you having sane interactions with friends and family? These are the fundamentals. And I would add another fundamental to that: Are you writing? Are you formulating a story of why the things that are happening to you are happening to you, and what you can do about that, and what it means? That&#8217;s an important part of the formula.</p><p>A lot of stuff just randomly happens. But a lot of stuff happens because we chose our own adventure, we chose a certain path, we made a choice. And if you write about that &#8211; I made this choice, and it was a good choice, or it was a bad choice, and I learned all these things &#8211; you&#8217;re not just helping yourself, you&#8217;re helping so many other people behind you.</p><p>So write regularly, pick a writing schedule that you can live with, and <a href="https://blog.codinghorror.com/geek-diet-and-exercise-programs/">treat it like an exercise regimen</a>. Your blog posts don&#8217;t all have to be perfect. Don&#8217;t worry; don&#8217;t think, &#8220;Oh, I can&#8217;t write because it&#8217;s embarrassing or it&#8217;ll be bad.&#8221; Everybody&#8217;s bad at some level. But you know how you get better? By doing it regularly &#8211; not necessarily every day, but on a schedule. That&#8217;s how you get better at stuff. That&#8217;s how you practice and learn &#8211; by doing something regularly, ideally, with feedback.</p><p>It&#8217;s a lot like my advice to people who are single. How are you going to get into a relationship if you don&#8217;t leave the house (before Tinder, at least)? Step one, leave the house. Go to places where other people are present and meet people. Applying that here, just pick some form of writing that works for you, and do it. But I will say, please go beyond chat. Chat is more of an ideation tool. I&#8217;m a true believer in writing. Writing is so core. Pick a writing schedule and stick to it.</p><p></p><h2><a href="https://writethatblog.substack.com/p/gunnar-morling-on-technical-blogging">Gunnar Morling</a></h2><p>A common question I see is &#8220;What should I write about?&#8221; Or, &#8220;Everything has been said already, what should I add?&#8221; While it&#8217;s true that there&#8217;s a lot out there already, I think there&#8217;s always value in sharing your own personal perspective on things. Nobody will look at a certain topic or question with exactly your background, experience, and context, so there will be a unique angle to that.</p><p>There&#8217;s a huge demand for entry-level content on all kinds of technologies, so just sharing your own experiences, for instance from learning about a new language, library, or tool, will be useful for the next person in a similar situation. In fact, you might actually be better able to relate to that perspective of other beginners than a person highly experienced with the subject matter!</p><p>And don&#8217;t forget that you are your own reader too. I can&#8217;t count how many times I went back to a blog post I wrote some time ago to read up on some details I had forgotten since then.</p><p></p><h2><a href="https://writethatblog.substack.com/p/glauber-costa-on-technical-blogging">Glauber Costa</a></h2><p>Even to this day, I am 100% unable to predict which blogs will do well and which blogs will not. Don&#8217;t spend too much time trying to figure out whether something is going to work. You will never know. If you have an idea, just write it!</p><p>For instance, take <a href="https://www.scylladb.com/2020/05/05/how-io_uring-and-ebpf-will-revolutionize-programming-in-linux/">the post I wrote on io_uring</a> in 2020. I was actually very reluctant to write that one. ScyllaDB&#8217;s CEO [Dor Laor] really pressured me to get some results and share them in a blog, but my initial response was &#8220;Why? Nobody really cares about this.&#8221; It turns out, that was my best performing article ever. It was a Hacker News hit and it still gets a steady stream of traffic.</p><p>Honestly, I see no correlation between what I think will do well and what actually does well &#8211; and vice versa. So just write&#8230; and some of them will eventually do well.</p><p></p><h2><a href="https://writethatblog.substack.com/p/fasterthanlime-on-technical-blogging">fasterthanlime</a></h2><p>Building your own blogging software is totally fine actually. I&#8217;ve been doing it for five years and it&#8217;s pretty decent by now. Of course it helps that maybe a third of my content is actually about how I built my own blogging software.</p><p>All kidding aside, mhhh: when people tell you to write about things you&#8217;re passionate about, it&#8217;s not <em>just</em> wishful thinking &#8220;if you build it they will come&#8221; type of stuff. It&#8217;s also that if you build something you really hate (but you think is going to be successful), and they <em>do</em> come, then you&#8217;re stuck maintaining that. It&#8217;s like how in dating there&#8217;s a fine line between projecting a positive image, but also being authentic, to avoid having to keep up a charade if they actually fall for you.</p><p>So it&#8217;s not like, &#8220;following your heart magically makes for a successful business,&#8221; it&#8217;s more like &#8220;the chances it works are slim anyways, might as well do it some way you enjoy.&#8221;</p><p></p><h2><a href="https://writethatblog.substack.com/p/eric-lippert-on-technical-blogging">Eric Lippert</a></h2><p>So many! But let me just pick one. If your blog is successful, it will attract criticism, and that&#8217;s a mixed bag. Criticism that genuinely points out ways your post could be more clear, or more accurate, or more complete, or whatever, is gold &#8211; even if it is delivered tactlessly. Don&#8217;t pass up an opportunity to make improvements or admit it when you&#8217;re wrong.</p><p>Criticism that is ad hominem, or spammy, or factually wrong, or abusive, you&#8217;re allowed to delete that! <a href="https://www.joelonsoftware.com/">Joel Spolsky</a> once said something like &#8220;Deleting rude comments isn&#8217;t censorship any more than cleaning up other people&#8217;s garbage off your lawn is censorship.&#8221; If someone wants to write their own blog on their own server about how terrible your posts are, that&#8217;s their business. You don&#8217;t need to provide a site to showcase other people&#8217;s low-quality comments.</p><p></p><h2><a href="https://writethatblog.substack.com/p/charity-majors-on-technical-blogging">Charity Majors</a></h2><p>It&#8217;s impossible to predict what is going to resonate with folks, let alone &#8220;go viral,&#8221; so please don&#8217;t try. Not only is it impossible, but you can smell it when people are trying too hard, and it&#8217;s unbelievably offputting. Pull on the threads of whatever is deeply interesting to you, and try to put something out there regularly. If it&#8217;s interesting to you, it&#8217;s going to be interesting to someone else.</p><p></p><h2><a href="https://writethatblog.substack.com/p/antirez-on-technical-blogging">antirez</a></h2><p>Try to write posts that are both information-dense AND entertaining. Refuse the magazine-style layout, with posts starting like &#8220;When in 1955 Mary Smith started to work at XYZ, she could never have thought that ABC was so 123.&#8221; Blogging must be the other possibility of writing, a more honest one.</p><p></p><h2><a href="https://writethatblog.substack.com/p/aaron-francis-on-technical-blogging">Aaron Francis</a></h2><p>The most important thing is that you press publish. It&#8217;s better to publish 12 blog posts a year than spend a year fretting over a single post. You&#8217;ll get better as you go and you&#8217;ll get better as you publish.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[writethat.blog Recap [December 2025]]]></title><description><![CDATA[Piotr&#8217;s picks for writethat.blog last month&#8230;]]></description><link>https://writethatblog.substack.com/p/writethatblog-recap-december-2025</link><guid isPermaLink="false">https://writethatblog.substack.com/p/writethatblog-recap-december-2025</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Tue, 06 Jan 2026 14:18:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ad772135-2d3c-4a5d-b366-8fd758a8445d_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Piotr&#8217;s picks for writethat.blog last month&#8230;</p><h3><a href="https://www.seangoedecke.com/a-little-bit-cynical/">Software engineers should be a little bit cynical</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>An ideal cynical essay on why cynical approach is an ideal counterweight to idealism.</p><p></p><h3><a href="https://samwho.dev/2025">2025</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Succinct title award for 2025 (in both senses). A blog post on writing blog posts!</p><p></p><h3><a href="https://kemble.net/blog/provoke/">Writing a blatant Telegram clone using Qt, QML and Rust. And C++.</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>A story of writing a Telegram clone, including tiniest details like properly sizing rows of emojis. Impressive meticulousness, as well as the end result!</p><p></p><h3><a href="https://oxide.computer/blog/cosmo-sp">A disappearing Service Processor</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=bug%20hunt">bug hunt</a></p><p>It&#8217;s a bug hunt post with FPGA mentioned at least 7 times. No more recommendation needed.</p><p></p><h3><a href="https://questdb.com/blog/async-profiler-kernel-bug/">How a kernel bug froze my machine: debugging an async-profiler deadlock</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=bug%20hunt">bug hunt</a></p><p>December is rife with low-level bug hunts, what a perfect Christmas gift for everyone! This time, it&#8217;s a Linux kernel issue plus a nice stuntman trick of reviving a deadlocked kernel with gdb.</p><p></p><h3><a href="https://matklad.github.io/2025/12/09/do-not-optimize-away.html">Do not optimize away</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>An interesting take on using the blackbox trick for microbenchmarks, or actually not using it.</p><p></p><h3><a href="https://martin.kleppmann.com/2025/12/08/ai-formal-verification.html">Prediction: AI will make formal verification go mainstream</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>A prediction that hopefully comes true. Since almost everyone adores TLA+, and yet almost nobody is capable of writing a single correct line of it, perhaps we really need to offload formal verification to AI.</p><p></p><h3><a href="https://bcantrill.dtrace.org/2025/12/05/your-intellectual-fly-is-open/">Your intellectual fly is open</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>A much needed call to stop posting LLM-generated content everywhere, because it shows. AI is great for many things, but not that. Have confidence in your own writing!</p><p></p><h3><a href="https://lightpanda.io/blog/posts/why-we-built-lightpanda-in-zig">Why we built Lightpanda in Zig</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>List of reasons for picking Zig over other system languages to build a browser for agents. Quite a standard collection of Zig&#8217;s advantages, accompanied by nice short code snippets.</p><p></p><h3><a href="https://sunshowers.io/posts/on-poisoning/">In defense of lock poisoning in Rust</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>An educational essay on the advantages of poisoning. In this particular case the poison is used in a homeopathy-style therapy, to prevent more serious issues from happening.<br></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writethat.blog/&quot;,&quot;text&quot;:&quot;Read more on writethat.blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writethat.blog/"><span>Read more on writethat.blog</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HQCD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HQCD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 424w, https://substackcdn.com/image/fetch/$s_!HQCD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 848w, https://substackcdn.com/image/fetch/$s_!HQCD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 1272w, https://substackcdn.com/image/fetch/$s_!HQCD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HQCD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png" width="881" height="991" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dcfe578-61db-4194-b881-eb5230d20051_881x991.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:991,&quot;width&quot;:881,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:106874,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writethatblog.substack.com/i/183623759?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HQCD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 424w, https://substackcdn.com/image/fetch/$s_!HQCD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 848w, https://substackcdn.com/image/fetch/$s_!HQCD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 1272w, https://substackcdn.com/image/fetch/$s_!HQCD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dcfe578-61db-4194-b881-eb5230d20051_881x991.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Advice for new tech bloggers]]></title><description><![CDATA[Expert tech bloggers share their tips for writers who are just getting started]]></description><link>https://writethatblog.substack.com/p/advice-for-new-tech-bloggers</link><guid isPermaLink="false">https://writethatblog.substack.com/p/advice-for-new-tech-bloggers</guid><pubDate>Tue, 30 Dec 2025 14:08:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/40bd89ce-95d6-4b23-8b95-8ab583ed4081_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We interviewed a dozen(ish) expert tech bloggers over the past year to share perspectives and tips beyond <em><strong><a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">Writing for Developers</a></strong></em>. The idea: ask everyone the same set of questions and hopefully see an interesting range of responses emerge. They did.</p><p>You can <a href="https://writethatblog.substack.com/t/tech-blogger-insights">read all the interviews here</a>. We&#8217;ll continue the interview series (and maybe publish some book spinoff posts too). But first, we want to pause and compare how the first cohort of interviewees responded to specific questions.</p><p>Here&#8217;s how everyone answered the question &#8220;<strong>Your advice for people just getting started with blogging?</strong>&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2><a href="https://writethatblog.substack.com/p/preston-thorpe-on-technical-blogging">Preston Thorpe</a></h2><p>It&#8217;s often intimidating to start writing. At first, you will definitely feel like you are writing to no audience. But writing about a specific project you&#8217;re working on, or problem you encountered, with a topic you are particularly passionate about &#8212; those always tend to be the most enjoyable for others. Even if your posts don&#8217;t get a bunch of viral attention, we have all been hunting for unique information and came across someone&#8217;s super helpful blog posts about the exact niche subject... Those types of blogs are equally as great and useful as ones which end up getting on the front page of HN.</p><p></p><h2><a href="https://writethatblog.substack.com/p/sam-rose-on-technical-blogging">Sam Rose</a></h2><p>In the beginning, don&#8217;t think about it too hard. Get something written, on a regular basis, to start developing those muscles. There is a very good chance nobody will read it to begin with, but that&#8217;s fine. Write for yourself.</p><p>When you&#8217;re feeling more confident in your writing, start asking for feedback. Friends are a good start but they can be a double-edged sword. They love you, they want to encourage you, they are less likely to say you&#8217;ve made something that sucks. Reach out to writers more established than yourself, writing about similar things, and ask nicely if they&#8217;d give you feedback. You&#8217;d be surprised how many are happy to do this.</p><p>After a few pieces with feedback from other writers, you might start to notice you have your own style of writing. If you can&#8217;t see it, dedicate some time to reading other tech writers. Study every word. How do they make use of punctuation, sentences, paragraphs? Is their tone formal or casual? Do they have any favourite words or phrases? Do they write as themselves or have they created a character? Your own style will become more clear as you start to pay attention to the styles of others.</p><p>You&#8217;ll then have a decision to make: lean into your style, or change it. If you read my older posts (e.g. anything pre-2013) and my newer ones (2018 onwards) you will notice the style has changed a lot. I did this because sprinkling smileys and pop culture references into my posts wasn&#8217;t helping the reader learn, and was quite frankly a bit cringe.</p><p>My writing today is more&#8230; clinical. I remove all words not pulling their weight, I avoid all jargon, and I try to stick to short sentence lengths. It can be constricting, and a bit less fun, but I think it makes for a better end result.</p><p></p><h2><a href="https://writethatblog.substack.com/p/tanel-poder-on-technical-blogging">Tanel Poder</a></h2><p><strong>Getting started:</strong> When writing your first blog entries, document <em>your</em> story. I mean the technical sequence of your actions. How <em>you</em> did something when addressing a real situation, even if there are plenty of similar articles out there. Such personal documentation will be useful as a future reference for yourself (speaking from experience), and sometimes for others too. Unless your goal is to become a random influencer with the most followers, but no substance, do not use AI to write <em>your</em> content.</p><p><strong>Medium term:</strong> Start adding context of <em>why </em>you chose to do something like you did, given your circumstances and requirements. This is not just &#8220;rehashing documentation&#8221; that the AI chatbots these days can do very well. The &#8220;why&#8221; of tradeoffs is a deeper level of understanding that shows both your expertise in the field and helps others understand it better as well.</p><p><strong>Long term:</strong> Address something <em>unique</em>. A problem that you fixed that didn&#8217;t have well-known solutions documented before. Or if you found yourself doing repetitive work and ended up semi-automating it with a simple tool or even just a one-liner script, that&#8217;s unique enough to publish!</p><p></p><h2><a href="https://writethatblog.substack.com/p/gunnar-morling-on-technical-blogging">Gunnar Morling</a></h2><p>First, as mentioned <a href="https://writethatblog.substack.com/p/gunnar-morling-on-technical-blogging">before</a>, don&#8217;t be afraid of writing about things that might seem not interesting or novel enough. If there&#8217;s something which you found interesting, chances are somebody else will find it interesting, too.</p><p>Then, and that might be a bit controversial, I&#8217;d recommend starting on your own domain from the get go, rather than on a shared place like medium.com. While it can be a bit more hassle to set that up initially, it will help you a lot to build your own, independent brand, and it just creates a more professional perception. It also means you are in control of things, nobody can change how your posts can be accessed, etc. As far as tooling is concerned, I&#8217;m a big proponent of static site generators (I am using <a href="https://gohugo.io/">Hugo</a> for my own blog, published via GitHub Pages). They give me the biggest freedom in terms of layout and formatting and I like the workflow of writing blog posts in source formats such as AsciiDoc and storing them in git. But then, others prefer tools like WordPress with a more WYSIWYG-like experience, so you should try out what suits you best.</p><p>Lastly, be patient. Blogging is a long game, you shouldn&#8217;t be depressed when not getting too many readers or comments initially. It takes years to build up an audience, and on the way there, it can sometimes feel a bit like shouting into the void. It&#8217;s about building up a corpus of interesting posts over a longer period of time. Success will come eventually, and later on it can be very rewarding to see how posts from years ago are still regularly receiving comments or are referenced from other places.</p><p></p><h2><a href="https://writethatblog.substack.com/p/charity-majors-on-technical-blogging">Charity Majors</a></h2><p>The advice I will give is the advice I find nearly impossible to take: Keep it short, keep it snappy. Edit twice as much as you write. Short, pithy posts tend to be more memorable, get wider traction, and stick in people&#8217;s minds more; they&#8217;re also faster and easier to ship. Do NOT write 5000-8000 word monstrosities, like I seem to be unable to keep doing (sigh).</p><p>I have a sticky note next to my monitor that reminds me of this, and one of these days, I swear I&#8217;m going to try taking my own advice!</p><p>Also: I find Twitter or Bluesky threads to be an incredibly effective form of drafting blog posts. It slows you down just enough that you have to think about how to make your point with some pith and punch. It prevents you from being too wordy. I like to go for a walk and draft a thread while I&#8217;m getting from point A to point B.</p><p></p><h2><a href="https://writethatblog.substack.com/p/eric-lippert-on-technical-blogging">Eric Lippert</a></h2><p>People getting started often have many complementary goals: practicing their writing skills, educating users, building an audience and a personal brand. Something that helps with all of these things is frequency. When I started, I was doing many relatively short posts a week. Keeping the cadence high for the first couple years really helped me practice my short-form writing and build an audience. Don&#8217;t obsess over wordsmithing the perfect article. Get it out, and you&#8217;ll improve as you go.</p><p></p><h2><a href="https://writethatblog.substack.com/p/aaron-francis-on-technical-blogging">Aaron Francis</a></h2><p>If you publish your posts, then you get to count that as a success. The finish line is pressing publish. It doesn&#8217;t matter if it bombs or it does super well. Your job is to publish it. That&#8217;s when you get to say, &#8220;I did a good job.&#8221;</p><p>Of course, you can learn from feedback. You can learn from the ones that did well, and you can learn from the ones that did poorly. But internally, I think you need to reframe the finish line as putting it out into the world, not putting it out into the world <em>and</em> having it be a success.</p><p></p><h2><a href="https://writethatblog.substack.com/p/fasterthanlime-on-technical-blogging">fasterthanlime</a></h2><p>I&#8217;ve read &#8220;write what you wish you could read&#8221; a bunch as advice and I think I generally agree with it? It can be hard to get that initial set of eyes to look at your stuff, so maybe try finding a community, a group of people who can give you legitimate feedback. It&#8217;s going to be hard to find people who are willing to give honest feedback (less so in Europe), but it&#8217;s important.</p><p>Me, I&#8217;m my own worst critic, but I keep having to remind myself that blog articles are not like software projects. I&#8217;m not going to have to keep maintaining articles forever &#8212; I spend a finite amount of time on them, do my best, and if I feel like revisiting the topic later, I can do that! Obsessing forever has an opportunity cost: while you&#8217;re trying to perfect that one piece, there are so many others you&#8217;re not writing. It can be hard to find a balance: setting deadlines for yourself helps &#8212; sometimes.</p><p></p><h2><a href="https://writethatblog.substack.com/p/phil-eaton-on-technical-blogging">Phil Eaton</a></h2><p>So many lessons, so many suggestions, because I hear so many different reasons people have for not writing or writing but not completing and publishing. However, to summarize it all I would stress that when you speak humbly and in good faith, the internet is incredibly helpful and forgiving, whether you&#8217;re an expert or not. So the stakes are just so low and the potential benefits to yourself and others are so great.</p><p>And in terms of what to write about, I think you should 1) write about whatever you feel like writing because the first big challenge is your own motivation and 2) focus on <a href="https://notes.eatonphil.com/2024-06-14-confusion-is-a-muse.html">what is confusing to you</a>!</p><p>Lastly, writing blog posts doesn&#8217;t need to be a public thing! It&#8217;s immensely useful to you and your team if you publish internal blog posts that the public will never see. If you can publish publicly, that is nice for you and the company. But don&#8217;t be under the impression that if your company is particularly secretive, you can&#8217;t participate in all the value blogging brings.</p><p></p><h2><a href="https://writethatblog.substack.com/p/glauber-costa-on-technical-blogging">Glauber Costa</a></h2><p>Number one, just do it! But also, keep it short and to the point, focusing on just one thing.</p><p>Sometimes your team might try to pressure you into including all sorts of interesting details that are related to that topic. I never liked this approach, and my blogs became a lot more successful when I stopped trying to squeeze in details that weren&#8217;t critical to what I was trying to convey.</p><p>It&#8217;s natural for you to want to tell the whole story, but having a clear focus is important for keeping the reader interested. If you dump everything into the blog post, readers won&#8217;t discover the highlights. Nobody cares about you. Really! People have very little time. Just cover the key points, and know that people will seek you out &#8211; maybe engage on social media &#8211; if they want more details.</p><p>So, keep it short, keep it simple, keep it to the point. Find one thing that&#8217;s going to be memorable, and focus the article on that. The rest doesn&#8217;t matter. Resist the temptation to write everything that&#8217;s on your mind.</p><p></p><h2><a href="https://writethatblog.substack.com/p/matt-butcher-on-technical-blogging">Matt Butcher</a></h2><p>Use the blog as a log for what you are learning. Early on, I wrote about <code>sed </code>because that&#8217;s what I was learning. Not too long ago, I wrote a post <a href="https://dev.to/fermyon/it-took-me-20-years-to-learn-this-lesson-about-dev-1mep">summarizing what I have learned about software dev</a>. While it may seem less evident, that, too, was an account of something I had learned about myself. For twenty years, I&#8217;ve been &#8220;learning in public.&#8221; And for all that time, I&#8217;ve been steadily reading other people&#8217;s blogs as they do the same. I think that&#8217;s the most helpful view of blogging both as a reader and as a writer: Blogging is a unique way of sharing knowledge &#8220;in real time&#8221; as we learn.</p><p></p><h2><a href="https://writethatblog.substack.com/p/thorsten-ball-on-technical-blogging">Thorsten Ball</a> </h2><p>Anything goes. You can make your blog your own thing. Every post has a single paragraph? Go for it. Every post is super long and you only publish every two months? Sweet, do it.</p><p>Don&#8217;t worry about &#8220;someone else already wrote about it&#8221;. The Internet&#8217;s a big place and not every bit of writing resonates with everyone. Think of it like this: how many different explanations on the same topic did you have to read until it &#8220;clicked&#8221;? Depending on the topic, it can be a lot. Because every teacher, every writer &#8212; they all have different lives, different point of views, different ways of thinking about things, different metaphors they use, different phrases. And some of it resonates with some people but not with others. You can be another unique combination of experience and point of view and skill and put something out there that resonates with someone.</p><p>Send it. Don&#8217;t be a perfectionist.</p><p>Write about things you know. Don&#8217;t pretend to be someone you&#8217;re not. It&#8217;s bad writing and people can sniff it out.</p><p>Cool it with the memes and AI-generated images.</p><p></p><h2><a href="https://writethatblog.substack.com/p/jeff-atwood-on-technical-blogging">Jeff Atwood</a></h2><p>Just write. Make a habit of writing. It&#8217;s like exercise. It&#8217;s like anything else&#8230;mental health. What are the fundamentals of mental health? Are you eating? Are you sleeping? Are you exercising? Are you having sane interactions with friends and family? These are the fundamentals. And I would add another fundamental to that: Are you writing? Are you formulating a story of why the things that are happening to you are happening to you, and what you can do about that, and what it means? That&#8217;s an important part of the formula.</p><p>A lot of stuff just randomly happens. But a lot of stuff happens because we chose our own adventure, we chose a certain path, we made a choice. And if you write about that &#8211; I made this choice, and it was a good choice, or it was a bad choice, and I learned all these things &#8211; you&#8217;re not just helping yourself, you&#8217;re helping so many other people behind you.</p><p>So write regularly, pick a writing schedule that you can live with, and <a href="https://blog.codinghorror.com/geek-diet-and-exercise-programs/">treat it like an exercise regimen</a>. Your blog posts don&#8217;t all have to be perfect. Don&#8217;t worry; don&#8217;t think, &#8220;Oh, I can&#8217;t write because it&#8217;s embarrassing or it&#8217;ll be bad.&#8221; Everybody&#8217;s bad at some level. But you know how you get better? By doing it regularly &#8211; not necessarily every day, but on a schedule. That&#8217;s how you get better at stuff. That&#8217;s how you practice and learn &#8211; by doing something regularly, ideally, with feedback.</p><p>It&#8217;s a lot like my advice to people who are single. How are you going to get into a relationship if you don&#8217;t leave the house (before Tinder, at least)? Step one, leave the house. Go to places where other people are present and meet people. Applying that here, just pick some form of writing that works for you, and do it. But I will say, please go beyond chat. Chat is more of an ideation tool. I&#8217;m a true believer in writing. Writing is so core. Pick a writing schedule and stick to it.</p><p></p><h2><a href="https://writethatblog.substack.com/p/antirez-on-technical-blogging">antirez</a></h2><p>Don&#8217;t lose too much time in setting up the perfect blog environment. Just write about things that in a given moment you care about. Don&#8217;t force yourself to find topics.</p><h2></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[The impact of technical blogging]]></title><description><![CDATA[Expert tech bloggers share unexpected impacts of writing in public]]></description><link>https://writethatblog.substack.com/p/the-impact-of-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/the-impact-of-technical-blogging</guid><pubDate>Thu, 18 Dec 2025 13:47:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/10dcb134-1b17-454c-8581-fc41f6edd82c_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We interviewed a dozen(ish) expert tech bloggers over the past year to share perspectives and tips beyond <em><strong><a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">Writing for Developers</a></strong></em>. The idea: ask everyone the same set of questions and hopefully see an interesting range of responses emerge. They did.</p><p>You can <a href="https://writethatblog.substack.com/t/tech-blogger-insights">read all the interviews here</a>. We&#8217;ll continue the interview series (and maybe publish some book spinoff posts too) in 2026. But first, we want to pause and compare how the first cohort of interviewees responded to specific questions.</p><p>Here&#8217;s how everyone answered the question &#8220;<strong>What has been the most surprising impact of blogging?</strong>&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2><a href="https://writethatblog.substack.com/p/antirez-on-technical-blogging">antirez</a></h2><p>That it is a fundamental carrier for software projects. You can&#8217;t have a successful project most of the time without communicating it. Sometimes it happens that developers who don&#8217;t communicate do things that are so important that other folks will communicate them, and the projects will still be successful. But in general, I believe that communicating, for developers, is a key asset for their projects, startups, whatever, to have any chance to become popular.</p><p></p><h2><a href="https://writethatblog.substack.com/p/thorsten-ball-on-technical-blogging">Thorsten Ball</a> </h2><p>The biggest surprise is probably that, over the years, readers have sent me very personal, very thoughtful emails about how a certain bit of writing has influenced and, believe it or not, helped them.</p><p>I mean, sure, yes, when you write and put something on the Internet, you hope that it resonates with someone and chances are &#8212; the internet is big &#8212; that it will: someone somewhere might think like you on this topic. But, still, it&#8217;s a surprise when you receive an email in which someone tells you how you influenced them and possibly changed the trajectory of their career, because they rethought their work after reading something you put out.</p><p></p><h2><a href="https://writethatblog.substack.com/p/matt-butcher-on-technical-blogging">Matt Butcher</a></h2><p>One day I was trying to write a regular expression. I knew there was a trick to it, but couldn&#8217;t remember what that trick was. So I googled it. Lo and behold, the first hit was a blog post I had written many years before that answered my question. I learned an invaluable lesson from that experience.</p><p>We like to think of ourselves as always progressing, always getting better. But we discount how quickly we forget things. In the past, I had already solved the problem that was plaguing me. That day, I started to view blogging as teaching &#8220;future me&#8221; about what &#8220;present me&#8221; was learning. And that change rippled through my view of writing and even of coding. Yes, I was maturing as a person and as a developer. I was learning, but also forgetting. Writing was a way of being able to capture my learnings externally so that I didn&#8217;t need to rely on my memory.</p><p></p><h2><a href="https://writethatblog.substack.com/p/glauber-costa-on-technical-blogging">Glauber Costa</a></h2><p>It&#8217;s been quite surprising to see how well a blog post can reach people who might be interested in using your product. Don&#8217;t assume that you need a fancy marketing website. Especially if your audience is developers, what people really want is the pure technical opinions and information. Just capturing that in blogs generates a very large and healthy &#8220;inbound funnel&#8221; of interest for your product.</p><p></p><h2><a href="https://writethatblog.substack.com/p/phil-eaton-on-technical-blogging">Phil Eaton</a></h2><p>I was a bit shocked to see two of my posts cited in research papers. One post cited was my survey about <a href="https://notes.eatonphil.com/parser-generators-vs-handwritten-parsers-survey-2021.html">parsing techniques in programming languages</a> and the other post cited was a post I wrote about <a href="https://notes.eatonphil.com/whats-the-big-deal-about-key-value-databases.html">how databases build on top of key-value databases</a>.</p><p>When you write about what&#8217;s weird or interesting to you, you might end up being one of the few people who have ever written about the topic. Mostly, I think, because relatively few people write at all!</p><p>Getting featured in a <a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">book about writing for developers</a> was also pretty surprising. :)</p><p></p><h2><a href="https://writethatblog.substack.com/p/fasterthanlime-on-technical-blogging">fasterthanlime</a></h2><p>I certainly didn&#8217;t expect my blog posts to be used for internal training at various big companies, but I guess it makes sense! That one&#8217;s a little bittersweet because, okay, I get name recognition, but that&#8217;s a form of payment my landlord doesn&#8217;t allow.</p><p>Another that&#8217;s more heartwarming is: I&#8217;ve been speaking up about my own mental health journey a bunch in articles and videos, and occasionally at conferences people approach me and thank me for talking about it, because it compelled them to seek help. That I&#8217;m extremely happy about, and it motivates me to keep talking about depression, medication, etc. &#8212; even though it makes me a little less employable each time :)</p><p></p><h2><a href="https://writethatblog.substack.com/p/aaron-francis-on-technical-blogging">Aaron Francis</a></h2><p>I got an email just the other day about one of the blogs that I wrote. The email said that I had changed this person&#8217;s life from one of the posts that I wrote. The post was called &#8220;<a href="https://aaronfrancis.com/2024/what-if-you-tried-hard-dac139a5">What if you try hard</a>?&#8221; and it was basically a call for people to go above and beyond and do more than just the minimum.</p><p>This person said that they took that advice to heart and started submitting conference talks and doing open source work &#8211; and then, because of that, landed a dream job that they never thought possible. That was probably the most impactful thing that I&#8217;ve ever heard from any of my work.</p><p></p><h2><a href="https://writethatblog.substack.com/p/eric-lippert-on-technical-blogging">Eric Lippert</a></h2><p>Every now and then I&#8217;ll get an email from a reader who says that they finally grasped a tricky concept after reading one of my articles on it, or that they were inspired to try a new thing, learn a new language, start a new project. It makes it all worth it to know that you&#8217;re connecting with people and helping them solve their problems. I was surprised by how common that was.</p><p></p><h2><a href="https://writethatblog.substack.com/p/charity-majors-on-technical-blogging">Charity Majors</a></h2><p>Writing forces you to hold your beliefs up to the light of day and examine them for inconsistencies, lack of evidence, shoddy logic, or even just non-compelling arguments. I was just realizing recently how much my writing has shaped my convictions, at least as much as my convictions have shaped my writing.</p><p></p><h2><a href="https://writethatblog.substack.com/p/gunnar-morling-on-technical-blogging">Gunnar Morling</a></h2><p>Blogging opened up so many opportunities and connections for me over the years. In a way, it really formed the foundation for my career in the Java and data streaming space.</p><p>In 2009, I wrote a post about the Bean Validation API for data validation in Java. This caught the attention of the folks working on this project at Red Hat at the time, and they reached out to me to ask whether I&#8217;d be interested in writing the documentation for Hibernate Validator, the reference implementation of the Bean Validation specification. So I did that, and I became more and more active as a contributor to that project, which led to landing a job at Red Hat in 2012.</p><p>Also later, when moving to Decodable, and just recently to Confluent, my writing played an important role.</p><p></p><h2><a href="https://writethatblog.substack.com/p/tanel-poder-on-technical-blogging">Tanel Poder</a></h2><p>I think blogging and writing has made me a better problem solver. It has steered me towards trying to generalize and structure whatever solutions I happen to come up with in my work. I won&#8217;t just conclude that the &#8220;problem was a hang&#8221; and &#8220;solution was a reboot&#8221; and be done with it. I want to understand and dig deeper (that&#8217;s the fun research part) and generalize it to cover a wider range of issues. And once I&#8217;ve found a simple enough way to explain the whole chain of events, it&#8217;s the perfect time to write about it.</p><p>This kind of generalization and writing for a wider audience has created a positive feedback loop for my own thinking and work. I&#8217;m not just &#8220;printing out&#8221; the latest steps I had taken, but I fit them into a bigger picture.</p><p>As far as other surprises go, some articles from 15 years ago are still useful when dealing with real-life scenarios today. Many of my old articles are about things running on Solaris or HP-UX, but exactly the same problem patterns happen on modern Linuxes too. So, when dealing with a connection storm or a priority inversion issue in a latest Ubuntu Linux container, I can still point people to an old 2010 article about the fundamentally same &#8220;chain of events&#8221; I had documented before. On different platforms, the tools, naming conventions and terminology are different, but the pathology is the same.</p><p></p><h2><a href="https://writethatblog.substack.com/p/sam-rose-on-technical-blogging">Sam Rose</a></h2><p>The first big &#8220;wow, this works&#8221; moment was getting approached by Google. It was 2013 and I was barely 2 years out of university when I got an email from a Google recruiter inviting me to interview. I ended up working there for 4 years and it was a formative experience, one that had a huge impact on my career trajectory, my understanding of myself, and my worldview.</p><p>These days, what surprises me is just how many people I&#8217;ve been able to make connections with online through this shared love of creation. People will DM me saying things like &#8220;I really love your load balancing post!&#8221; and I&#8217;ll reply &#8220;Thanks! Hey, do you wanna do a video call sometime?&#8221; and they almost always say yes.</p><p>Alternately, I&#8217;ll reach out to people I admire and say &#8220;I really loved your post on XYZ, would you be open to a video call about it?&#8221; and I think because I have an appreciable following and a body of my own work on show, people are more willing to say yes.</p><p></p><h2><a href="https://writethatblog.substack.com/p/preston-thorpe-on-technical-blogging">Preston Thorpe</a></h2><p>I will never get used to the emails I receive, mostly from younger people like students or people with similar kinds of backgrounds, who reach out to tell me that they were inspired by my story. One of them in particular was from a kid who had read <a href="https://pthorpe92.dev/intro/my-story/">my first blog post</a> a couple years ago. He said that it helped him make a tough career choice to transition into software engineering at the end of his college degree, and that he has since gotten a job in the field.</p><p>As much as I love helping people, I wrote the post more to get it off my chest and explain myself to the world. I didn&#8217;t imagine that as many people would end up relating to it as much as they have, and that it would actually provide inspiration for others to have similar journeys.</p><h2></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Why write engineering blogs?]]></title><description><![CDATA[Expert tech bloggers share why they started writing and why they continue]]></description><link>https://writethatblog.substack.com/p/why-write-engineering-blogs</link><guid isPermaLink="false">https://writethatblog.substack.com/p/why-write-engineering-blogs</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Wed, 10 Dec 2025 14:31:08 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a10fe28e-6c3a-4248-b935-524fd8d73963_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We interviewed a dozen(ish) expert tech bloggers over the past year to share perspectives and tips beyond <em><strong><a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">Writing for Developers</a></strong></em>. The idea: ask everyone the same set of questions and hopefully see an interesting range of responses emerge. They did.</p><p>You can <a href="https://writethatblog.substack.com/t/tech-blogger-insights">read all the interviews here</a>. We&#8217;ll continue the interview series (and maybe publish some book spinoff posts too). But first, we want to pause and compare how the first cohort of interviewees responded to specific questions.</p><p>Here&#8217;s how everyone answered the question &#8220;<strong>Why did you start blogging &#8211; and why do you continue?</strong>&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2><a href="https://writethatblog.substack.com/p/aaron-francis-on-technical-blogging">Aaron Francis</a></h2><p>I started blogging as a way to get attention for a product that I was working on. And while that product never really worked out, I started getting interest from people that wanted me to come work for them, either as a freelancer or as a full-time employee. And since then, I have realized what a cheat code it is to have a public body of work that people can just passively stumble upon. It&#8217;s like having a bunch of people out there advocating for you at all times, even while you&#8217;re sleeping.</p><p></p><h2><a href="https://writethatblog.substack.com/p/antirez-on-technical-blogging">antirez</a></h2><p>I don&#8217;t know exactly, but in general, I want to express my interest in things I like, in my passions. It was not some kind of calculation where I said: oh, well, blogging would benefit my career. I just needed to do it.</p><p></p><h2><a href="https://writethatblog.substack.com/p/charity-majors-on-technical-blogging">Charity Majors</a></h2><p>I started writing at a big life inflection point -- the brief period after I left Facebook but before I started Honeycomb. I had started giving talks, and found it surprisingly rewarding, but I&#8217;m not an extrovert and I&#8217;ve always considered myself more of a writer-thinker than a talker-thinker, so I thought I might as well give it a try.</p><p>There are very few things in life that I am prouder of than the body of writing I have developed over the past 10 years. I have had a yearly goal of publishing about one longform piece of writing per month. I don&#8217;t think I&#8217;ve ever actually hit that goal, but some years I have come close! When I look back over things I have written, I feel like I can see myself growing up, my mental health improving, I&#8217;m getting better at taking the long view, being more empathetic, being less reactive... I&#8217;ve never graduated from anything in my life, so to me, my writing kind of externalizes the progress I&#8217;ve made as a human being. It&#8217;s meaningful to me.</p><p></p><h2><a href="https://writethatblog.substack.com/p/eric-lippert-on-technical-blogging">Eric Lippert</a></h2><p>I started my blog, which is now at <a href="http://ericlippert.com/">ericlippert.com</a>, more than 20 years ago. I worked for the Developer Division at Microsoft at the time. As developers working on tools for other developers just like us, we felt a lot of empathy for our customers and were always looking for feedback on what their wants and needs were. But the perception of Microsoft by those customers was that the company was impersonal, secretive, uncommunicative, and uncaring. When blogs started really taking off in the early 2000s, all employees were encouraged to reach out to customers and put a more human, open, and empathetic face on the company, and I really went for that opportunity.</p><p>I was on the scripting languages team at the time, and our public-facing documentation was sparse. Our documentation was well-written and accurate, but there was only so much work that our documentation &#8220;team&#8221; &#8211; one writer &#8211; could do. I decided to focus my blog on the stuff that was missing from the documentation: odd corners of the language, why we&#8217;d made certain design decisions over others, that sort of thing. My tongue-in-cheek name for it was &#8220;Fabulous Adventures In Coding.&#8221; At its peak, I think it was the second most popular blog on MSDN that was run by an individual rather than a team.</p><p>For most of the last decade I&#8217;ve been at Facebook, which discourages employees blogging about their work, so my rate of writing dropped off precipitously then. And since leaving Facebook a couple years ago, I haven&#8217;t blogged much at all. I do miss it, and I might pick it up again this winter. I really enjoy connecting with an audience.</p><p><em><strong>Editor&#8217;s note: </strong>He&#8217;s now <a href="https://ericlippert.com/2025/10/30/im-writing-another-book/">writing a book</a>.</em></p><p></p><h2><a href="https://writethatblog.substack.com/p/fasterthanlime-on-technical-blogging">fasterthanlime</a></h2><p>I genuinely cannot remember why I started, because I&#8217;ve been blogging for about 15 years! That&#8217;s just what the internet was like back then? It wasn&#8217;t weird for people to have their own website &#8212; it was part of maintaining your online identity. We&#8217;re starting to see that come back in that post-Twitter era, folks value having their own domain name more, and pick up blogging again.</p><p>I can say, though, that in 2019 I started a Patreon to motivate me to take writing more seriously &#8212; I&#8217;m reluctant to call it &#8220;blogging&#8221; at this point because some of my longer articles are almost mini-books! Some can take a solid hour to go through. At the time, I was sick of so many articles glossing over particulars: I made it my trademark to go deep into little details, and not to be afraid to ask questions.</p><p></p><h2><a href="https://writethatblog.substack.com/p/glauber-costa-on-technical-blogging">Glauber Costa</a></h2><p>I started <a href="https://www.scylladb.com/author/gcosta/">blogging years ago at ScyllaDB</a>. I was initially forced to do it, but I ended up really enjoying it. [This is strikingly similar to <a href="https://livebook.manning.com/book/writing-for-developers/chapter-1/76">Sarna&#8217;s &#8220;Stockholm Syndrome&#8221; story</a> in Chapter 1 of the book].</p><p>I&#8217;ve always liked teaching people and I saw that technical blogging was a way to do that&#8230;at scale. As I was learning new things, often working with previously unexplored technologies and challenges, blogging gave me this opportunity to teach a large audience of people about what I discovered.</p><p>I kept doing it because it actually works. It really <em>does </em>reach a lot of people. And it&#8217;s very rewarding when you find that your blog is getting people to think differently, maybe even do something differently.</p><p></p><h2><a href="https://writethatblog.substack.com/p/gunnar-morling-on-technical-blogging">Gunnar Morling</a></h2><p>I started blogging for a couple of reasons really. First, it just helps me to take note of things I learned and which I might want to refer to again in the future, like how to <a href="https://www.morling.dev/blog/insatiable-postgres-replication-slot/">prevent ever-growing replication slots in Postgres</a>. I figured, instead of writing things like that down just for myself, I could make these notes available on a blog so others could benefit from them, too. Then, I like to explore and write about technologies such as <a href="https://www.morling.dev/blog/getting-started-with-java-development-2023/">Java</a>, <a href="https://www.morling.dev/blog/finding-java-thread-leaks-with-jdk-flight-recorder-and-bit-of-sql/">OpenJDK Flight Recorder</a>, or <a href="https://www.morling.dev/blog/exploring-zookeeper-less-kafka/">Apache Kafka</a>. Some posts also distill the experience from many years, for instance discussing <a href="https://www.morling.dev/blog/the-code-review-pyramid/">how to do code reviews</a> or <a href="https://www.morling.dev/blog/ten-tips-make-conference-talks-suck-less/">writing better conference talk abstracts</a>. Oftentimes, folks will add their own thoughts in a comment, from which I can then learn something new again&#8211;so it&#8217;s a win for everyone.</p><p>Another reason for blogging is to spread the word about things I&#8217;ve been working on, <a href="https://www.morling.dev/blog/announcing-first-release-of-kcctl/">such as kcctl &#128059;</a>, a command-line client for Kafka Connect. Such posts will, for instance, introduce a new release or discuss a particular feature or use case and they help to increase awareness for a project and build a community around it. Or they might announce efforts such as the <a href="https://www.morling.dev/blog/one-billion-row-challenge/">One Billion Row coding challenge</a> I did last year. Finally, some posts are about making the case for specific ideas, say, <a href="https://www.morling.dev/blog/towards-continuous-performance-regression-testing/">continuous performance regression testing</a>, or how Kafka Connect could be <a href="https://www.morling.dev/blog/ideation-kubernetes-native-kafka-connect/">reinvisioned in a more Kubernetes-native way</a>.</p><p>Overall &#8212; and this is why I keep doing it &#8212; blogging is a great way for me to express my thoughts, ideas, and learnings, and share them with others. It allows me to get feedback and input on new projects, and it&#8217;s an opportunity for helping as well as learning from others.</p><p></p><h2><a href="https://writethatblog.substack.com/p/jeff-atwood-on-technical-blogging">Jeff Atwood</a></h2><p>I love blogging &#8211; it&#8217;s how I got to where I am. <a href="https://stevemcconnell.com/">Steve McConnell</a>&#8216;s book <em><a href="https://en.wikipedia.org/wiki/Code_Complete">Code Complete</a></em> is what inspired me to start blogging. His voice was just so human. Instead of the traditional chest-thumping about &#8220;My algorithm is better than your algorithm,&#8221; it was about &#8220;Hey, we&#8217;re all fallible humans writing software for other fallible humans.&#8221; I thought, &#8220;Oh my God, this is humanistic computing.&#8221; I loved it! I knew I had to write like that too. That&#8217;s what launched me on my journey.</p><p>Now more than ever, I think it&#8217;s important to realize that we&#8217;ve given everyone a <a href="https://en.wikipedia.org/wiki/Printing_press">Gutenberg printing press</a> that reaches every other human on the planet. At first blush, that sounds amazing. <em>Wow, everybody can talk to everybody!</em> But then the terror sets in: <em>Oh, my God. Everybody can talk to everybody &#8211;</em> <em>this is a nightmare</em>.</p><p>I think blogs are important because it&#8217;s a structured form of writing. Sadly, chat tends to dominate now. I want people to articulate their thoughts, to really think about what they&#8217;re saying &#8211; structure it, have a story with a beginning, a middle, and an end. It doesn&#8217;t have to be super long. However, chat breaks everything up into a million pieces. You have these interleaved conversations where people are just typing whatever pops into their brain, sometimes with 10 people doing that at the same time. How do you create a narrative out of this? How do you create a coherent story out of chat?</p><p>I think blogging is a better mental exercise. Tell the story of what happened to you, and maybe we can learn from it. Maybe you can learn from your own story, perhaps from the whole <a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging">rubber ducking</a> aspect of it. As you&#8217;re explaining it to yourself, you&#8217;re also creating a public artifact that can benefit others who might have the same problem or a related story. And it&#8217;s <em>your</em> story &#8211; what&#8217;s unique about you. I want to hear about you as a person &#8211; your unique experience and what <em>you&#8217;ve</em> done and what <em>you&#8217;ve</em> seen. That&#8217;s what makes humanity great. And I think blogs are an excellent medium for that.</p><p>There&#8217;s certainly a place for video, there&#8217;s a place for chat. These tools all have their uses, but use the appropriate tool for the appropriate job. I think blogs are a very, very versatile tool in terms of median length, telling a story, and sharing it with the public.</p><p>If you look at the history of humanity, the things that have really changed the world have been in writing &#8211; books, novels, opinion pieces, even blogs. The invention of language was important, but the invention of writing was so much bigger. With writing, you didn&#8217;t have to depend on one person being alive long enough to tell the story over and over. You could write it down and then it could live on forever.</p><p>I encourage everyone to write, even if you write only for yourself. I think it&#8217;s better if you write in public because you can get feedback that way. You can learn so much from the feedback &#8211; learn that others feel the same way, learn about aspects you didn&#8217;t think about, etc. But it&#8217;s scary. I get it &#8211; people are afraid of putting themselves out there. Write for just you if you want, but write&#8230; just write.</p><p></p><h2><a href="https://writethatblog.substack.com/p/matt-butcher-on-technical-blogging">Matt Butcher</a></h2><p>I first started blogging in earnest back in the early 2000s because I was at university and wanted to share that experience with the rest of my family. Somewhere along the line, I started a second blog to record (mainly for myself) the technologies and tools I was learning.</p><p>These early tech blog posts were pretty basic. I&#8217;d learn a new <code>sed </code>trick, and write a couple hundred words about it. I&#8217;d try a new code editor, take a screenshot, and write my basic impressions. Embarrassingly, sometimes my blog posts were terribly inaccurate. I once wrote one on optimizing tree walking algorithms that was totally wrong. But I just updated it later with a note that said I&#8217;d learned more and now realized there were better ways of doing things.</p><p>In those early days, I never used any analytics or anything. I had no idea if anyone ever read what I wrote. Then one day, a friend of mine got really into SEO and asked if I would set up Google Analytics and share with him so he could learn a bit. I was utterly shocked by what we learned: My blog had a ton of traffic, and some of the most basic posts (like the one about <code>sed</code>) were perennially popular.</p><p>I&#8217;ve blogged on and off since then. These days, I mainly post on the <a href="https://www.fermyon.com/blog/index">Fermyon blog</a>. And those posts are more theoretical than my early how-to focused posts.</p><p></p><h2><a href="https://writethatblog.substack.com/p/phil-eaton-on-technical-blogging">Phil Eaton</a></h2><p>My shameless goal when I started blogging in 2015 was to become a regular on the front of Hacker News (HN) because I got the sense that it would be good for my career. And I enjoyed the type of posts that made a great fit for HN; posts that were a little crazy yet taught you something useful.</p><p>After becoming a manager in 2017, I realized the importance and value of writing for the sake of communicating and my focus on writing shifted from &#8220;writing about zany explorations&#8221; to &#8220;writing as a means for teaching myself a topic, or solidifying my understanding of the topic.&#8221;</p><p>I started to notice, observing both myself and coworkers, that we developers let so many educational opportunities pass without recording the results. What a waste!</p><p>Not only is writing about what you learn good for your own understanding and your team&#8217;s understanding and for the internet&#8217;s understanding, it&#8217;s good marketing for you and the company you work for. Good marketing in the sense that when people see someone write a useful blog post, they think &#8220;that person is cool, and the company they work for must also be cool; I want to work with them or work for that company or buy from that company.&#8221;</p><p>So there&#8217;s this confluence of reasons that make blogging so obviously worth the time.</p><p></p><h2><a href="https://writethatblog.substack.com/p/preston-thorpe-on-technical-blogging">Preston Thorpe</a></h2><p>Honestly, I don&#8217;t think I made a conscious decision to start blogging. I just remember being involved in open source projects and my story wasn&#8217;t really out there yet. And it felt odd that nobody knew my situation.</p><p>I didn&#8217;t want to just flat out randomly tell people that I&#8217;m incarcerated. So I decided that I&#8217;d write <a href="https://pthorpe92.dev/intro/my-story/">my story</a> down for anyone to find if they came across my profile. I really did not expect for many people to actually read it, so it was pretty shocking to see it on the front page of HN a couple days after it was published.</p><p>I try my best to keep writing, although I don&#8217;t write as often as I should. Writing an in-depth technical blog post about a feature built or a problem solved allows me to fully absorb and understand it even better than just implementing it, so this is another reason I feel like I will continue to write. It serves as both personal motivation to more deeply understand something I am working on, as well as a way to share that knowledge with others.</p><p></p><h2><a href="https://writethatblog.substack.com/p/sam-rose-on-technical-blogging">Sam Rose</a></h2><p>I started blogging about tech in my final year of university. The earliest posts on <a href="http://samwho.dev">http://samwho.dev</a>, the ones from 2011, were written at this time. I&#8217;d heard that having an online presence would help me get a job, so I started writing about the things I was learning.</p><p>I wrote sporadically for years, most of my posts only getting a trickle of traffic, but I did have a few modestly successful ones.<a href="https://samwho.dev/blog/the-birth-and-death-of-a-running-program/"> https://samwho.dev/blog/the-birth-and-death-of-a-running-program/</a> did well and even ended up as part of the Georgia Tech CS2110 resources list. One of the lecturers, who has since retired, emailed me in 2013 asking if he could use it. I was concerned because the post had swearing in it, but he said &#8220;swearing is attention getting and helps the reader stay alert.&#8221;</p><p>The blog posts I&#8217;ve become known for, the ones with lots of visual and interactive bits, started in the first half of 2023. I&#8217;d long admired the work of <a href="https://ciechanow.ski/">https://ciechanow.ski/</a> and wanted to see if I could apply his style to programming. It&#8217;s working well so far!</p><p>As for why I continue, I&#8217;ve been gainfully employed for a long time now, so my initial motivations for writing are long gone. I think my blog does help when I have conversations with employers, but that&#8217;s not the goal anymore.</p><p>I have this dream of being a teacher. I&#8217;ve dabbled in many forms of teaching: teaching assistant in university for some of my lecturers, mentoring in commercial and personal capacities, moderating learning communities, volunteering at bootcamps and kids&#8217; groups. What if I could just&#8230; teach for a living?</p><p>I&#8217;m trying to make use of the attention these blog posts are getting to see if I can make steps towards doing just that.</p><p></p><h2><a href="https://writethatblog.substack.com/p/tanel-poder-on-technical-blogging">Tanel Poder</a></h2><p>Over the years, I had accumulated a number of useful scripts and techniques for troubleshooting the common OS &amp; database problems I had encountered. At first, I created the blog (on <a href="https://tanelpoder.com/2007/06/18/advanced-oracle-troubleshooting-guide-when-the-wait-interface-is-not-enough-part-1/">June 18, 2007</a>) as a lookup table for my future self. I uploaded all my open source tools to my blog and wrote articles about the more interesting troubleshooting scenarios. When I visited a customer to solve a problem, we could just copy &amp; paste relevant scripts and commands from my blog. That way, I didn&#8217;t have to show up with a USB stick and try to get it connected to the internal network first.</p><p>Why do I continue? There&#8217;s so much cool stuff and interesting problems to write about. When writing, you have to do additional research to make sure your understanding is <em>good enough</em>. That&#8217;s the fun part. Systems are getting more complex, so you need to find new ways to &#8220;stay systematic&#8221; when troubleshooting problems and not go with trial &amp; error and guesswork. These kinds of topics are my favorite, how to measure the right things, from the right angle, at the right time &#8211; so that even new unforeseen problems would inevitably reveal their causes to you via numbers and metrics, without any magic needed.</p><p>What makes me really happy is when people contact me and say that they were able to solve completely different problems that I hadn&#8217;t even seen, on their own, with the aid of the tools and systematic troubleshooting advice I have in my blog.</p><p></p><h2><a href="https://writethatblog.substack.com/p/thorsten-ball-on-technical-blogging">Thorsten Ball</a> </h2><p>I published my first blog post on thorstenball.com in 2012. It&#8217;s <a href="https://thorstenball.com/blog/2012/06/08/search-autocompletion-with-redis/">this one</a> about implementing autocompletion using Redis. I don&#8217;t know exactly <em>why</em> I started the blog, but, looking back, I think the main motivation was to share something I was proud of. It was a cool bit of code, it took me a bit to figure out, I learned a lot in the process, and I wanted to share the excitement.</p><p>At that time, I was also a junior software developer, having recently finished my first internship, trying to switch from studying philosophy into being an engineer and, I think, there was also a bit of &#8220;my blog can be a CV&#8221; aspect to it.</p><p>Back then, a friend had told me: you don&#8217;t need a degree to get a job as a software engineer, all you need to do is to show that you can do the job, because, trust me, he said, there&#8217;s a lot of people who have degrees but can&#8217;t do the job.</p><p>I figured that having a blog with which I can share what I learned, what I did, well, that&#8217;s a way to show that I can do the job. Now, I don&#8217;t think a lot of recruiters have read my blog, but I still believe there&#8217;s something to it: you&#8217;re sharing with the world what you do, what you learned, how you think &#8212; that&#8217;s a good thing in and of itself, and even if someone only takes a brief look at your blog before they interview you, I think that can help.</p><p>But, I also have to admit that I&#8217;ve been writing on the internet in one form or another, since the early 2000s, when I was a teenager. I had personal websites and blogs since I was 14 years old. I shared tutorials on web forums. There&#8217;s just something in me that makes me want to share stuff on the internet.</p><p>Nowadays I mostly write my newsletter, <a href="https://registerspill.thorstenball.com/">Register Spill</a>, which I see as a different form of blogging, and for that newsletter, I have a few reasons:</p><ul><li><p>I enjoy the writing. Well, okay, I enjoy having written. But, in general: I&#8217;m proud of writing something that&#8217;s good.</p></li><li><p>I&#8217;ve enjoyed tweeting a lot, but in the past few years the social media landscape has become so fractured that I decided to create a place of my own, a place where people can subscribe and follow me, where I can potentially take their emails and send them newsletters even if the platform decides to shut down.</p></li><li><p>Writing is thinking. I like sitting down and ordering my thinking in order to write something. The feelings of &#8220;I want to write something&#8221; and &#8220;I want to really think through this topic and share it&#8221; are similar for me.</p><p></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[writethat.blog Recap [November 2025]]]></title><description><![CDATA[Piotr&#8217;s picks for writethat.blog last month&#8230;]]></description><link>https://writethatblog.substack.com/p/writethatblog-recap-november-2025</link><guid isPermaLink="false">https://writethatblog.substack.com/p/writethatblog-recap-november-2025</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Thu, 04 Dec 2025 15:29:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7b4b9ee4-2b04-488a-a3da-7926adb3321e_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Piotr&#8217;s picks for writethat.blog last month&#8230;</p><h3><a href="https://blog.tymscar.com/posts/imgurukproxy/">Imgur geo-blocked the UK, so I geo-unblocked my entire network</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>Beautiful tutorial on how to selectively route only specific websites through VPN, while keeping the rest of your network fast. Especially useful in the age of geo-blocking everything.</p><h3><a href="https://dtornow.substack.com/p/assert-in-production">Assert in production</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Good conclusions from the Cloudflare unwrap fiasco. tl;dr your production code should crash more, not less, especially if the alternative is running in a defective state. Much better to suffer from a few hours of downtime than chasing your leaked personal data in the darkest corners of the Internet.</p><h3><a href="https://www.brendangregg.com/blog/2025-11-22/intel-is-listening.html">Intel is listening, don&#8217;t waste your shot</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>This article dares you to share brutally honest feedback with hardware vendors, for everyone&#8217;s benefit. (And admits it is easier said that done.) Interesting perspective from an author who has been on both sides of those meetings with vendors.</p><h3><a href="https://penberg.org/blog/assert.html">Assertions are not the problem; your verification process is</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>High quality rant following all the opinions stated online after the Cloudflare fiasco. Read the whole thing if you would like to learn why, quoting, &#8220;However, all the arguments are wrong.&#8221;</p><h3><a href="https://blog.cloudflare.com/18-november-2025-outage/">Cloudflare outage on November 18, 2025</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Lesson learned: unwrap() is evil. Jokes aside, the article is a very detailed and prompt post-mortem report from a worldwide crash.</p><h3><a href="https://fabiensanglard.net/quake_chunnel/">How quake.exe got its TCP/IP stack</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>Ever-entertaining author of Game Engine Black Books delivers again. This time it&#8217;s a history lesson on how Quake gained a networking stack and why third-party companies were involved. Fascinating.</p><h3><a href="https://bitsnpieces.dev/posts/a-synth-for-my-daughter/">I built a synth for my daughter</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>A full guide on how to cook your own hardware to your kid&#8217;s delight. Includes lots of great resources to start working closer to electrical circuits as well as 3D design and printing. Super strongly recommended (no daughter required, although highly recommended as well).</p><h3><a href="https://tigerbeetle.com/blog/2025-11-06-the-write-last-read-first-rule/">The write last, read first rule</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=non-markety%20product%20perspectives">non-markety product perspectives</a></p><p>A story of how to make multiple distributed systems consistent by ordering the operations the right way. It also acts as a cautionary tale of what happens if you order the operations the wrong way (don&#8217;t).</p><h3><a href="https://fly.io/blog/everyone-write-an-agent/">You should write an agent</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>A call to write agents, with an embedded mini-tutorial. You should write an agent yourself! Even if just to have more fuel to hate generative AI. Chances are though, that you&#8217;ll appreciate the things a deceptively simple loop can do.</p><h3><a href="https://turso.tech/blog/indexing-sparse-vectors-with-turso">Indexing sparse vectors with Turso</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=benchmarks%20and%20test%20results">benchmarks and test results</a></p><p>Now that the &#8220;vector database&#8221; hype is near its end, the world is in the &#8220;let&#8217;s add vectors as first-class citizens to existing databases&#8221; stage. The article explains Turso&#8217;s sparse vector indexing implementation and measures how all of its flavors and configurations perform.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writethat.blog&quot;,&quot;text&quot;:&quot;Read more on writethat.blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writethat.blog"><span>Read more on writethat.blog</span></a></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KI06!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KI06!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 424w, https://substackcdn.com/image/fetch/$s_!KI06!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 848w, https://substackcdn.com/image/fetch/$s_!KI06!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 1272w, https://substackcdn.com/image/fetch/$s_!KI06!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KI06!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png" width="917" height="931" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af883ea0-6de6-442e-90a5-2759a8495a11_917x931.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:931,&quot;width&quot;:917,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112228,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writethatblog.substack.com/i/180710295?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KI06!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 424w, https://substackcdn.com/image/fetch/$s_!KI06!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 848w, https://substackcdn.com/image/fetch/$s_!KI06!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 1272w, https://substackcdn.com/image/fetch/$s_!KI06!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf883ea0-6de6-442e-90a5-2759a8495a11_917x931.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3></h3>]]></content:encoded></item><item><title><![CDATA[Preston Thorpe on Technical Blogging]]></title><description><![CDATA["Writing in public" from prison]]></description><link>https://writethatblog.substack.com/p/preston-thorpe-on-technical-blogging</link><guid isPermaLink="false">https://writethatblog.substack.com/p/preston-thorpe-on-technical-blogging</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Thu, 13 Nov 2025 13:52:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f0a34b5c-e922-44e0-bda0-faa1b08316fd_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;ve interviewed <a href="https://writethatblog.substack.com/t/tech-blogger-insights">over a dozen expert tech bloggers</a>, so it&#8217;s not surprising that we&#8217;ve seen a range of writing motivations and experiences. Still, this one stands out. Today, we&#8217;re featuring Preston Thorpe, a self-taught software engineer now working for <a href="https://turso.tech/">Turso</a>. </p><p>Preston writes his blog, <a href="https://pthorpe92.dev/">Inside Thoughts</a>, from &#8220;the other Mountain View&#8221;: Mountain View Correctional Facility in Charleston, Maine. His posts cover topics ranging from optimizing Turso&#8217;s WAL checkpointing with io_uring async I/O, to reflections on programming, to how he started coding professionally while incarcerated.</p><p><strong>Note: </strong>Last month&#8217;s interviewee, <a href="https://writethatblog.substack.com/p/aaron-francis-on-technical-blogging">Aaron Francis</a>, just shared an <a href="https://www.youtube.com/watch?v=AEPf9zUI_fQ">in-depth chat with Preston</a>. They discuss redemption, resilience, and rewriting SQLite in Rust.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Over to Preston&#8230;</p><p><strong>Why did you start blogging &#8211; and why do you continue?</strong></p><p>Honestly, I don&#8217;t think I made a conscious decision to start blogging. I just remember being involved in open source projects and my story wasn&#8217;t really out there yet. And it felt odd that nobody knew my situation. </p><p>I didn&#8217;t want to just flat out randomly tell people that I&#8217;m incarcerated. So I decided that <a href="https://pthorpe92.dev/intro/my-story/">I&#8217;d write my story down</a> for anyone to find if they came across <a href="https://github.com/PThorpe92">my profile</a>. I really did not expect for many people to actually read it, so it was pretty shocking to see it on the front page of HN a couple days after it was published. </p><p>I try my best to keep writing, although I don&#8217;t write as often as I should. Writing an in-depth technical blog post about a feature built or a problem solved allows me to fully absorb and understand it even better than just implementing it, so this is another reason I feel like I will continue to write. It serves as both personal motivation to more deeply understand something I am working on, as well as a way to share that knowledge with others.</p><p><strong>What has been the most surprising impact of blogging for you?</strong></p><p>I will never get used to the emails I receive, mostly from younger people like students or people with similar kinds of backgrounds, who reach out to tell me that they were inspired by my story. One of them in particular was from a kid who had read my first blog post a couple years ago. He said that it helped him make a tough career choice to transition into software engineering at the end of his college degree, and that he has since gotten a job in the field. </p><p>As much as I love helping people, I wrote the post more to get it off my chest and explain myself to the world. I didn&#8217;t imagine that as many people would end up relating to it as much as they have, and that it would actually provide inspiration for others to have similar journeys.</p><p><strong>What blog post are you most proud of and why?</strong></p><p>Probably my first post, &#8220;<a href="https://pthorpe92.dev/intro/my-story/">How I got here</a>.&#8221; I certainly want to be known for my more technical achievements and I never wanted to strictly classify myself as &#8220;the programmer in prison,&#8221; but that post really set the stage for everything that came after it. I hope to keep writing more technical posts in the future, and I haven&#8217;t had any purely technical posts gain as much attention as that first one yet. I think it will be a while before I can top that one in terms of personal significance.</p><p><strong>What post was the most difficult to write and how did you tackle it?</strong></p><p>Once again, probably my first post. It was difficult to write because there are a lot of touchy subjects involved and I try to be respectful of everyone&#8217;s perspective, even if I don&#8217;t personally agree with it. It&#8217;s always a balance of explaining your own personal perspective while being sensitive to the fact that other people may have very different experiences. I just tried to be as honest and straightforward as possible, and I think that approach resonated with people.</p><p><strong>Any lessons learned that you want to share with the community?</strong></p><p>You will never please everyone, and the people who are going to overly criticize and critique everything you do are going to do so, no matter what. Focus on the people who appreciate your work and the positive impact you can have, rather than trying to appease every single critic out there. </p><p>That being said, with technical content especially, still make sure to be extra thorough when making claims or explaining concepts because someone will call you out on it every time if you get anything wrong. </p><p>Also, you will always continue to learn, and blogs are a good metric to go back and look at in a year&#8217;s time. You can reflect on how much you have learned since. I know I have gone back to old technical posts and had a good laugh at how naive I was at the time. This is another reason to write, even if you don&#8217;t feel like you are reaching any particular audience.</p><p><strong>Your advice for people just getting started with blogging?</strong></p><p>It&#8217;s often intimidating to start writing. At first, you will definitely feel like you are writing to no audience. But writing about a specific project you&#8217;re working on, or problem you encountered, with a topic you are particularly passionate about &#8212; those always tend to be the most enjoyable for others. Even if your posts don&#8217;t get a bunch of viral attention, we have all been hunting for unique information and came across someone&#8217;s super helpful blog posts about the exact niche subject... Those types of blogs are equally as great and useful as ones which end up getting on the front page of HN.</p><p><strong>A few blogs that you particularly enjoy?</strong></p><p>Miguel Young - <a href="https://mcyoung.xyz/">https://mcyoung.xyz/</a> </p><p>Thorsten Ball - <a href="https://thorstenball.com/">https://thorstenball.com/</a> and <a href="https://registerspill.thorstenball.com/">https://registerspill.thorstenball.com/</a></p><p>Matklad - <a href="https://matklad.github.io/">https://matklad.github.io/</a></p><p>Phil Eaton - <a href="https://eatonphil.com/">https://eatonphil.com/</a></p><p>Avinash Sajjanshetty - <a href="https://avi.im/blag/">https://avi.im/blag/</a></p><p><em>Editor&#8217;s note<strong>:</strong> We&#8217;ve already interviewed <a href="https://writethatblog.substack.com/p/thorsten-ball-on-technical-blogging">Thorsten </a>and <a href="https://writethatblog.substack.com/p/phil-eaton-on-technical-blogging">Phil </a>&#8212; and we&#8217;re hoping to feature Miguel, Matklad, and Avinash (V) soon!</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[writethat.blog Recap [October 2025]]]></title><description><![CDATA[Piotr&#8217;s picks for writethat.blog last month&#8230;]]></description><link>https://writethatblog.substack.com/p/writethatblog-recap-october-2025</link><guid isPermaLink="false">https://writethatblog.substack.com/p/writethatblog-recap-october-2025</guid><dc:creator><![CDATA[Cynthia Dunlop]]></dc:creator><pubDate>Tue, 04 Nov 2025 13:55:56 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/34dcb82a-d4fe-451a-8d33-d6f0b1f259d8_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Piotr&#8217;s picks for writethat.blog last month&#8230;</p><h3><a href="https://ericlippert.com/2025/10/30/im-writing-another-book/">I&#8217;m writing another book!</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>He&#8217;s writing another book!</p><h3><a href="https://andrewkelley.me/post/zig-new-async-io-text-version.html">Zig&#8217;s new async I/O</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>Zig&#8217;s interesting take on how to implement I/O asynchrony and concurrency. Also, why the two are distinctly not the same thing, especially in Zig&#8217;s implementation.</p><h3><a href="https://fly.io/blog/corrosion/">Corrosion</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>Fly.io&#8217;s story of building a reliable service discovery system. Contains lots of educational cautionary tales, as well as lots of useful links.</p><h3><a href="https://blog.pixelmelt.dev/kindle-web-drm/">How I reversed Amazon&#8217;s Kindle web obfuscation because their app sucked</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>A beautiful tale of working through layers of DRM absurdity just to read a book in peace. Reverse engineering at its finest.</p><h3><a href="https://tonsky.me/blog/syntax-highlighting/">I am sorry, but everyone is getting syntax highlighting wrong</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>A philosophical piece on how to implement syntax highlighting in a way that does not hurt human eyes. I also admire a creative way of using the word &#8220;diarrhea&#8221; as a paragraph header.</p><h3><a href="https://zayenz.se/blog/post/how-to-check-for-overlapping-intervals/">How to check for overlapping intervals</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=lessons%20learned">lessons learned</a></p><p>The article starts with an introduction to something every other programmer rediscovered 17 times -- how to simplify the check for overlapping intervals. However, it also extrapolates the idea to two dimensions, which is a very nice pattern to remember.</p><h3><a href="https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/">How we found a bug in Go&#8217;s arm64 compiler</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=bug%20hunt">bug hunt</a></p><p>Very informative bug hunt! Dives deep into the intricacies of arm64 architecture, where a deceivingly simple addition is not always encoded as a single opcode...</p><h3><a href="https://ggrigorev.me/posts/tokenizer-superbpe/">Tokenization from first principles</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>As a fellow CS336 &#8220;LLMs from Scratch&#8221; course hacker, I am deeply biased to like this post more -- it is a very good start for anyone interested in training large language models. On top of a very good introduction to what tokenizing is, the article also sums up one of the novel approaches -- superBPE. Well worth reading.</p><h3><a href="https://ashvardanian.com/posts/aws-graviton-checksums-on-neon-vs-sve/">2x faster hashes on AWS Graviton: NEON &#8594; SVE2</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=benchmarks%20and%20test%20results">benchmarks and test results</a></p><p>Comparison of various SIMD extensions, performed on Graviton instances. Nice opportunity to catch up on latest ARM improvements.</p><h3><a href="https://reiner.org/cuckoo-hashing">Cuckoo hashing improves SIMD hash tables (and other hash table tradeoffs)</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=benchmarks%20and%20test%20results">benchmarks and test results</a></p><p>A very thorough writeup on cuckoo hashing -- a genius CPU-cache-and-SIMD-friendly approach to hash tables.</p><h3><a href="https://sunshowers.io/posts/cancelling-async-rust/">Cancelling async Rust</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=thoughts%20on%20trends">thoughts on trends</a></p><p>Do not get your hopes up just yet -- async Rust is not cancelled as a whole. The article dissects the asynchronous destructors problem that most async frameworks have, one way or the other. In Rust, there exists a concept of &#8220;cancel safety&#8221; I was not really aware of. The concrete example of mutating state under a Tokio mutex really helped me grasp the idea!</p><h3><a href="https://clickhouse.com/blog/clickhouse-parallel-replicas">How we scaled raw GROUP BY to 100 B+ rows in under a second</a></h3><p>pattern: <a href="https://writethat.blog/?pattern=how%20we%20built%20it">how we built it</a></p><p>A longish (but well worth the time) summary of what makes ClickHouse GROUP BY fast. It also explains how to achieve massive parallelism, but still be able to correctly merge the state to return a coherent result. Nice.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://writethat.blog&quot;,&quot;text&quot;:&quot;Read more on writethat.blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://writethat.blog"><span>Read more on writethat.blog</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pTJ8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pTJ8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 424w, https://substackcdn.com/image/fetch/$s_!pTJ8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 848w, https://substackcdn.com/image/fetch/$s_!pTJ8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 1272w, https://substackcdn.com/image/fetch/$s_!pTJ8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pTJ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png" width="947" height="890" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:890,&quot;width&quot;:947,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94100,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://writethatblog.substack.com/i/177947057?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pTJ8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 424w, https://substackcdn.com/image/fetch/$s_!pTJ8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 848w, https://substackcdn.com/image/fetch/$s_!pTJ8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 1272w, https://substackcdn.com/image/fetch/$s_!pTJ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e725c8-01ff-4498-a2ce-727406e651c7_947x890.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to write a "bug hunt" blog post]]></title><description><![CDATA[Writing the programming world&#8217;s equivalent of a detective story]]></description><link>https://writethatblog.substack.com/p/the-bug-hunt-blog-post-pattern</link><guid isPermaLink="false">https://writethatblog.substack.com/p/the-bug-hunt-blog-post-pattern</guid><pubDate>Wed, 29 Oct 2025 13:01:38 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6b644c85-6622-410d-a0af-55db16db4f0f_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>The following post is an excerpt from Chapter 8 of <a href="https://github.com/scynthiadunlop/WritingForDevelopersBook">Writing for Developers: Blogs That Get Read</a>. </em></p><p><em>The book explores seven popular engineering blog post patterns:</em></p><ul><li><p><em>The bug hunt</em></p></li><li><p><em>We rewrote it in X</em></p></li><li><p><em>How we built it</em></p></li><li><p><em>Lessons learned</em></p></li><li><p><em>Thoughts on trends</em></p></li><li><p><em>Non-markety product perspectives</em></p></li><li><p><em>Benchmarks and test results</em></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://writethatblog.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get <em>Write that blog!</em> updates in your inbox</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p>The &#8220;Bug Hunt&#8221; blog post pattern is the programming world&#8217;s equivalent of a detective story. It has a theme, a main plot, side plots, a protagonist (you), an antagonist (usually also you, having introduced the bug two weeks ago in the first place). It&#8217;s captivating, keeps readers in suspense, and ends with a satisfying plot twist, or a tactical cliffhanger. And the best part is&#8230;it&#8217;s even more fun to write than to read!</p><h1>8.1 Purpose</h1><p>Writing a bug hunting article serves a few purposes, depending on the success of the hunt, where the fault ultimately fell, and a few other factors. Let's tackle the potential purposes one by one.</p><h2>8.1.1 Knowledge dump</h2><p>The fact that a bug appeared and was fixed is undeniably important. But what's way more important is reducing the chance that it happens again &#8211; and knowing what to do if it does. While hunting for a bug, it's likely you encountered the following:</p><ul><li><p>A few dead ends</p></li><li><p>A very convincing red herring</p></li><li><p>A tool that looked helpful at first, but ended up being unrelated</p></li><li><p>Another tool that proved immensely useful</p></li><li><p>Some blog post from 2014 that led you to discover the root cause</p></li></ul><p>All those steps are incredibly useful for the future debugger of another similar issue (likely you again, two weeks older). Awareness of the past dead ends and distractions is especially helpful here. Quick identification of a known red herring can save the future debugger (you) a few hours of unproductive research. You can treat bug hunting blog posts as scrolls of ancient knowledge (two weeks or older), created by your predecessors (you) to pass it on to future generations (also you).</p><h2>8.1.2 Global bug awareness</h2><p>It's give-back-to-the-community time! Chances are, the bug that you fixed doesn't uniquely apply to your project. Instead, it was caused by a sneaky pitfall in your language of choice, one of the libraries, or specific hardware. Your article can genuinely inspire others to think "Huh, we do have exactly the same setup &#8211; makes me wonder&#8230;" It might also motivate the team behind that technology to consider ways to stop others from making the same mistake.</p><p>As a result, writing a story about how you fixed an interesting bug may cause a few other bugs of the same category to be fixed worldwide. It's a superpower! This purpose is especially important if the bug is related to:</p><ul><li><p>Bleeding edge software</p></li><li><p>Novel hardware</p></li><li><p>A young open-source community</p></li></ul><p>Those tend to develop dynamically and have very little test coverage compared to industry standards simply because they are too young to be implemented in a critical mass of projects. You can think of this purpose as an external version of the previously described "knowledge dump" &#8211; it&#8217;s a knowledge dump that you write for everyone, not just for yourself or your team.</p><h2>8.1.3 Bragging</h2><p>Set aside the negative connotation of the &#8220;bragging&#8221; word. Tech world bragging &#8211; at the right dosage &#8211; is good for you and your peers. Bragging about doing something interesting, like hunting and resolving a bug, helps you as well as your readers:</p><ul><li><p>It's educational. Your audience can presumably learn something by reading how you achieved your goal.</p></li><li><p>It broadens your professional network. People intrigued by similar technologies and challenges will likely reach out to you as we outlined in Chapter 1.</p></li><li><p>It feels good. There&#8217;s no shame in acknowledging that attention is one of the benefits of telling the world that you did something.</p></li><li><p>It yields free criticism &#8211; hopefully constructive criticism, but valuable either way. The (often illusory) sense of anonymity on the Internet makes it easy to criticize others, so you can count on lots of comments and nitpicks after your article goes public. But after filtering out the vitriol, you can often learn something new, or even revisit your whole approach to the problem.</p></li></ul><h1>8.2 Audience</h1><p>Bug hunting is a technical topic, and the audience for bug hunting blog posts is inherently just as technical. Categories of interested readers include:</p><ul><li><p>People with a similar background (which means they are potentially susceptible to introducing or suffering from similar bugs in their systems)</p></li><li><p>People whose job is finding and fixing production bugs</p></li><li><p>People in the midst of a similar bug hunt</p></li><li><p>People who might be able to prevent this class of bug from recurring (those behind the technology where the bug occurred or working on defect prevention tools)</p></li><li><p>Detective fiction aficionados</p></li><li><p>Your colleagues</p></li><li><p>Professional Internet critics specialized in unsolicited advice</p></li></ul><p>It's safe to assume that the audience is someone who:</p><ul><li><p>Already has sufficient professional background to understand the technical terms and idioms you use in the article</p></li><li><p>If not, is willing to look them up and learn</p></li><li><p>If not, is absolutely fine with just pretending that they understand it</p></li></ul><p>Therefore, it's fine to treat a bug hunting blog post as one addressed to "intermediate level" (or above) readers and not "newcomers." Advanced technical terms are fine because you're not trying to make the article accessible to the wider public. Just expand any arcane acronyms as you see fit and provide hyperlinks as needed.</p><h1>8.3 Examples</h1><p>Since bugs can occur anywhere, so can bug hunting blog posts. In the wild, you can find bug hunting posts published across a variety of blogs: Big Tech, unicorn, startup, and personal blogs. In general, bug hunting posts published by large high-profile companies are unsurprisingly less common (and more guarded) than those by startups as well as individual contributors writing about open-source contributions and weekend projects.</p><p>Here are some prime examples of blog posts that apply the &#8220;Bug Hunt&#8221; pattern, along with Piotr&#8217;s commentary on each.</p><h2>8.3.1 Hunting a NUMA Performance Bug</h2><p><strong>Author: </strong>Micha&#322; Chojnowski</p><p><strong>Source:</strong> ScyllaDB Blog (<a href="https://www.scylladb.com/2021/09/28/hunting-a-numa-performance-bug/">https://www.scylladb.com/2021/09/28/hunting-a-numa-performance-bug/</a>)</p><h3>Summary</h3><p>The article describes a performance regression happening on modern hardware with NUMA (Non-Uniform Memory Access) design. The regression seemed to occur randomly on half of the runs, which made it much harder to pinpoint. The article shares a few failed (but nonetheless skillful and impressive) attempts to diagnose the problem. Then, one of the observations leads straight to a breakthrough and a surprisingly small fix &#8211; measured with lines of code.</p><h3>Commentary</h3><p>This is the pinnacle of bug hunting blog posts. It&#8217;s deeply technical, but at the same time simple to follow. The less experienced readers can skip some of the nitty-gritty details and still learn a lot. All of the failed attempts to diagnose the issue are educational, and surely usable in future debugging.</p><p>The casual expertise that the author shows while editing executable binaries directly as if they were text files makes the blog post an extremely enjoyable read. The solution to the problem is also very satisfactory, especially to a programmer&#8217;s mind: just one seemingly innocent line of code changed, and all the performance regressions are eliminated.</p><h2>8.3.2 Why Is My Rust Build So Slow?</h2><p><strong>Author:</strong> Amos Wenger</p><p><strong>Source:</strong> fasterthanlime Blog (<a href="https://fasterthanli.me/articles/why-is-my-rust-build-so-slow">https://fasterthanli.me/articles/why-is-my-rust-build-so-slow)</a></p><h3>Summary</h3><p>This extensive blog post investigates compilation time issues for a Rust project. It shows multiple techniques for how to profile the compiler itself, decompose the compilation process into manageable pieces, and measure how long each piece takes and why. It's full of images, code snippets, and descriptions of concrete tools you can use. The article's conclusion is not really any single breakthrough, but rather honest advice to apply all the extensive techniques above if you're unsatisfied with your Rust build times.</p><h3>Commentary</h3><p>Compared to an average technical blog post, this one is a hog &#8211; in a purely positive sense! It can easily take a skilled reader half an hour to read through it, and it's probably a good idea to digest it in three or four parts, taking breaks from the screen to avoid dizziness and diplopia.</p><p>This is a positive trait because it makes the article stand out. Many tech articles try to squeeze as much information as possible into 4 to 6 minutes of reading. And that&#8217;s fair, considering the average attention span of a human being raised on smartphones rather than playing outside all day with occasional cartoon breaks. Yet, a long article will appeal to the old school folks who were once capable of reading a book in a single sitting.</p><p>The article has a unique style featuring the author's alter ego, Cool Bear, who regularly adds short humorous comments &#8211; keeping the reader engaged throughout the (lengthy) reading process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r7cE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r7cE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 424w, https://substackcdn.com/image/fetch/$s_!r7cE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 848w, https://substackcdn.com/image/fetch/$s_!r7cE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 1272w, https://substackcdn.com/image/fetch/$s_!r7cE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r7cE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png" width="955" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:955,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r7cE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 424w, https://substackcdn.com/image/fetch/$s_!r7cE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 848w, https://substackcdn.com/image/fetch/$s_!r7cE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 1272w, https://substackcdn.com/image/fetch/$s_!r7cE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecc71419-e512-4dd5-83f5-53c0347d605e_955x462.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h6><strong>Figure 8.1 This article highlights insights from the author&#8217;s alter ego, Cool Bear &#8211; sometimes in dialog with the author&#8217;s own interior monologue.</strong></h6><p>This type of a bug hunting blog post also serves as an encyclopedia of techniques for debugging the Rust compiler. I have it bookmarked, just in case I ever need to refresh my knowledge of how to measure linking times in my projects. The conclusion is also quite unconventional: instead of building tension and finally presenting readers with a surprise solution, it's simply an honest summary with encouragement to reach out.</p><h2>8.3.3 How a Single Line of Code Made a 24-core Server Slower Than a Laptop</h2><p><strong>Author:</strong> Piotr Ko&#322;aczkowski</p><p><strong>Source:</strong> Piotr Ko&#322;aczkowski&#8217;s Blog (<a href="https://pkolaczk.github.io/server-slower-than-a-laptop/">https://pkolaczk.github.io/server-slower-than-a-laptop/</a>)</p><h3>Summary</h3><p>The blog post describes how local benchmarks detected a bottleneck on machines with lots of CPU cores. The author shares a performance analysis, performs some profiling, then offers a few explanations of how modern CPUs work under the hood and how the processor caches manage memory. The suggested fix is a natural consequence of the conclusions reached earlier in the article: minimizing the amount of state shared between processor units eliminates the bottleneck.</p><h3>Commentary</h3><p>This is another stellar example of a bug hunting blog post. Its title is a little clickbaity, but still elegant enough to avoid being rejected by the average ad-blocking software. The technical details are much more universally understood than the ones in Chojnowski&#8217;s NUMA blog post (described earlier in this section).</p><p>The article is sneakily educational, digressing on things like "How many nanoseconds does L3 cache access take on average on Intel Xeon." That's great practice; it leaves those details imprinted in readers' minds without them realizing it. Who knows &#8211; maybe one day that tucked-away tip might help fix a performance bug in another project. Overall, the article leaves readers satisfied with the result, and also a tiny bit smarter in the field of CPU architecture and performance.</p><h2>8.3.4 Lessons from Debugging a Tricky Direct Memory Leak</h2><p><strong>Author:</strong> Sanchay Javeria</p><p><strong>Source:</strong> Pinterest Engineering Blog (<a href="https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2">https://medium.com/pinterest-engineering/lessons-from-debugging-a-tricky-direct-memory-leak-f638c722d9f2</a>)</p><h3>Summary</h3><p>Pinterest's development team shares their experience hunting a stream processing code memory leak that led to cascading failures in their distributed system. It goes over debugging techniques for the Java environment and then finally pinpoints a bug in application code that caused the memory leak.</p><h3>Commentary</h3><p>This is a classic bug hunting article &#8211; so much so that it could be used as a blog post template for hunting down almost any issue in Java code. It contains the customary investigation steps, along with screenshots from observability tools. Also following custom, the culmination paragraph is called "The Fix." It explains that the culprit was yet another memory leak issue caused indirectly by garbage collection mechanisms in Java. Hint: It always is!</p><p>In this context, the conclusion isn't really an earth-shattering breakthrough, but it definitely meets the readers' expectations. I bet the majority of the readers think "Ah, I knew it from the start" right after learning the root cause.</p><h2>8.3.5 ZFS Is Mysteriously Eating My CPU</h2><p><strong>Author: </strong>Brendan Gregg</p><p><strong>Source: </strong>Brendan Gregg&#8217;s Blog (<a href="https://www.brendangregg.com/blog/2021-09-06/zfs-is-mysteriously-eating-my-cpu.html">https://www.brendangregg.com/blog/2021-09-06/zfs-is-mysteriously-eating-my-cpu.html</a>)</p><h3>Summary</h3><p>The blog post describes a hunt for the cause of mysterious higher-than-expected CPU usage. It shows how to narrow the candidates down to a single function call with analysis tools and concludes with a surprising performance bug in ZFS &#8211; a file system implementation.</p><h3>Commentary</h3><p>The title itself is captivating, but then something in the URL jumps out at you: it's by Brendan Gregg, the flame graph inventor! This is a prime example of why personal brand matters so much. When I see &#8220;Brendan Gregg,&#8221; I immediately assume that the article is interesting &#8230; and I wasn't mistaken in the slightest.</p><p>Given Gregg&#8217;s expertise, the problem analysis naturally involved flame graphs. The root cause is quite a surprise, and Gregg described it in a very informal and funny manner. The blog post is also very concise: a three-minute read, even if you reserve some time upfront to look at the flame graph screenshots. It clearly shows that you don't need to write thousands of words to squeeze in lots of knowledge, tips, and interesting technical details.</p><div class="pullquote"><p>See more recent &#8220;Bug Hunt&#8221; blog posts <a href="https://writethat.blog/?pattern=bug%20hunt">on writethat.blog</a></p></div><h1>8.4 Characteristics</h1><p>Bug Hunt blog posts can vary as wildly as the actual bug hunts &#8211; but they tend to share the following characteristics:</p><ul><li><p>They recount the story chronologically, from the moment the evil bug manifested itself, to when it was pronounced dead</p></li><li><p>They focus primarily on the thrill (and pain) of the hunt</p></li><li><p>They freely share the evidence collected along the hunt so readers can put on their detective hats and play along</p></li><li><p>They&#8217;re largely geared to experienced developers who know the technologies being discussed (or are ready to learn as they go)</p></li><li><p>They offer technical nuggets that could be interesting now, lifesaving later</p></li></ul><p>Let&#8217;s examine each in turn.</p><h2>8.4.1 Crafted chronologically</h2><p>Bug hunting blog posts often follow a specific structure since they are the technological equivalent of detective stories. (If you want an intro or refresher on the structure of a detective story, generative AI does a decent job here). The introduction paragraph does not reveal too many details and certainly does not provide a spoiler on the solution. Often, they just elaborate on the (properly mysterious) title with a few more words.</p><p>Once the problem is defined, the hunt begins, usually with a few failed (but educational) attempts. The tension builds until the author reaches their aha moment, which is followed by the fix description (and that section is customarily titled "The Fix"). After the solution is revealed, the blog post concludes by describing preventive measures to stop this bug from recurring &#8211; and often a concise apology to any affected users.</p><h2>8.4.2 Heavy on the hunt</h2><p>The meatiest part of the article is the path towards identifying the issue. Spending around 80% of the post explaining the investigation process is a good rule of thumb. For example, here&#8217;s how much time each of the example blog posts above spent on the investigation (based on word count):</p><ul><li><p><strong>Chojnowski:</strong> 85% hunt</p></li><li><p><strong>Wenger:</strong> 83% hunt</p></li><li><p><strong>Ko&#322;aczkowski:</strong> 83% hunt</p></li><li><p><strong>Javeria:</strong> 82% hunt</p></li><li><p><strong>Gregg:</strong> 93% hunt</p></li></ul><h2>8.4.3 Evidence everywhere</h2><p>Bug hunt blog posts are usually full of forensic evidence. Readers want to see flame graphs, numbers, charts, scripts, and code samples. This lets them step into your detective shoes and try to figure out the riddle before the big reveal.</p><p>For example, here&#8217;s some of the evidence shown in the example blog posts:</p><ul><li><p><strong>Chojnowski:</strong> Database monitoring graphs (writes per shard), network and disk performance graphs, CPU stats, flame graphs and instruction-level breakdowns, the CPU&#8217;s performance measuring monitoring unit (PMU) events, and a variety of attempted code fixes</p></li><li><p><strong>Wenger:</strong> Cargo build timings, a timeline of compilation units, CPU usage and concurrency graphs, debug information, flame graphs, tracing through Chromium and Perfetto, attempted code fixes, dependency graphs</p></li><li><p><strong>Ko&#322;aczkowski: </strong>A look at the benchmarking tool&#8217;s design, throughput results (on his 4-core laptop vs. a 24-core server), flame graphs</p></li><li><p><strong>Javeria:</strong> Out-of-memory error details, backpressure tests, and multiple forays into memory monitoring</p></li><li><p><strong>Gregg:</strong> Flame graphs (of course!), ZFS mount details, arcstats, and all the source code, via a GitHub link</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FAM8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FAM8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 424w, https://substackcdn.com/image/fetch/$s_!FAM8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 848w, https://substackcdn.com/image/fetch/$s_!FAM8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!FAM8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FAM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png" width="1157" height="1600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1600,&quot;width&quot;:1157,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FAM8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 424w, https://substackcdn.com/image/fetch/$s_!FAM8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 848w, https://substackcdn.com/image/fetch/$s_!FAM8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!FAM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3a13ea5-18ce-4266-ac3e-5230ba696ac3_1157x1600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h6><strong>Figure 8.2 Example of an eye-catching flame graph. You can interact with this flame graph at <a href="https://scyllabook.sarna.dev/perf/fg-before.svg">https://scyllabook.sarna.dev/perf/fg-before.svg</a></strong></h6><p>Flame graphs are particularly common across bug hunting blog posts. They offer a great way to visualize your debugging and performance profiling process. And they&#8217;re interactive &#8211; users can zoom in to the interesting parts, filter out only the events that match a particular regular expression, and much more. Flame graphs can be created from the output of popular tools, such as Linux's perf profiler or Rust's cargo flame graph command.</p><h2>8.4.4 Expert friendly</h2><p>Bug hunting articles tend to be expert friendly. The author usually assumes that the audience is proficient (or at least familiar) with the technological stack used in the article. Code samples and scripts shared in the article are typically targeted to readers who are familiar with the programming languages used. These types of posts aren&#8217;t conducive to basic explanations of core language concepts; if the reader doesn&#8217;t &#8220;get it,&#8221; they might need to soldier through it or just move on.</p><p>This is distinctly different than in other blog post patterns, such as &#8220;We Rewrote It in X&#8221; (discussed in Chapter 9). Blog posts in that pattern are more appropriate for those just getting started with the given technology and often include an &#8220;Introduction to the New Language&#8221; section.</p><h2>8.4.5 Educational</h2><p>Blog posts following this pattern can be quite educational for developers beyond the impacted team. The meaty part, bug identification, is abundant in details about how to inspect similar issues. Even more importantly, these sections are abundant in reproducible details: ones that are likely to be useful for solving all kinds of similar problems that readers might face in the future. The blog post serves its purpose if it leaves the reader equipped with a few more tricks they can apply, just in case they ever encounter a similar bug at some point in their life.</p><p>For example, here&#8217;s a high-level view of what readers could learn from each of our example blog posts:</p><ul><li><p><strong>Chojnowski:</strong> The kinds of issues you might encounter with complex memory architecture (NUMA), especially with ARM processors</p></li><li><p><strong>Wenger:</strong> Ways to improve your Rust build times</p></li><li><p><strong>Ko&#322;aczkowski:</strong> How modern CPUs work under the hood and how the processor caches manage memory</p></li><li><p><strong>Javeria:</strong> Java is evil</p></li><li><p><strong>Gregg:</strong> How to apply analysis tools like an absolute expert</p></li></ul><h1>8.5 Dos and don'ts</h1><p>The best blog posts are born from the most torturous bug hunts. Driven by the glorious feeling of finally solving the mystery, strike while the iron is hot. Write your impressions before the high of the hunt wears off and help your peers solve their next case faster.</p><p>Here are some tips for writing your own Bug Hunt blog post.</p><h2>8.5.1 Check if anyone (your boss, your boss's lawyers) will be upset by your transparency</h2><p>This is especially important if you hunted a bug that had a notable impact on users &#8211; or if the disclosure of this bug could negatively impact your company&#8217;s reputation and/or the all-important stock price. Open-source or source-available projects usually don&#8217;t impose any legal considerations (except maybe trying to avoid getting your code infected with one of the GPL licenses and its "copyleft" terms). Not all code is open-source though.</p><p>Before you publish code snippets of your heavily guarded corporate secrets, make sure that your boss and any interested parties are fine with it. Even if you skip the code, your superiors still may be averse to making certain information public, especially if the bug was related to security, or ended with an unfortunate data leak. Use this rule of thumb: Ask first, write and publish later.</p><h2>8.5.2 Do a technical deep dive</h2><p>Technical details are a must in any, well, <em>technical </em>blog post. If your article lacks details like code samples, specs on the exact technology used, step-by-step instructions, etc., many readers will leave unsatisfied. Even worse, they might doubt your integrity. Perhaps the inconvenient bits were deliberately omitted to make the product look better? If you worry that you might be adding too many technical details, err on the side of more. Readers can always skip over them if they don't find them interesting.</p><p>Bug hunting blog posts are especially expected to be loaded with tips, tricks, code, benchmark results, as well as links to open-source repositories and documentation. Otherwise, you rob readers of the fun opportunity to draw their own conclusions from the copious evidence. As noted earlier, it's fine to be expert-friendly here. You can assume that the audience is either already familiar with the technology described, or willing to catch up (with the help of your blog post).</p><h2>8.5.3 Be brutally honest about all your failures</h2><p>Your failures and misery provide readers with the cathartic effect that brought them to your blog post in the first place! They also give rise to the most educational aspect of bug hunting articles. After all, it's great to learn from mistakes, but it's even better to learn from somebody else's mistakes first.</p><p>Bug hunting blog posts are usually written after the root cause has been identified and the bug fixed. The more pain and suffering are described in the first paragraphs, the better the final breakthrough looks. Readers who struggle with similar issues are going to actively search the Internet for descriptions of similar problems, so all the sorrowful keywords like "broken," "fault," or "FUBAR" serve dual purposes &#8211; they're an emotional outlet for the author's frustration, plus they also make the blog post easier to find online.</p><p>Don't try to convey a perfect, pristine bug hunt. Dead ends and failed attempts bring in tons of educational value. Programmers (which is of course a synonym for &#8220;great minds&#8221;) think alike. That means some readers could get stuck in the same dead ends &#8211; unless they read your cautionary tale first.</p><h2>8.5.4 Include numbers, benchmarks, metrics, and flame graphs</h2><p>Benchmark results, metrics, and all kinds of numbers are the equivalent of clues and proofs from the detective fiction world. Bug hunting blog posts look less legit if they use vague phrasing like "our system is now much faster." Readers will immediately think "Yeah, but how much faster?" followed by "Dear author, if you were <em>really </em>proud of the results, then you would have posted them&#8230;" Screenshots from your metrics (or even better, interactive figures like flame graphs) catch readers' eyes, making the article both more credible and more enjoyable to read.</p><h2>8.5.5 Don't give away too much, too soon &#8211; keep the tension building</h2><p>For most blog posts, we recommend sharing the TL;DR early on so readers can quickly decide if they want to continue. Not here! With bug hunt blog posts, avoid spoilers at all costs! The tension should be patiently built until the aha moment occurs, and the fix is revealed. This is key for allowing readers (those not in a hurry, at least) to vicariously experience the thrill of the hunt, with all its twists and turns. They probably already suspect that the article concludes with a happy ending, because otherwise it wouldn't be published. But aren't most detective stories like that anyway?</p><h2>8.5.6 Don&#8217;t make overeager readers hunt too hard for the fix</h2><p>That being said, some readers will get impatient. Maybe they drew their own conclusion after just a few paragraphs and want the immediate gratification of confirming that they got it right, right away, unlike silly old you. Maybe this is the twelfth Java bug hunting blog post they&#8217;ve come across this month and they want to see if this is yet another one where the garbage collector is ultimately to blame. Be kind and mark &#8220;the fix&#8221; with a nice prominent heading so they can skip ahead to the smoking gun.</p><p>As a bonus, having a clearly labeled fix is also helpful to those who are returning to your blog post because they&#8217;re now suffering a similar problem. Back when they were reading this for fun, they enjoyed following along with the thrill of your hunt. But now that the tables have turned, they want to go straight to your fix and see if it will save them in their own moment of despair.</p><h2>8.5.7 Add breaking points wherever necessary</h2><p>Bug hunt articles can get long, especially if you&#8217;re covering every little twist and turn (as you absolutely should!) If you end up writing a blog post that will take over 20 minutes or so to read, consider adding a few clear breaking points for readers, in case they opt to consume your article in more than one sitting.</p><p>For example, you could provide a short recap of the progress of the investigation so far. You might add an explicit note that the steps described above led to a dead end, leading to a new thesis. Or you could simply use subheadings like &#8220;Phase 3,&#8221; subliminally suggesting to the reader that it's fine to take a short coffee break here without losing context.</p><h2>8.5.8 Don't suck the life out of it</h2><p>Readers aren't here to read an official failure report. The captivating bits are the personal story, the struggle, and the final joy of figuring out what was wrong. The best bug hunting blog posts use an informal conversational tone, and anecdotes are very much welcome.</p><p>Narrate it from your personal point of view. Don&#8217;t hesitate to share what was going through your mind as the mystery unfolded. Also, rants are borderline mandatory and expected &#8211; in reasonable doses, of course. Deep down, most humans enjoy reading about other people&#8217;s frustrations and feeling the indirect relief that it didn't happen to them (yet).</p><p>The &#8220;building tension&#8221; and &#8220;providing full access to clues&#8221; approaches detailed above are two fundamental ways to keep readers engaged (yes, they <em>are </em>shamelessly stolen from real detective stories). In addition, you might want to:</p><ul><li><p>Write in an extremely casual tone, sacrificing &#8220;proper&#8221; grammar as needed to keep it conversational</p></li><li><p>Create a faux dialog with the reader: ask them questions so they&#8217;re encouraged to step back and form their own hypotheses (which you will proceed to confirm or disprove)</p></li><li><p>Write as if you&#8217;re in the thick of the hunt (e.g., &#8220;Let&#8217;s see if &#8230;&#8221; vs. &#8220;Then we checked if&#8230;&#8217;&#8217;)</p></li><li><p>Share exactly what popped into your head (no matter how silly it seems in retrospect) as you encountered each new piece of information</p></li><li><p>Explicitly call out critical moments like &#8220;plot twist,&#8221; &#8220;dead end,&#8221; and &#8220;the aha moment&#8221; to ensure readers are in the right mindset at every point</p></li></ul><h2>8.5.9 Don't forget to thank those who helped along the hunt</h2><p>The most important reason for publicly acknowledging your collaborators is pure kindness. Bug hunts are among the most infuriating parts of computer programming, and misery loves company. Your collaborators probably made the pain a bit less excruciating; if you appreciate that at all, do thank them here. For the not-so-empathetic folks, there are also pragmatic (read: selfish) reasons for thanking your collaborators. Your acknowledgment could make them more likely to assist in the next bug hunt. Also, if you name someone in a blog post, you can pretty much guarantee that they will read it &#8211; and maybe they will even share it. And perhaps someone they know will be the person to start it trending on Hacker News.</p><h2>8.5.10 Extrapolate</h2><p>Feel free to extrapolate from specific errors (e.g., "Our Rust code had a bug") into more general issues (e.g., "Rust standard library makes it easy to deadlock in this particular use case.") Bug hunting blog posts are also opportunities to shine some light on pain points you have with a particular technology. You&#8217;ve managed to attract a captive audience, interested in what you have to say. Why not take advantage of that? If you noted something particularly problematic with the language or library you used, bite the bullet and suggest that something should be fixed upstream. Programming language and library maintainers appreciate constructive criticism that helps improve their projects.</p><h1>8.6 Summary</h1><ul><li><p>Writing a bug hunting article serves to share knowledge, raise awareness about bugs you encountered, and showcase your achievements</p></li><li><p>A bug hunting blog post targets a technical audience, from experts to enthusiasts, usually assuming (at least) intermediate knowledge of the terminology</p></li><li><p>Bug hunting blog posts are typically heavy on investigative details, showcasing technical evidence in the form of numbers, benchmarks, results, and graphs</p></li><li><p>Top tips:</p><ul><li><p>Check for transparency issues</p></li><li><p>Do a technical deep dive</p></li><li><p>Be brutally honest</p></li><li><p>Include numbers and benchmarks</p></li><li><p>Avoid spoilers</p></li><li><p>Clearly mark &#8220;the fix&#8221;</p></li><li><p>Make it personal</p></li><li><p>Thank your collaborators</p></li></ul></li></ul><p>***</p><p>You can preview more of the book <a href="https://www.manning.com/books/writing-for-developers?utm_source=sarna&amp;utm_medium=affiliate&amp;utm_campaign=book_dunlop_writing_5_16_24&amp;a_aid=sarna&amp;a_bid=33a8dae6&amp;chan=mm_twitter">on the Manning site</a> (don&#8217;t miss the <a href="https://livebook.manning.com/book/writing-for-developers/front-matter">foreword by Bryan Cantrill</a> and <a href="https://livebook.manning.com/book/writing-for-developers/afterword">afterword by Scott Hanselman</a>). Please note that the words get scrambled at some seemingly arbitrary point beyond our control. Sorry! &#175;\_(&#12484;)_/&#175;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/scynthiadunlop/WritingForDevelopersBook" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:&quot;https://github.com/scynthiadunlop/WritingForDevelopersBook&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!CqP3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!CqP3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafdeef5f-0af1-4dd2-88ef-14caa0ddd10e_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item></channel></rss>