Hacker News new | past | comments | ask | show | jobs | submit login
That’s not why I did it (weaversew.com)
209 points by MaysonL on Nov 25, 2020 | hide | past | favorite | 80 comments



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.


> 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?


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. :)


You were the tech guy. They were the biotech guys/gals.


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


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.


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.


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"


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.


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.


My workstation has 512GB of RAM. The cost of the memory (~$2.5k) is insignificant compared to the cost of GPUs.


How do you use that much RAM? Do you think most developers can benefit with this much RAM?


> 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.


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


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.


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.


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?


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.


He he then some smartass says "No it really has 1TB of RAM"


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.


"warp" also appears in various technical contexts. And I can only assume that that's where Rust's rayon comes from too.


I LOVE hearing jargon from a world I know nothing about, and trying to piece it all together from context.


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.


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


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.


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.


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?


A monad is just a monoid in the category of endofunctors, what's the problem?


Hash maps are not functors similarly to how sets are not functors. That is because they do not preserve function composition.


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)


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.


> 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.


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.


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.


That's exactly what people who don't know the jargon always say, given my experiences with tech jargon.


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.


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


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


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....


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


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.


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…


Thank you for sharing this, very good story.


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.


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.


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.


That description makes me want to be a data scientist.


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...


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 :)


This is the same feeling I get from playing Satisfactory.


Playing it like this, right? https://www.youtube.com/watch?v=t2X3wlvoShg

(for those who don't want to click: guy constructs horrible factory monstrosities and tests the limits of the game's physics)


Archive.org link as the site seems hugged to death: https://web.archive.org/web/20201125175036/https://weaversew...


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!


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.


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.


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.


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)`.


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.)


What did you change it to?


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.


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.


Nonzero values are truthy. You can use them bare in predicates. But they are not "== true."


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


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


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.


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 ==


Commonly called "Yoda conditions":

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


That's not rare, anyway... unless the linter can flag == <bool>, and suggest fixes.


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.


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.


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.


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.


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...


"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"...


Privacy preferences seem to be borked


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.


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.


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!


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."


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: