Skip to content Skip to footer
0 items - $0.00 0

The curse of knowing how, or; fixing everything by Lunar5227

The curse of knowing how, or; fixing everything by Lunar5227

57 Comments

  • Post Author
    diwash007
    Posted May 6, 2025 at 6:36 am

    nice

  • Post Author
    arlyle
    Posted May 6, 2025 at 6:38 am

    we wont fix things by adding but deleting

  • Post Author
    bflesch
    Posted May 6, 2025 at 6:39 am

    This resonates

  • Post Author
    Nevermark
    Posted May 6, 2025 at 6:43 am

    I have spent some percentage of my life attempting to rewrite all software from first principles up.

    Software is so spectacularly broken. Applications that don’t let me adjust the position of a little button for my work habits. Why is that impossible!?! A global software and commerce system, where you can buy candy or transfer $ billions, both with cute warnings like “Please, oh, please, sir! Please don’t hit the back button!”

    I can sum up the results of my quest quite simply: “The rewrites continue…”

    Is this chasing windmills? The case for that seems solid on the surface, but…

    It is true that every rewrite of a specific set of features, or a platform for enabling better support for efficiently and correctly commingling an open class of features, inevitably runs into trouble. Some early design choice is now evidently crippling. Some aspect can now be seen to have two incompatible implementations colliding and setting off an unnecessary complexity explosion. Etc.

    But on the other hand, virtually every major rewrite points to a genuinely much improved sequel. Whose dikes keeping out unnecessary complexity hold up longer with less finger holes to plug, for a better return. Before its collapse.

    Since there must be a simplest way to do things, at least in any scoped area, we have Lyapunov conditions:

    Continual improvement with a guaranteed destination. A casual proof there is a solution.

    It’s a dangerous phantom to pursue!

    ——

    It would be interesting to compile a list from the heady 90’s, when corporations created boondoggles like Pink and Cyberdog, and had higher aspirations for things like “Object Linking and Embedding”.

    You just don’t see as many romantic technological catastrophes like those anymore. I miss them!

  • Post Author
    throwanem
    Posted May 6, 2025 at 6:46 am

    Welcome to your thirties!

  • Post Author
    esjeon
    Posted May 6, 2025 at 6:47 am

    > Knowing which problems are worth your energy.

    This, but with proper balance. TBH, you can live a happy life if you just stop caring about every technical problem, but that would make you unimaginative and passive. Just make sure your pick a hole (or two) you're gonna die in.

  • Post Author
    maephisto666
    Posted May 6, 2025 at 6:49 am

    Amazing piece of text. Honestly, I saw myself in everything you wrote. The struggle, the attempt to write a single line of code to make it perfect, durable, etc. it never works at the first try…but man the joy of having the control over fixing things… And I also relate with the personal chaos that maybe we tend to fix by fixing our software… I see a lot of this "unfinished" behaviour with other things in my life as well… Cleaning the shed, finishing videogames…. Sometimes even the feeling of having the challenge is enough…I don't even try, because I know it will take time to make it right

  • Post Author
    abhisek
    Posted May 6, 2025 at 6:49 am

    So true. I have tried building from scratch so many times for specific use-cases with my own opinionated experience only to recreate the bloat over time. That’s actually good. The alternative was building something based on momentary spark of creativity that no one, not even me end up using.

  • Post Author
    abstractspoon
    Posted May 6, 2025 at 6:49 am

    Can't disagree with any of that

  • Post Author
    atoav
    Posted May 6, 2025 at 6:52 am

    Some truth in there, but I have to admit that most simple static generators I have written I wrote out of fun and curiosity and not because I thought all existing ones had flaws (even if they did).

    It is okay to do things and abandon them later, that is how we learn. We programmers are multipliers, which gives us special responsibility. If we create a shit tool with a shit workflow that wastes time, we waste time multiplied by the number of users of our software. If we save time or bring joy, the same is true. That can be beautiful and devastating.

    But every software needs to be maintained somehow and maintainability is a technological choice as well. I have an embedded project running for well over a decade without a single maintenance step of either the hard- or the software. I could have built that project also with more dependencies to the outside world, or in more sophisticated ways with more moving parts, but I wanted to not deal with the consequences of that. This choice isn't always easy, but it is a choice. Ask your sysadmin which things worked for the past decades without having to touch them and investigate. Typically it is boring tech with boring choices.

    Another aspect the article does not tackle is that if you know to repair or build many things, people will naturally also come to you asking you to do precisely that. But that again produces maintenance work and responsibility. This is why I like working in education, you can show people how to do it and then it is their project.

  • Post Author
    Melkaz
    Posted May 6, 2025 at 6:59 am

    I'm seeing myself in the text, but one aspect that doesn't seem to be covered enough is the ego.

    I find joy in receiving praise from my colleagues when they have good experiences with my tools.

  • Post Author
    dmichulke
    Posted May 6, 2025 at 6:59 am

    Wow, great piece.

    We are playing software factorio and the winning move is not to play.

  • Post Author
    EZ-E
    Posted May 6, 2025 at 7:21 am

    There is the curse of knowing how, and maybe more importantly there is the curse of other people knowing you know how.

  • Post Author
    walterbell
    Posted May 6, 2025 at 7:22 am

    > I can fix something, but not everything.

      “Calvin: Know what I pray for?
       Hobbes: What?
       Calvin: The strength to change what I can, the inability to accept what I can't, and the incapacity to tell the difference.”
    
        —Bill Watterson (1988)

  • Post Author
    ajuc
    Posted May 6, 2025 at 7:28 am

    Great article. I know it's not the main subject, but I really liked this part:

    > Technical Work as Emotional Regulation

    Men are taught to do that in most societies. You are unhappy – don't bother talking about it (men don't cry), do sth for the society – you'll receive praise in return and your pain will go away for a while. Even if nobody'll praise you – you'll think better of yourself. Same thing that makes our fathers obsessively fix any minor inconveniences around the house instead of going to the doctor with their big health problem.

    Men often laugh at women talking for hours instead of fixing the damn problem (and it is frustrating to observe). But we often do not fix THE damn problem either – we fix other unrelated problems to feel better about the one we fear thinking about.

    What's more tech-specific IMO is the degree to which our egos are propped by our code. Code is the one thing many programmers had going for them when they grew up. It's what made them special. It's what was supposed to pay for all the bullying in school. It's what paid their bills and made them respected. It's very hard not to make code your main source of value.

    People praise "ego-less" programming, and most programmers adhere to the rules (don't get overly defensive, take criticism, allow others to change "your" code, etc.) But that's not actually ego-less programming, it's just hidding your ego in the closet and suffering in silence.

    If you procrastinate when programming – it's because you feel your code reflects on your worth as a human being. It's all ego. Changing what you do won't change that. You need to change what you think.

  • Post Author
    arjvik
    Posted May 6, 2025 at 7:29 am

    These days, knowing that instead of spending hours artfully crafting a solution to something, GPT could code up a far-less-elegant-but-still-working solution in about 5-10 minutes of prompting has all but solved this.

  • Post Author
    nyanpasu64
    Posted May 6, 2025 at 7:30 am

    There's a… sad comparison of this article about over-responsibility, and https://www.benkuhn.net/blub/ about the value of learning about the stack you use (the more you know about the workings of bugs, sometimes the more they gnaw at you).

  • Post Author
    d4rkn0d3z
    Posted May 6, 2025 at 7:33 am

    I think about this from the perpective of change management. Every defect I hope to fix entails a change, which has a certain probability of creating another irksome deficiency or incompatibility. When building complex systems I try to design them with the end state, that you describe very well, in mind.

    Each time you set about to make a single change ask what is the probability (p) that this change results in another change, or track this probability empirically, then compute 1/(1-p) this will tell you how much change you should "expect" to make to realize your desired improvement. If you have n interacting modules compute 1/(1-np). This will quantify whether or not to embark on the refactor. (The values computed are the sum of the geometric series in the probability which represents the expectation value)

    So this is about how we manage change in a complex system in order to align its functionality with a changing environment. I suggest that we can do so by considering the smallest, seemingly innocuous change that you could make and how that change propagates through to the end product.

    In the end, a solution may be to make systems that are easy and painless to change, then you can change them often for the better without the long tail effects that drag you down.

  • Post Author
    figassis
    Posted May 6, 2025 at 7:37 am

    I too suffer from this, but as I learned, Nature built an elegant solution to this. Have a family and kids. Your choice when you have time off of work will be reduced to hacking or playing with your child that you have been neglecting due to a crunch at work.
    You’re welcome.

  • Post Author
    pmkary
    Posted May 6, 2025 at 7:41 am

    This was something I really enjoyed reading, having suffered greatly from the same conditions. It made me realize I’m not alone, and for that I hugely thank you, and everyone else in this thread who commented.

  • Post Author
    Barbing
    Posted May 6, 2025 at 7:58 am

    raf: from grins to smirks, thank you for repeatedly putting the smiles on my face. You know me so well considering we’ve never met. Ever so salient; thanks for (hopefully) course correcting any of my remaining years :)

  • Post Author
    mgaunard
    Posted May 6, 2025 at 8:15 am

    Letting go means stopping to care. That's a slippery slope to coasting.

  • Post Author
    kookamamie
    Posted May 6, 2025 at 8:15 am

    It's good to remember it's a marathon, not a sprint and that everything rots over time.

  • Post Author
    daliboru
    Posted May 6, 2025 at 8:38 am

    I see a similar issue in 2025, but with vibe coding.

    It all boils down to the 3 key factors: speed, quality and cost. And you can't have it all

    Know your trade-offs.

  • Post Author
    foobahhhhh
    Posted May 6, 2025 at 8:39 am

    Glad I'm low enough on the bell curve to not have this problem. If a tool is broken I shrug. Maybe someone will fix it

  • Post Author
    erulabs
    Posted May 6, 2025 at 8:44 am

    Software engineers, I love yall. To see the light at the end of the tunnel. To see some glorious perfect paradigm that maybe could be. I envy you.

    I grew up in a datacenter. Leaky air conditioners and diesel generators. Open the big doors if it gets too hot.

       Now let’s go back. Back to when we didn’t know better.
       Software doesn’t stay solved. Every solution you write starts to rot the moment it exists.
    

    Everything, everywhere, is greasy and lousy and half broken. Sysadmins, we accept that everything is shit from the very beginning.

  • Post Author
    sapht
    Posted May 6, 2025 at 8:49 am

    I'm compulsively drafting ideas along these same lines, but now I don't need to fix that. Wonderful, brilliant text, thank you raf.

  • Post Author
    anthk
    Posted May 6, 2025 at 8:54 am

    Well, with OpenBSD:

    – Updates often don't break things

    – Remind for notes

    – Gopher as my main site

    – Multimarkdown+git for a wiki

    – A web/blog without RSS is not worth your time

    – Nvi can be good enough against vim, entr+make do magic

    – mbsync/msmtp/slrnpull and so work in batch mode, fire mutt and forget

    I don't hack my tools any more. I don't distrohop. CWM, XTerm, MuPDF, GV and friends like Bitlbee do everything well since years. Now I'm focusing in Forth, because in a near future low power microcontrollers and laptop will say a thing or two.

  • Post Author
    thewisenerd
    Posted May 6, 2025 at 8:56 am
  • Post Author
    PixelForg
    Posted May 6, 2025 at 8:56 am

    Hopefully the future me is able to relate to this, because I really feel like I'm in a rut when it comes to working on personal projects.

    I have many ideas that I want to build, but I'd have to learn new languages, yet I just can't sit and go through the documentation every day like I should. Still haven't finished the rust book.

    The other way is start building already, and if you come across a block, then learn about that thing and move on, but I feel uncomfortable having gaps in my knowledge, AI exists but I don't want to use it to generate code for me because I wanna enjoy the process of writing code rather than just reviewing code.

    Basically I'm just stuck within the constraints I put for myself :(, I'm not sure why I wrote this here, probably just wanted to let it out..

  • Post Author
    throw_away_0613
    Posted May 6, 2025 at 9:04 am

    As I'm getting older, I want things to be as standardized as possible, and just don't worry about the details. I have learned from my mistakes

    The script I made for deployment, because existing solutions didn't "feel" right, required a lot of work and maintenance when we later had to add features and bug fixes.

    Another script I made for building and deploying Java applications, because I didn't like Maven and Puppet.

    The micro service I rewrote because I wanted to use my own favourite programming language. I introduced a lot of bugs that were already fixed, missing features and another language for my co-workers to learn when they inherited the application when I left.

  • Post Author
    GardenLetter27
    Posted May 6, 2025 at 9:06 am

    This is well-written. I think LLMs can help a bit here too – the other day I was watching a rare, old film with my wife and the subtitles kept de-syncing. I.e. the frame-rate was slightly different as well as a fixed offset.

    So I explained it to Claude and made it write a Python script where I could manually set a few fixed times and it would adjust the SRT file, and it worked perfectly.

    I literally paused the film and did that in under 5 minutes. It was amazing.

    So fixing a lot of small things has become easier at least.

  • Post Author
    lightyrs
    Posted May 6, 2025 at 9:09 am

    Having kids is an excellent solution to this feeling.
    Besides occupying any time you used to have for unnecessary work, they have an uncanny ability to remind you just how little you actually control.
    However you get to the end of the OCD tunnel, the journey is often very worthwhile.

  • Post Author
    howtofly
    Posted May 6, 2025 at 9:21 am

    Serious software development is rarely an individual endeavor; most issues should be resolved through collaboration. In other words, they should be addressed through management. What the author needs to overcome, in my view, is essentially a form of extreme individualism.

  • Post Author
    davnicwil
    Posted May 6, 2025 at 9:28 am

    Fractal complexity.

    It's not only that solutions decay, though that's true, but also that the search for improvement itself becomes recursive.

    When you identify something can be improved, and fix it, your own fix and every individual step of it now become the new thing that can be improved. After the most fleeting of pauses to step back and appreciate your work, this becomes your new default.

    Indeed I often look back at my own solutions and judge them more harshly than I would ever judge anyone else's. Why? Because as the article says, I know much more about how it works. Cracks increase surface area by a lot. I know about a lot of the cracks.

    I wrote a blog post [0] about this mindset getting in the way of what you care about in product development which you might enjoy, if you enjoyed this article.

    [0] https://davnicwil.com/just-build-the-product/

  • Post Author
    brador
    Posted May 6, 2025 at 9:37 am

    The next step is burn out, then keeping everything default and just living with it. I know of no steps after this.

  • Post Author
    A_Stefan
    Posted May 6, 2025 at 9:44 am

    Thank you for sharing your personal journey. I too have (too) many ideas floating around, getting ready to fix everything I see broken, ignoring what's really important. So I whole-heartedly agree with "You learn how to program. You learn how to fix things. But the hardest thing you’ll ever learn is when to leave them broken."

  • Post Author
    moconnor
    Posted May 6, 2025 at 9:54 am

    > I believe sometimes building things is how we self-soothe.

    > I have written entire applications just to avoid thinking about why I was unhappy.

    I think this is true too. The prefrontal cortex is inhibitory to the amygdala/limbic system; always having a project you can think about or work on as an unconscious learned adaptation to self-calm in persistent emotionally-stressful situations is very plausible.

    I wonder how many of us became very good at programming ~through this – difficult emotional circumstances driving an intense focus on endless logical reasoning problems in every spare moment for a very long time. I wonder if you can measure a degree of HPA-axis deregulation compared to the general population.

    And whether it's net good or net harmful. To the extent that it distracts you from actually solving or changing a situation that is making you emotionally unhappy, probably not great. But being born into a time in which the side effects make you rich was pretty cool.

  • Post Author
    metalman
    Posted May 6, 2025 at 10:01 am

    This is very amusing, and evocative of what creative makers go through in many other fields….and as an do it my self absolutist, got me mired in attempts to pick up programing as another side gig/hussle in a life that is wildly over subscribed.
    So reluctantly I am letting go of a bunch of stuff that lingers, Presque vu skills, always almost, and never enough time to push up and over.
    The bonus is that I have focused on things that I did level up on, and can now do with ease, and a bit of flare……and perhaps more importantly give others a bit of joy to watch and see, "hey! that doesn't look so hard now!"
    One of the things I picked up.along the way was, audio engineering, live and studio sound, where when it kicks in, it's pure misery, and every mistake and buzz, ruins all music listening, fingers twitching for sliders that are not there, griping like a back seat driver…..the better the stereo, the worse the experience, especialy with heavily produced studio work…..at least with live recordings, all the mistakes are honest and oten the recovery is where the magic happens.

  • Post Author
    dusted
    Posted May 6, 2025 at 10:14 am

    This resonates a lot with a thought that I've had for a long time..
    A computer is not a tool, it never was, it never will be..
    It's a workshop.

  • Post Author
    pknerd
    Posted May 6, 2025 at 10:15 am

    The site is down

  • Post Author
    codelikeawolf
    Posted May 6, 2025 at 10:18 am

    > We write a new tool because we are overwhelmed. Refactor it, not because the code is messy, but your life is. We chase the perfect system because it gives us something to hold onto when everything else is spinning.

    This really got to me because I've been doing this without realizing it for as long as I can remember.

  • Post Author
    smallflykkoo
    Posted May 6, 2025 at 10:22 am

    [dead]

  • Post Author
    dandellion
    Posted May 6, 2025 at 10:23 am

    I really can relate with the article. Also, it doesn't just apply to software but to lots of other things. It's the same mentality as being into cars and always tuning or restoring old ones. Being into woodworking or craftsmanship and fixing and building stuff around the house, etc.

  • Post Author
    jeffreygoesto
    Posted May 6, 2025 at 10:24 am

    /.ed :(

  • Post Author
    sylware
    Posted May 6, 2025 at 10:27 am

    "SSL error"…

  • Post Author
    naabb
    Posted May 6, 2025 at 10:31 am

    Anyone else unable to access the site? I get a connection refused.

  • Post Author
    mrheosuper
    Posted May 6, 2025 at 10:36 am

    My most useful hobby project is the one i just "hack and find out".

    I make a matrix led clock that can sync time through network, using Arduino and esp32. Due to time constraint, the coding standard is horrible(magic number, dynamic allocation, no abstraction between module, etc), but hey, it works, at least for 7 years now. The code took me 3 days to finish, and i would never write such code in production FW.

    There is a bug that may makes it unable to connect network, but it can be fixed by turning off then on again, i never bother to debug or patch it.

    Perfect is the enemy of good.

  • Post Author
    shiandow
    Posted May 6, 2025 at 10:39 am
  • Post Author
    manduz
    Posted May 6, 2025 at 10:50 am

    [dead]

  • Post Author
    mentalgear
    Posted May 6, 2025 at 10:53 am

    Link is broken, maybe someone has a backup archive.

  • Post Author
    dc96
    Posted May 6, 2025 at 11:13 am
  • Post Author
    z3t4
    Posted May 6, 2025 at 11:15 am

    Modern software is like sand castles, you can go there every day to maintain it, but one day it will be completely washed away. Everything that is beautiful will start to rot. After something have reached perfection it will change or die. It doesn't have to be that way though, you can put the OS in a virtual machine, so every time you work on your beautiful software it will feel like you are carving rune stones.

  • Post Author
    ferguess_k
    Posted May 6, 2025 at 11:28 am

    I believe after a certain age the most valuable skill is know how to remove things from your life instead of piling things up. Things that other people believe to be so crucial that your action of removing them from your life is going to offend them.

  • Post Author
    thedanbob
    Posted May 6, 2025 at 11:29 am

    I used to never finish personal projects. Then I realized that the biggest thing preventing me from finishing them was (perversely) my sense of duty to get them finished. Once I decided that I was under no obligation to anyone to work on them, not even myself, I had no trouble finding the motivation to get them done. So now side projects are a strictly "just for fun" affair. I work on them when I feel like, no deadlines, and once they're "in production" I maintain them because I like tinkering.

    The only problem with this approach is I've gone from hating the thought of programming after work to coming up with side projects at work.

  • Post Author
    bobrobpr
    Posted May 6, 2025 at 11:31 am

    It's like you went inside my brain and heart and divulged my feelings. Well done! Now, back to feeling worthless.

  • Post Author
    napolux
    Posted May 6, 2025 at 11:35 am

    It's funny how it's returning a 503 :(

Leave a comment

In the Shadows of Innovation”

© 2025 HackTech.info. All Rights Reserved.

Sign Up to Our Newsletter

Be the first to know the latest updates

Whoops, you're not connected to Mailchimp. You need to enter a valid Mailchimp API key.