{
    "archive_path": "archive/1754260105.414214",
    "base_url": "notashelf.dev/posts/curse-of-knowing",
    "basename": "curse-of-knowing",
    "bookmarked_date": "2025-08-03 22:28",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/notashelf.dev/posts/curse-of-knowing",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=notashelf.dev",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": null
    },
    "domain": "notashelf.dev",
    "downloaded_at": "2025-08-03T22:28:29.460740+00:00",
    "downloaded_datestr": "2025-08-03 22:28",
    "extension": "",
    "hash": "9T6VEDBV2J06B638T3P6",
    "history": {
        "archive_org": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://web.archive.org/save/https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-08-03T22:29:28.975210+00:00",
                "index_texts": null,
                "output": "ArchiveError: Failed to find \"content-location\" URL header in Archive.org response.",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:29:28.573472+00:00",
                "status": "failed"
            }
        ],
        "dom": [
            {
                "cmd": [
                    "/usr/bin/chromium-browser",
                    "--proxy-server=socks5://tor-socks-proxy:9150",
                    "--disable-features=DarkMode",
                    "--run-all-compositor-stages-before-draw",
                    "--hide-scrollbars",
                    "--autoplay-policy=no-user-gesture-required",
                    "--no-first-run",
                    "--use-fake-ui-for-media-stream",
                    "--use-fake-device-for-media-stream",
                    "--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'",
                    "--headless=new",
                    "--no-sandbox",
                    "--no-zygote",
                    "--disable-dev-shm-usage",
                    "--disable-software-rasterizer",
                    "--disable-sync",
                    "--window-size=1440,2000",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "--user-data-dir=/data/personas/Default/chrome_profile",
                    "--profile-directory=Default",
                    "--dump-dom",
                    "https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "131.0.6778",
                "end_ts": "2025-08-03T22:28:46.893054+00:00",
                "index_texts": null,
                "output": "output.html",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:28:39.643923+00:00",
                "status": "succeeded"
            }
        ],
        "favicon": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://www.google.com/s2/favicons?domain=notashelf.dev"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-08-03T22:28:33.822617+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:28:30.658553+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-08-03T22:28:34.484465+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:28:33.867947+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [
            {
                "cmd": [
                    "(internal) archivebox.extractors.htmltotext",
                    "./{singlefile,dom}.html"
                ],
                "cmd_version": "0.8.5rc51",
                "end_ts": "2025-08-03T22:29:18.714092+00:00",
                "index_texts": [
                    "The Curse of Knowing How, or; Fixing Everything | Blog (/favicon.ico) ({title}) (https://notashelf.dev/rss.xml) (/_astro/_slug_.CdnucSYz.css) (/_astro/_slug_.DXGJWBzG.css) (/_astro/Banner_astro_astro_type_style_index_0_lang.BqnAOz0C.css)  (/) Index  (/posts) Posts  (/about) About  (/privacy) Privacy    The Curse of Knowing How, or; Fixing Everything April 24, 2025 11 min read (https://github.com/notashelf/notashelf.dev/blob/b165808/apps/notashelf.dev/posts/curse-of-knowing.md) (View Markdown Source)   Source   thoughts programming software   Table of Contents Technical Capability as a Moral Weight  One Must Imagine Sisyphus Happy  Entropy Is Undefeated  The Illusion of Finality  Technical Work as Emotional Regulation  The Burnout You Don\u2019t See Coming  Learning to Let Go  A New Kind of Skill  Post-Mortem  Footnotes     In Appreciation  (Close)      If you have a second to spare, please see the post-mortem section below.   It starts innocently. You rename a batch of files with a ten-line Python script, or you alias a common git command to shave off two keystrokes. Maybe you build a small shell\nfunction to format JSON from the clipboard. You\u2019re not even trying to be clever. You\u2019re just solving tiny problems. Making\nthe machine do what it should have done in the first place. And then something\nhappens. You cross a threshold . You look at your tools, your environment, your\noperating system\u2014even your editor\u2014and suddenly everything is fair game. You could rebuild that (if you wanted to).You could improve that (if you wanted to). Then someone challenges you. As banter maybe, perhaps jokingly but also with a\ndash of hope. Then the air in the room changes. It suddenly becomes something else. It becomes: You should . And from that moment forward, the world is broken in new and specific ways that\nonly you can see. Technical Capability as a Moral Weight Before I could program, broken software was frustrating but ignorable. For years\nI\u2019ve simply \u201cused\u201d a computer, as a consumer. I was what companies were\nconcerned with tricking into buying their products, or subscribing to their\nservices. Not the technical geek that they prefer to avoid with their software\nreleases, or banning from their games based on an OS. Now it has become provocative . I can see the patterns that I wish I couldn\u2019t,\nfind oversights that I can attribute to a certain understanding (or the lack\nthereof) of a certain concept and I can hear what has been echoing in the head\nof the computer illiterate person who conjured the program I have to debug. I notice flaws like a good surgeon notices a limp.Why the hell does this site send ten megabytes of JavaScript for a static\npage?Why is the CLI output not parseable by awk ?Why is this config hardcoded when it could be declarative? Those things are not just questions, they are accusations . And,\nunfortunately, they do not stop. Now that I\u2019ve learned to notice, my perception of software has changed in its\nentirety. Every piece of software becomes a TODO list.Every system becomes a scaffolding for a better one.Every inconvenience becomes an indictment of inaction. One Must Imagine Sisyphus Happy Like Camus\u2019 Sisyphus, we are condemned to push the boulder of our own systems\nuphill\u2014one fix, one refactor, one script at a time. But unlike the story of\nSisyphus, the curse is not placed onto you by some god. We built the boulder\nourselves. And we keep polishing it on the way up. I\u2019ve lost count of how many projects I have started that began with some\nvariation of \u201cYeah, I could build this but better .\u201d A static site generator because the existing ones had too many opinions. A note-taking tool because I didn\u2019t like the way others structured metadata. A CLI task runner because Make is cryptic and Taskfile is YAML hell. A personal wiki engine in Rust, then in Go, then in Nim, then back to\nMarkdown. A homelab dashboard because I don\u2019t like webslop.  The list continues, and trust me it does continue. My dev directory, as it\nstands, is nearing 30 gigabytes. If you ask me, I was solving real, innocent problems. But in hindsight, I was\nalso feeding something else: a compulsion to assert control. Every new tool I\nbuilt was a sandbox I owned : No weird bugs. No legacy constraints. No\ndecisions I didn\u2019t entirely agree with. Until, of course, I became the legacy. Kafka once wrote that \u201ca cage went in search of a bird .\u201d 1  That is what\nthese projects can become. Empty systems we keep building, waiting for purpose,\nfor clarity, for\u2026 salvation? I\u2019m not sure how else would you call this\npursuit. Entropy Is Undefeated Now let\u2019s go back. Back to when we didn\u2019t know better. Software doesn\u2019t stay solved. Every solution you write starts to rot the moment\nit exists. Not now, not later, but eventually. Libraries deprecate. APIs change.\nPerformance regressions creep in. Your once-perfect tool breaks silently because libfoo.so is now libfoo.so.2 . 2   I have had scripts silently fail because a website changed its HTML layout.I have had configuration formats break because of upstream version bumps.I have had Docker containers die because Alpine Linux rotated a mirror URL. In each case, the immediate emotional response was not just inconvenience but\nsomething that moreso resembles guilt . I built this, and I do know better. How\ncould I not have foreseen this? Time to fix it. If you replace every part of the system over time, is it still the same tool?\nDoes it still serve the same purpose? Do you ? The Illusion of Finality I think we lie to ourselves. \u201cIf I just get this setup right, I\u2019ll never have to touch it again.\"\"If I just write this one tool, my workflow will be seamless.\"\"If I automate this, I\u2019ll save time forever.\u201d 3  \u201cWrite once, run everywhere.\u201d My ass.  It is, I admit, a seductive lie. It frames programming as a conquest of sorts. A\nseries of battles you win, or challenges you complete. But the imaginary war\nnever ends. You don\u2019t build a castle. You dig trenches. And they flood every\ntime it rains. The trials are never complete. Technical Work as Emotional Regulation On the theme of filling this post with literary references, let me quote the\nStoic Marcus Aurelius. You have power over your mind\u2014not outside events. Realize this, and you will\nfind strength.  But programming lures us into believing we can control the outside events.\nThat is where the suffering begins. There is something deeper happening here.\nThis is not just about software. I believe sometimes building things is how we self-soothe. We write a new tool\nor a script because we are in a desperate need for a small victory. We write a\nnew tool because we are overwhelmed. Refactor it, not because the code is messy,\nbut your life is. We chase the perfect system because it gives us something to\nhold onto when everything else is spinning. This is the lesson I\u2019ve taken from\nusing (https://nixos.org) NixOS . I have written entire applications just to avoid thinking about why I was\nunhappy. Programming gives you instant feedback. You run the thing, and it\nworks. Or it doesn\u2019t , and you fix it. Either way, you\u2019re doing something . That kind of agency is addictive. Especially when the rest of life doesn\u2019t offer\nit. We program because we can , even when we shouldn\u2019t. Because at least it\ngives us something to rebel against. The Burnout You Don\u2019t See Coming Burnout does not just come from overwork. It comes from overresponsibility . And programming, once internalized deeply enough, makes everything feel like\nyour responsibility. The bloated website. The inefficient script. The clunky\nonboarding process at your job. You could fix it. So why aren\u2019t you? The truth you are very well aware of is that you can\u2019t fix it all. You know this, you always knew it regardless of your level of skill. But try telling that\nto the part of your brain that sees every inefficiency as a moral failing. Nietzsche warned of gazing too long into the abyss. But he did not warn what\nhappens when the abyss is a Makefile or a 30k line of code Typescript project. Learning to Let Go So where is the exit? Is this akin to Sartre\u2019s depiction of hell, where hell is other people and how they interact with your software? Or is it some weird\nbackwards hell where people create software that you have to interact with? The first step is recognizing that not everything broken is yours to fix .Not every tool needs replacing.Not every bad experience is a call to action. Sometimes, it\u2019s OK to just use the thing. Sometimes it\u2019s enough to know why it\u2019s broken\u2014even if you don\u2019t fix it. Sometimes the most disciplined thing you\ncan do is walk away from the problem you know how to solve. There\u2019s a kind of\nstrength in that. Not apathy, no. Nor laziness. Just\u2026 some restraint. A New Kind of Skill What if the real skill isn\u2019t technical mastery? Or better yet what if it\u2019s\nemotional clarity? Knowing which problems are worth your energy. Knowing which projects are worth maintaining. Knowing when you\u2019re building to help\u2014and when you\u2019re building to cope. Knowing when to stop.  This is what I\u2019m trying to learn now. After the excitement. After the obsession.\nAfter the burnout. I\u2019m trying to let things stay a little broken. Because I\u2019ve\nrealized I don\u2019t want to fix everything . I just want to feel OK in a world\nthat often isn\u2019t. I can fix something, but not everything. You learn how to program. You learn how to fix things. But the hardest thing\nyou\u2019ll ever learn is when to leave them broken . And maybe that\u2019s the most human skill of all. Post-Mortem As of 6th of May, this post (https://news.ycombinator.com/item?id=43902212) has blown up on Hackernews .\nFirst of all, thank you all for your support and the kind words that I have received on various platforms. This post\nwas not written with any other intention than getting some things off my chest and off my mind, but it was humbling\nto see that it resonated with many different people of various origins. What surprised me the most was that it seems\nto resonate people outside the field of tech as well, so it seems the problem is not as exclusive to something as\n\u201carcane\u201d as programming. Thank you also to those who were kind enough to point out small technical flaws in the site\nthat I now feel compelled to fix, and those who pointed out small typos I\u2019ve forgotten to push after storyboarding. It was also quite valuable in the sense that I was able to see my webserver configuration is in fact able to handle\nlots of traffic. There was no downtime aside from a small hiccup after I messed up a configuration option while trying\nto relax my ratelimits to give the influx of readers a nicer experience. Lastly, thank you all that left their insight about the post itself (my writing, etc.) as comments on Hackernews or\nlobste.rs. I have no doubt missed some, but know that it matters a lot to me. Of course, feel free to contact me directly\nvia e-mail (or any other method you prefer as detailed in (/about) the about page ) to let me know what could be better. Thank you, and all the best! \u2014raf Footnotes From, I believe, Kafka\u2019s The Zurau Aphorisms . \u21a9   Nix solves this. Or does it? Nix was a can of worms of its own. \u21a9   Remember when you spent 2 hours automating a 30 minute task? Yeah, it\u2019s\nthat again. \u21a9      (/posts)   Back to all posts      (https://github.com/notashelf) GitHub    (https://twitter.com/notashelf) Twitter    (/rss.xml) RSS Feed     (https://nixwebr.ing/prev/notashelf) (Previous site in the Nix webring)    (https://nixwebr.ing/rand) (Visit a random site in the Nix webring) (Nix Webring)  This site is part of the (https://nixwebr.ing) Nix webring  . Click the logo to visit a random site.   (https://nixwebr.ing/next/notashelf) (Next site in the Nix webring)       development  \u00a9 2024-2025 NotAShelf       "
                ],
                "output": "htmltotext.txt",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:29:18.569192+00:00",
                "status": "succeeded"
            }
        ],
        "media": [
            {
                "cmd": [
                    "/usr/local/bin/yt-dlp",
                    "--restrict-filenames",
                    "--trim-filenames",
                    "128",
                    "--write-description",
                    "--write-info-json",
                    "--write-annotations",
                    "--write-thumbnail",
                    "--no-call-home",
                    "--write-sub",
                    "--write-auto-subs",
                    "--convert-subs=srt",
                    "--yes-playlist",
                    "--continue",
                    "--no-abort-on-error",
                    "--ignore-errors",
                    "--geo-bypass",
                    "--add-metadata",
                    "--format=(bv*+ba/b)[filesize<=750m][filesize_approx<=?750m]/(bv*+ba/b)",
                    "--skip-download",
                    "--cache-dir=/data/yt-dlp-cache/",
                    "--cookies=/data/yt-dlp-cache/cookies.txt",
                    "--proxy=socks5://tor-socks-proxy:9150",
                    "--no-playlist",
                    "https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "2024.10.7",
                "end_ts": "2025-08-03T22:29:28.520590+00:00",
                "index_texts": [],
                "output": "media/",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:29:22.811003+00:00",
                "status": "succeeded"
            }
        ],
        "mercury": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/postlight-parser",
                    "https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "2.2.3",
                "end_ts": "2025-08-03T22:29:18.465921+00:00",
                "index_texts": null,
                "output": "mercury/",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:29:10.350714+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/readability-extractor",
                    "/tmp/tmpjqr9y57n",
                    "https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2025-08-03T22:28:55.188847+00:00",
                "index_texts": [
                    "It starts innocently.\nYou rename a batch of files with a ten-line Python script, or you alias a common\ngit command to shave off two keystrokes. Maybe you build a small shell\nfunction to format JSON from the clipboard.\nYou\u2019re not even trying to be clever. You\u2019re just solving tiny problems. Making\nthe machine do what it should have done in the first place. And then something\nhappens. You cross a threshold. You look at your tools, your environment, your\noperating system\u2014even your editor\u2014and suddenly everything is fair game.\nYou could rebuild that (if you wanted to).\nYou could improve that (if you wanted to).\nThen someone challenges you. As banter maybe, perhaps jokingly but also with a\ndash of hope. Then the air in the room changes.\nIt suddenly becomes something else. It becomes:\nYou should.\nAnd from that moment forward, the world is broken in new and specific ways that\nonly you can see.\nTechnical Capability as a Moral Weight\nBefore I could program, broken software was frustrating but ignorable. For years\nI\u2019ve simply \u201cused\u201d a computer, as a consumer. I was what companies were\nconcerned with tricking into buying their products, or subscribing to their\nservices. Not the technical geek that they prefer to avoid with their software\nreleases, or banning from their games based on an OS.\nNow it has become provocative. I can see the patterns that I wish I couldn\u2019t,\nfind oversights that I can attribute to a certain understanding (or the lack\nthereof) of a certain concept and I can hear what has been echoing in the head\nof the computer illiterate person who conjured the program I have to debug.\nI notice flaws like a good surgeon notices a limp.\nWhy the hell does this site send ten megabytes of JavaScript for a static\npage?\nWhy is the CLI output not parseable by awk?\nWhy is this config hardcoded when it could be declarative?\nThose things are not just questions, they are accusations. And,\nunfortunately, they do not stop.\nNow that I\u2019ve learned to notice, my perception of software has changed in its\nentirety.\nEvery piece of software becomes a TODO list.\nEvery system becomes a scaffolding for a better one.\nEvery inconvenience becomes an indictment of inaction.\nOne Must Imagine Sisyphus Happy\nLike Camus\u2019 Sisyphus, we are condemned to push the boulder of our own systems\nuphill\u2014one fix, one refactor, one script at a time. But unlike the story of\nSisyphus, the curse is not placed onto you by some god. We built the boulder\nourselves. And we keep polishing it on the way up.\nI\u2019ve lost count of how many projects I have started that began with some\nvariation of \u201cYeah, I could build this but better.\u201d\n\nA static site generator because the existing ones had too many opinions.\nA note-taking tool because I didn\u2019t like the way others structured metadata.\nA CLI task runner because Make is cryptic and Taskfile is YAML hell.\nA personal wiki engine in Rust, then in Go, then in Nim, then back to\nMarkdown.\nA homelab dashboard because I don\u2019t like webslop.\n\nThe list continues, and trust me it does continue. My dev directory, as it\nstands, is nearing 30 gigabytes.\nIf you ask me, I was solving real, innocent problems. But in hindsight, I was\nalso feeding something else: a compulsion to assert control. Every new tool I\nbuilt was a sandbox I owned: No weird bugs. No legacy constraints. No\ndecisions I didn\u2019t entirely agree with. Until, of course, I became the legacy.\nKafka once wrote that \u201ca cage went in search of a bird.\u201d 1 That is what\nthese projects can become. Empty systems we keep building, waiting for purpose,\nfor clarity, for\u2026 salvation? I\u2019m not sure how else would you call this\npursuit.\nEntropy Is Undefeated\nNow let\u2019s go back. Back to when we didn\u2019t know better.\nSoftware doesn\u2019t stay solved. Every solution you write starts to rot the moment\nit exists. Not now, not later, but eventually. Libraries deprecate. APIs change.\nPerformance regressions creep in. Your once-perfect tool breaks silently because\nlibfoo.so is now libfoo.so.2. 2\nI have had scripts silently fail because a website changed its HTML layout.\nI have had configuration formats break because of upstream version bumps.\nI have had Docker containers die because Alpine Linux rotated a mirror URL.\nIn each case, the immediate emotional response was not just inconvenience but\nsomething that moreso resembles guilt. I built this, and I do know better. How\ncould I not have foreseen this? Time to fix it.\nIf you replace every part of the system over time, is it still the same tool?\nDoes it still serve the same purpose? Do you?\nThe Illusion of Finality\nI think we lie to ourselves.\n\n\u201cIf I just get this setup right, I\u2019ll never have to touch it again.\"\n\"If I just write this one tool, my workflow will be seamless.\"\n\"If I automate this, I\u2019ll save time forever.\u201d 3\n\u201cWrite once, run everywhere.\u201d My ass.\n\nIt is, I admit, a seductive lie. It frames programming as a conquest of sorts. A\nseries of battles you win, or challenges you complete. But the imaginary war\nnever ends. You don\u2019t build a castle. You dig trenches. And they flood every\ntime it rains. The trials are never complete.\nTechnical Work as Emotional Regulation\nOn the theme of filling this post with literary references, let me quote the\nStoic Marcus Aurelius.\n\nYou have power over your mind\u2014not outside events. Realize this, and you will\nfind strength.\n\nBut programming lures us into believing we can control the outside events.\nThat is where the suffering begins. There is something deeper happening here.\nThis is not just about software.\nI believe sometimes building things is how we self-soothe. We write a new tool\nor a script because we are in a desperate need for a small victory. We write a\nnew tool because we are overwhelmed. Refactor it, not because the code is messy,\nbut your life is. We chase the perfect system because it gives us something to\nhold onto when everything else is spinning. This is the lesson I\u2019ve taken from\nusing NixOS.\nI have written entire applications just to avoid thinking about why I was\nunhappy. Programming gives you instant feedback. You run the thing, and it\nworks. Or it doesn\u2019t, and you fix it. Either way, you\u2019re doing something.\nThat kind of agency is addictive. Especially when the rest of life doesn\u2019t offer\nit. We program because we can, even when we shouldn\u2019t. Because at least it\ngives us something to rebel against.\nThe Burnout You Don\u2019t See Coming\nBurnout does not just come from overwork. It comes from overresponsibility.\nAnd programming, once internalized deeply enough, makes everything feel like\nyour responsibility. The bloated website. The inefficient script. The clunky\nonboarding process at your job. You could fix it. So why aren\u2019t you?\nThe truth you are very well aware of is that you can\u2019t fix it all. You know\nthis, you always knew it regardless of your level of skill. But try telling that\nto the part of your brain that sees every inefficiency as a moral failing.\nNietzsche warned of gazing too long into the abyss. But he did not warn what\nhappens when the abyss is a Makefile or a 30k line of code Typescript project.\nLearning to Let Go\nSo where is the exit? Is this akin to Sartre\u2019s depiction of hell, where hell\nis other people and how they interact with your software? Or is it some weird\nbackwards hell where people create software that you have to interact with?\nThe first step is recognizing that not everything broken is yours to fix.\nNot every tool needs replacing.\nNot every bad experience is a call to action.\nSometimes, it\u2019s OK to just use the thing. Sometimes it\u2019s enough to know why\nit\u2019s broken\u2014even if you don\u2019t fix it. Sometimes the most disciplined thing you\ncan do is walk away from the problem you know how to solve. There\u2019s a kind of\nstrength in that.\nNot apathy, no. Nor laziness. Just\u2026 some restraint.\nA New Kind of Skill\nWhat if the real skill isn\u2019t technical mastery? Or better yet what if it\u2019s\nemotional clarity?\n\nKnowing which problems are worth your energy.\nKnowing which projects are worth maintaining.\nKnowing when you\u2019re building to help\u2014and when you\u2019re building to cope.\nKnowing when to stop.\n\nThis is what I\u2019m trying to learn now. After the excitement. After the obsession.\nAfter the burnout. I\u2019m trying to let things stay a little broken. Because I\u2019ve\nrealized I don\u2019t want to fix everything. I just want to feel OK in a world\nthat often isn\u2019t. I can fix something, but not everything.\n\nYou learn how to program. You learn how to fix things. But the hardest thing\nyou\u2019ll ever learn is when to leave them broken.\nAnd maybe that\u2019s the most human skill of all.\nPost-Mortem\nAs of 6th of May, this post has blown up on Hackernews.\nFirst of all, thank you all for your support and the kind words that I have received on various platforms. This post\nwas not written with any other intention than getting some things off my chest and off my mind, but it was humbling\nto see that it resonated with many different people of various origins. What surprised me the most was that it seems\nto resonate people outside the field of tech as well, so it seems the problem is not as exclusive to something as\n\u201carcane\u201d as programming. Thank you also to those who were kind enough to point out small technical flaws in the site\nthat I now feel compelled to fix, and those who pointed out small typos I\u2019ve forgotten to push after storyboarding.\nIt was also quite valuable in the sense that I was able to see my webserver configuration is in fact able to handle\nlots of traffic. There was no downtime aside from a small hiccup after I messed up a configuration option while trying\nto relax my ratelimits to give the influx of readers a nicer experience.\nLastly, thank you all that left their insight about the post itself (my writing, etc.) as comments on Hackernews or\nlobste.rs. I have no doubt missed some, but know that it matters a lot to me. Of course, feel free to contact me directly\nvia e-mail (or any other method you prefer as detailed in the about page) to let me know what could be better.\nThank you, and all the best!\n\u2014raf\n\n\n\nFrom, I believe, Kafka\u2019s The Zurau Aphorisms. \u21a9\n\n\nNix solves this. Or does it? Nix was a can of worms of its own. \u21a9\n\n\nRemember when you spent 2 hours automating a 30 minute task? Yeah, it\u2019s\nthat again. \u21a9"
                ],
                "output": "readability/",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:28:48.762109+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://notashelf.dev/posts/curse-of-knowing"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-08-03T22:28:47.089670+00:00",
                "index_texts": null,
                "output": "The Curse of Knowing How, or; Fixing Everything | Blog",
                "pwd": "/data/archive/1754260105.414214",
                "schema": "ArchiveResult",
                "start_ts": "2025-08-03T22:28:47.030308+00:00",
                "status": "succeeded"
            }
        ],
        "wget": []
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": "ArchiveError: Failed to find \"content-location\" URL header in Archive.org response.",
        "dom": "output.html",
        "favicon": "favicon.ico",
        "git": null,
        "media": "media/",
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "The Curse of Knowing How, or; Fixing Everything | Blog",
        "warc": null,
        "wget": null
    },
    "link_dir": "/data/archive/1754260105.414214",
    "newest_archive_date": "2025-08-03T22:29:28.573472+00:00",
    "num_failures": 1,
    "num_outputs": 8,
    "oldest_archive_date": "2025-08-03T22:28:30.658553+00:00",
    "path": "/posts/curse-of-knowing",
    "schema": "Link",
    "scheme": "https",
    "snapshot_abid": "snp_01K1S0ST878CAA6E26010GVKGA",
    "snapshot_id": "f5e473f7-4d90-463e-8ea2-134e410dce0a",
    "sources": [
        "/data/sources/1754260103-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1754260105.414214",
    "title": "The Curse of Knowing How, or; Fixing Everything | Blog",
    "url": "https://notashelf.dev/posts/curse-of-knowing"
}