That’s not why I did it

(weaversew.com)

209 points | by MaysonL 1220 days ago

17 comments

  • svat 1218 days ago
    I'm reminded of a post called Music and Lyrics in Math Talks (https://sites.math.rutgers.edu/~zeilberg/Opinion78.html) by the mathematician Doron Zeilberger:

    > Human beings have bodies and souls. Computers have hardware and software, and math talks have lyrics and music. Most math talks have very hard-to-follow lyrics, […]

    > But like a good song, and a good opera, you can still enjoy it if the music is good. The “music” in a math talk is the speaker’s enthusiasm, body-language, and off-the-cuff heuristic explanations.

    > Sometimes you can recognize a familiar word, and relate it to something of your own experience, whether or not the meaning that you attribute to it is what the speaker meant, and this can also enhance your enjoyment.

    I think of this often (e.g. https://shreevatsa.wordpress.com/2009/03/20/music-and-lyrics...). This post here is a wonderful example. Although the lyrics here are beyond my understanding:

    > I decided that the best way out, was to carefully pull the warps that ended up in front of the reed, since they were only 1 1/2 yards, and resleying them where required (because this was a differential sett warp, there were dents where there were as many as five ends) and then carefully tying them back into the slippery rayon warps that went through the heddles, one by one.

    the whole post is clearly pulsing with the kind of music that speaks to a programmer's soul. I remember one of our CS textbooks, in the chapter running through some history, had half a page on Jacquard's loom (https://en.wikipedia.org/w/index.php?title=Jacquard_machine&... ); evidently the similarity in spirit between programming and weaving runs deep. This is most evident in some paragraphs:

    > I sort of think that it has to do with creating calm in chaos. There is so little in the world that we have any control over. But what happens at our looms, that thing, we have control over. And if what happens on our looms becomes total chaos, then patience, tenacity, and time will make it work. That’s why I did it.

    > […] I did it because there is something intensely satisfying about bringing order to chaos. There is something intense about saving a project. I had my doubts that this was even weaveable […] I grabbed my 5X glasses, a magnifying OTT lite, and a sley hook and started in. 10 hours later I was triumphant.

    …but really, one can sense this throughout the entire post. I'm glad I read it.

  • quickthrower2 1219 days ago
    > One of the samples Brianna decided to weave, was exploring what happens when you use differential sett with really slippery rayon, warp and weft, and then slippery rayon warp and a dragging kind of weft like Shetland wool. The sample with the slippery rayon warp, though challenging, was completely successful. She then wound a warp with the Shetland wool, and the idea was she would tie into the rayon warp and repeat the experiment with a rayon weft and a wool weft, producing an additional two samples.

    The jargon! Is this what tech talk sounds like to outsiders?

    • rossdavidh 1218 days ago
      I am a developer, and I was once in a meeting full of scientists who work on gene sequencers. One of them, in what context I forget, referred to me as the "tech guy". I thought to myself, "I'm in a room full of scientists who work on gene sequencing, and I'm the tech guy? I thought I was the least technical person in this room."

      I've had similar experiences with people who know the magazine industry, the custom steel door industry, the ad agency business, and several others. They all have their own language, and they all think that I'm the tech guy, and I know I'm the only one in the room who doesn't understand what we're talking about. :)

      • nullsense 1218 days ago
        You were the tech guy. They were the biotech guys/gals.
        • aaronblohowiak 1218 days ago
          I have known scientists to hold a view to the effect of Math > Science > Tech > ...

          So, yea, you are the "tech" guy, but this is not necessarily an exultation

          • rossdavidh 1218 days ago
            Not an "exultation", sure, but it did definitely feel (in every case) like they were more impressed by knowledge of programming as an esoteric art, whereas knowledge of whatever their specialty was seemed more common to them. The scientists I know have no self-esteem issues, or anything, but (like the advertising people and the steel door people and the ad people and the rest) they don't usually even hear the complexity in their own jargon anymore.
            • kwhitefoot 1218 days ago
              They are secure in their own expertise and can recognize expertise in others. Their jargon makes their conversations more concise, like ours does for us.
    • bonkabonka 1218 days ago
      Ayup! Totally like that. And I'm sure they have their own sort of correction-reflex for "My computer has 1TB of memory!" - "Oh, you mean you have 1TB of storage." - "Same thing." - "No. It's not. eyeroll"
      • korethr 1218 days ago
        I think I spent more time watching video snippets and reading portions of other articles to give myself a lightning course on weaving jargon, just so I could understand what was being talked about in the OP. And suddenly, why looms look as complex as they do and are able to weave complex patterns makes sense. Why looms were automated makes sense, and I find myself with a new sense of respect for those who learn and master operation of a manual loom. It's not a trivial task.

        Still haven't been able to figure out what a "differential sett" is. Searching with quotes on google finds a bunch of stuff talking about '"differential sett"lement'. Or stuff about Egypt. Best guess is that it has something to do with using a number of threads per inch that is different from what is set on the reed, or differs across the breadth of the warp.

      • hansvm 1218 days ago
        Off-topic: one of my favorite dev environments had a half terrabyte of memory, and it was _fantastic_ for prototyping -- we rarely had to be bothered with disk spillover or any of the other time sucks that arise in low-RAM environments.
        • p1esk 1218 days ago
          My workstation has 512GB of RAM. The cost of the memory (~$2.5k) is insignificant compared to the cost of GPUs.
        • acha6277 1218 days ago
          How do you use that much RAM? Do you think most developers can benefit with this much RAM?
          • hansvm 1217 days ago
            > How do you use that much RAM?

            Typically you'd be operating on a lot of data of some kind and gain a lot in productivity by being able to keep all of it (ideal case) or large chunks of it (sampling, LRU cache, etc) in memory all at once.

            Having more RAM also enables some workflow changes. You can aggressively point things like intermediate compilation steps or testing databases to a ramdrive. Any time you're doing anything moderately expensive you can cache the result in RAM to make it cheaper to use next time. When choosing algorithms you can bias heavily toward time in any time-space tradeoffs.

            > Do you think most developers can benefit with this much RAM?

            I'd wager they could use more than they have typically ;) But no, 512GB seems excessive to me for most developer use cases with today's software. In my current job I haven't had a single use case for that much, and there have only been a few instances where 128GB would have been much more productive than what I have.

      • drivers99 1218 days ago
        In a computer engineering class (but nowhere else really), I heard storage can be called "secondary memory"[1] so they're technically correct, without knowing it.

        [1] as mentioned here for instance https://techterms.com/definition/secondary_memory

        • aidenn0 1218 days ago
          I've not seen it that way, but I've seen memory called "primary storage." Historically storage and memory have been used fairly interchangeably, but when talking about a modern PC, "storage" usually implies disk (or disc, or nvme) and "memory" implies specifically the DRAM.
          • azepoi 1218 days ago
            In french it can also all be called memory. Mémoire vive (lively/quick memory) is for RAM/DRAM etc. Mémoire morte (dead memory) for ROM/eeprom... and Mémoire de masse (mass memory) for storage/disc/tape.
            • aidenn0 1218 days ago
              Mémoire morte may be my favorite term ever for ROM/PROM. Would a CD-ROM be Mémoire morte or Mémoire de masse?
              • azepoi 1217 days ago
                Mémoire morte is for PROM onboard chips in practice where you find bios, firmwares these kind of things. Mémoire de masse would include optical discs, storage in general. I'd say CDs are generally thought of as storage and are interchangeable and you need a CD drive/player to read them, not directly.
      • quickthrower2 1218 days ago
        He he then some smartass says "No it really has 1TB of RAM"
    • Tade0 1218 days ago
      I spent new year's eve 2019/2020 with a group of weavers. The jargon is strong in them and to make matters worse, IT borrowed a few terms (like "thread"), so their conversations were especially confusing to me.
      • masklinn 1218 days ago
        "warp" also appears in various technical contexts. And I can only assume that that's where Rust's rayon comes from too.
    • cortesoft 1218 days ago
      I LOVE hearing jargon from a world I know nothing about, and trying to piece it all together from context.
    • protomyth 1218 days ago
      Yep, and the fun thing is that every hobby and profession has its own jargon that binds and educates it members. It amazes me that DSLs are so prevalent in real life but hated by a lot of programmers when trying to describe the activities of people who already have one.
    • sriku 1218 days ago
      Isn't that to be expected? Jacquard's loom was afaik the first programmable machine?

      So yeah .. weavers form a "discourse community" - https://en.wikipedia.org/wiki/Discourse_community

    • IshKebab 1218 days ago
      It's barely jargon. I think a lot of people know that rayon is a type of fibre, and warp and weft are the directions of weave. I don't know what sett is, but I think it's mostly hard to parse because it's not very clearly written.
      • bussierem 1218 days ago
        It's barely jargon. I think a lot of people know that Haskell is a pure functional language, and arrays and hash maps are both examples of functors. I don't know what a monad is, but I think it's mostly hard to parse because it's not clearly written.

        I would challenge you to share this with a non-developer friend and see what they think about that statement. You should consider what your personal experiences are with something before making such rather aloof statements towards others.

        • throwaway2245 1218 days ago
          I can note a few differences here:

          - People outside the field likely have enough concept of weaving (or fabrics) to know what the terminology might refer to.

          - Weaving terminology is woven into our language(s). Before the industrial revolution, that was a huge labour industry - it was part of family/daily life.

          - Words like 'sett' and 'weft' are clearly domain-specific and could be looked up. That's far less clear for 'language' and 'array' and 'map'; non-specialists are unlikely to recognise they are being used in a domain-specific way. Is a 'hash map' a type of map?

        • hangsi 1218 days ago
          A monad is just a monoid in the category of endofunctors, what's the problem?
        • jpcooper 1218 days ago
          Hash maps are not functors similarly to how sets are not functors. That is because they do not preserve function composition.
      • groby_b 1218 days ago
        You know what rayon is in the same sense a non-technical person knows what "an Intel CPU" is. You have likely no idea on which characteristics made the person choose a Shetland wool, or what exactly a differential sett is or why you'd hve one. (even when I tell you that sett is the spacing of your warp)

        Understanding some of the words is far from understanding jargon. Even if you know all the words, you still don't know why this is an important topic to discuss. Which things there are carrying weight, and which things are more a throwaway to add color.

        FWIW, it's quite clearly written for anybody who weaves. It seems unclear to you because you don't know the field. (Jargon extends to what kind of sentences and sentence structures you encounter)

      • hinkley 1218 days ago
        Warp is the threads that go lengthwise, weft is the thread that goes side to side. Rayon is a chemical process that makes a satiny fiber (out of some cellulose source, lately bamboo is popular).

        Sett is the spacing between the warp threads, and I had a hunch about what makes it 'differential' but that turns out to be wrong and so I have no clue what it means.

        Shetland wool is [a] Scottish wool. At one point half of the UK's exports were wool, so that makes it kind of a big deal. That's all I've got from being in social circles with fiber folk.

        • masklinn 1218 days ago
          > Warp is the threads that go lengthwise, weft is the thread that goes side to side.

          That depends on the direction of the fabric through, it's probably clearer to the uninitiated to say that the warp is the fixed "structure", and the weft is the "filling" thread you draw over/under the warp.

          • hinkley 1218 days ago
            The warp is connected to the machine, sure. But I think it’s a waste of time to set up a pattern to be as long as the loom is wide. You get no cloth at all until you’ve done all of the fiddly bits with getting the warp how you want it.

            I believe that if you’re going to weave anything, professionally, you’ll pick the loom that’s the width of the shortest dimension of your design, for purely practical reasons. I briefly worked as a mechanic in college, and what separates the pros from dilettantes like me is speed. I’ve heard similar tales from other skilled laborers. “portrait vs landscape” I understood to be very much a speed issue with looms.

      • Kluny 1218 days ago
        I'd say it's very clearly written. If you don't understand how the words are being used, you might struggle to grasp it.
      • mcguire 1218 days ago
        That's exactly what people who don't know the jargon always say, given my experiences with tech jargon.
  • 3pt14159 1219 days ago
    This is one of my favourite posts on Hacker News of all time. There are so many obvious lessons for the very definition of a programmer of any skill level to learn in this metaphor that it feels hollow in comparison to how beautiful the story is to life itself; even though that secondary comparison is quite valid in its own right.

    Thanks for sharing.

    • exmadscientist 1219 days ago
      And for anyone who doesn't realize why your mention of "programmer" is completely appropriate here in discussing an article about weaving, I can only suggest a link: https://en.wikipedia.org/wiki/Jacquard_machine
      • rektide 1219 days ago
        Mariko Kasako had a lovely talk on weaving, punch cards, & her own neat DIY work. Fun talk, some good history there too, with a bit of the modern too. The Jacquard loom is featured!

        https://youtu.be/e7wwuZnnM9k

        • tworingsoft 1218 days ago
          Shameless plug for an essay [0] I wrote a while back comparing looms and computers (which also has some of the best other videos I could find on looms, for those who want to learn more about them specifically). Wish I had seen this video back then, thanks for sharing! I find this comparison so fascinating to contemplate.

          [0]: https://tworingsoft.com/blog/2017/08/29/looms-and-computers....

    • greenyoda 1219 days ago
      In particular, this passage about asserting control over chaos resonated with me, as a software developer:

      > I sort of think that it has to do with creating calm in chaos. There is so little in the world that we have any control over. But what happens at our looms, that thing, we have control over. And if what happens on our looms becomes total chaos, then patience, tenacity, and time will make it work. That’s why I did it.

      Also, here are explanations of some of the weaving terms used in the article:

      https://en.wikipedia.org/wiki/Weaving#Process_and_terminolog...

      https://en.wikipedia.org/wiki/Warp_and_weft

      • aceBacker 1214 days ago
        I've never been able to articulate why I got good at coding when I was very young. Growing up in a chaotic household coding gave me an area of life that I could control. This seems obvious to me now.
  • MaysonL 1220 days ago
    This is my sister-in-law’s blog, and it’s about weaving,and somewhat technical. But the lessons it teaches cam apply to a lot more than weaving…
    • peter_l_downs 1219 days ago
      Thank you for sharing this, very good story.
  • CarVac 1219 days ago
    This reminds me of a time when I was working at Target and my manager let me spend an hour to straighten out the shelves for spices, which were horrendously disorganized, with incredibly incorrect inventory counts.

    That was one of the most satisfying things I've ever done, sorting every tiny container, counting them, backstocking the excess, marking the empty shelves, straightening the guides…

    Pure bliss.

    • ericmcer 1219 days ago
      That sounds great. When I worked grocery we used to joke about getting everything perfect on the shelves and then just sealing the store up.

      After long enough the empty shelves, spills, and broken items sort of blended together and the customers who caused them did not matter, like the store itself was alive and we were tending to its habitual needs.

    • bvcvbuiy 1218 days ago
      I love this feeling as well. Reading this I actually realized that is a big part of what I like in my role as a data scientist. You are given a ton of messy data and during months you get a very intimate knowledge about how your data reflects the business processes, you understand every edge case, and end up building a nice data model that allows to answer many question that had previously no answer with a simple SELECT FROM WHERE statement. Very satisfying.
      • ksenzee 1218 days ago
        That description makes me want to be a data scientist.
    • PapaSpaceDelta 1218 days ago
      If you can gain the same enjoyment vicariously, you might enjoy SouthernASMR's channel - she often tidies up the shelves of the stores that she visits. Here's a playlist of her Nail Polish organisation videos: https://www.youtube.com/watch?v=9TsxWuFsy3I&list=PL7SQKahkOA...
    • zentiggr 1218 days ago
      Every time I/we have gone to the craft store we like, I have to fight the urge to reset the 12 feet of 9, 10 shelves high with all the 2oz paint bottles. All numbered, with placards the length of the shelf, 2 inches per bottle, and omg, just to sit and start at the top left and normalize the whole section... sigh.

      I envy you that experience :)

    • iamdbtoo 1218 days ago
      This is the same feeling I get from playing Satisfactory.
  • emilecantin 1219 days ago
    Archive.org link as the site seems hugged to death: https://web.archive.org/web/20201125175036/https://weaversew...
  • cjcenizal 1218 days ago
    This was my favorite part, because I'm new to engineering management and this is a lesson I've been learning:

    > Brianna did manage to beam and weave the new samples. She did as I suspected have to cull some of the warps in the densest part of the reed. But she learned that on her own. And she also learned that when tying in a new warp, you should use overhand knots. But kids learn by falling flat on their faces and picking themselves up and reevaluating the experience.

    People learn when you give them the opportunity to fail. This has been a tough lesson for me to learn because I'm used to successful outcomes being visible -- a feature is complete, a bug is fixed, a project ships. But when someone successfully learns, the outcome is internalized and usually only manifests the next time they take on a similar challenge, so I just gotta wait and see!

  • legerdemain 1219 days ago
    Yes, it is very easy to get absorbed in a mindless, repetitive task. You'll feel superficially productive afterwards, but what did it all amount to?

    I once spent several hours grepping and changing every instance of `if (foo != true)` in a multi-million LOC codebase. Was it a good use of my time? Not at all.

    • yobert 1219 days ago
      I think it can be good for you to do this kind of work once in a while. I like to sort my M&Ms.

      But! From a technical perspective, I would never ever do this. It's likely to causes merge conflicts on every single pending branch anyone has. I would recommend only changing the area you are working on. Leave it better than you found it, but don't rock the canoe so to speak.

      • legerdemain 1218 days ago
        This is one good purpose for video games. If you have an uncontrollable urge to do something mindless, at least do it safely in a simulated environment.
    • robocat 1218 days ago
      Definitely not a good use of your time in many languages! Because `if (!foo)` is only equivalent given a language where foo can only be a Boolean type (I’m guessing you were using Java?).

      In more weakly typed languages null/NaN special cases and type conversion rules make it very hard to safely rewrite `if (foo != true)`.

      • _kst_ 1218 days ago
        In C, for example, "if (foo != true)" is not necessarily equivalent to "if (!foo)" -- but the latter very probably reflects the author's intent more accurately.

        For example, an int with the value 42 is logically a "truthy" value, but the test "if (foo != true)" will succeed. Someone who would write "if (foo != true)" very likely didn't know that, and should have written "if (!foo)".

        On the other hand, blindly fixing bugs like that has a good chance of changing the program's behavior, and possibly breaking it.

        (All this assumes that the identifier "true" is visible. In C, this requires "#include <stdbool.h>" -- unless the programmer defined it explicitly.)

    • rzzzt 1218 days ago
      What did you change it to?
      • muricula 1218 days ago
        This is pure speculation, but they may have changed it to foo==false. In C a boolean is just a byte which conventionally has the values 0 or 1, but an attacker which controls a boolean can give it the value of 2, and 2!=true and 2!=false. This has lead to real exploits: https://windows-internals.com/exploiting-a-simple-vulnerabil...

        When writing C or C++, never compare against true.

        • HeyLaughingBoy 1218 days ago
          I'm not sure that's right.

          Too lazy to look it up right now, but my recollection is that in C, 0 is False and anything else is True.

          • closeparen 1218 days ago
            Nonzero values are truthy. You can use them bare in predicates. But they are not "== true."
          • stonemetal12 1218 days ago
            if 47 evaluates the true branch. So in that sense you are correct, however standard C99 (the above mentioned bug uses win32's TRUE which is defined the same way) does #define true 1 therefore 47==true is false, even if 47 is true when evaluated.

            int a = 47;

            if a is true

            if a == true is false

            if a == false is false

            int b;

            b = a == true; b = 0

            b = a != true; b = 1

            b = a == false; b = 0

            b = a != false; b = 1

      • serial_dev 1218 days ago
        I'd guess if(!foo). It makes sense in some languages where the value can only be either true or false. It will lead to nasty bugs if the value can be null, or the language has truthy-falsy values and the condition accepts non bool values
        • rzzzt 1218 days ago
          You and muricula's sibling comment is the reason I asked :) Occasionally it is hard to spot the "!" between "if" and "(", and having to figure out if it is an omission or it was deliberate. I was wondering if spelling it out as "foo == false" is worthwhile.
          • HeyLaughingBoy 1218 days ago
            At one job I had, our programming standards dictated that we would have to write "if (false == foo)" to account for the case where someone accidentally types = instead of ==
  • renewiltord 1218 days ago
    Reminds me of a (kinda downvoted and I understand) comment on HN that I take inspiration from when things get tough. Not the same sentiment but there's a stylistic similarity. Paraphrasing,

    "You know what made me give up programming? It wasn't that the classes assumed knowledge already. It wasn't that I was bullied for it. It wasn't that I didn't fit the mold of an engineer. Nothing. Nothing made me give up programming".

    Reminds me that the world is tough. Societally, making it easier to do some things is worthwhile. But personally, personally if you want something, you just go get it. And damn the rest of them in your way.

  • thedanbob 1218 days ago
    This is the same reason I enjoy repairing electronics and machines so much. Even if it doesn't look good as new or the fix is a little bit of a kludge, it is incredibly satisfying to take something broken and return it to working order. And like the author, once I get started on a repair I can't stand to stop until it's done.
  • ericmcer 1218 days ago
    The daughters goof reminds me of a quote from Lawrence Durrell: 'She showed him the difference between knowledge and understanding'.

    The idea of this ingrained understanding from experience is so much more intriguing to me than trying to pull knowledge together with the conscious mind. I like the idea of the conscious brain orchestrating the training regime for the subconscious, but once it is time to perform it just steps back and watches.

  • Pasorrijer 1218 days ago
    I've been struggling with diving into a difficult task at work. I think it's because it's been a while since I've had a difficult task. This post resonated with me, and reminded me of the sense of accomplishment that comes when you push past that feeling and succeed. Thank you, for posting this, because I know that because I read it tomorrow will be a better day.
  • otakucode 1218 days ago
    When I had to come up with a company name back when I was doing freelancing, I chose Entropy Fueled Productions on a rationale quite similar to what was expressed in this article. Then I got to find out very few people know the word 'entropy' much less know how to spell it, and 'fueled' always gets mangled over the phone...
  • captaincrowbar 1218 days ago
    "For all of you out there who have ever had to deal with the warp from hell, remember that there is something healing in finally controlling that which would not be controlled, something triumphant about making something from total chaos."

    Today in "Unexpected WH40K quotes"...

  • broberts01 1218 days ago
    Privacy preferences seem to be borked
  • draw_down 1219 days ago
    A fun read. I do think it's possible to learn this lesson too well, though. Sometimes it really is better to just cut your losses, and the only thing stopping you is pride.
    • yobert 1219 days ago
      I see why this got downvoted because it seems rude at a superficial glance. I vouched for it because I think it's worth discussing a very important distinction here.

      What's important isn't that you tilt at windmills or beat a dead horse. Notice that nowhere in the story does either her or her daughter suggest the other do the work to fix it.

      The importance is in recognizing what you truly want. Sometimes people don't have the self reflection, perception, or foresight to realize the joy they might get out of some damn hard work.

      Also this comment has an interesting vibe in the classical "pride is bad" sense. I think it can be bad in the sense that it usually describes like a narcissist kind of pride when it's used negatively. But this is clearly a justified pride in oneself-- pride in not only overcoming adversity, but enjoying it immensely.

      • draw_down 1218 days ago
        Well, I used the word "sometimes" for a reason, not to say that this story was one of those times. It does feel good to do this kind of involved work sometimes, I completely agree. My admonition is that just because it feels good doesn't always make it the right move.

        And yeah, I think it's bad to let pride get in the way of doing what makes sense. Just crazy like that I guess!

    • bonkabonka 1218 days ago
      I think it might depend on your goals - the old, "The Journey is the Reward" chestnut.

      She mentioned a couple of times that she went into the tangle because she wanted to, that she hadn't had to "bail a loom out of a major temper tantrum" in a while.

      To be sure, recovering the 1 1/2 yard Shetland warp and other materials would in no way compensate 10 hours of labor - but that presumes there's nothing to learn from the process.

      I want to say something surly about how accountants have driven software development to losing its soul in pursuit of dollars but ... that's not going to end constructively. =D So instead I'll just say I really admire the attitude of, "I can fix that. It will take more time than it's worth but screw the economics of it all, I'm going to do it anyway. Fsck you, entropy."

    • rossdavidh 1218 days ago
      True that. But, in this case (and many others), the decision is impacted by both the sunk cost fallacy (your point), but also the "I don't like looking at that mess I made so let's just throw it out" fallacy. Just because it makes you feel bad looking at it, doesn't mean throwing it out is the best answer. Sometimes, jumping in and spending the time is the best answer.

      Of course, if there's a rule for how to avoid both of those errors, I haven't found it. But it's helpful at least to know that they both exist.