HN user

picometer

257 karma

Software gardener

https://bio.link/marybush

Posts5
Comments71
View on HN

This is a well-referenced essay, drawing the on writing of David Parnas [1], Peter Naur [2], and Zach Tellman [3].

As software developers we’re intimately familiar with these ideas. But the industry still treats it as “folk knowledge”, despite decades of academic work and systemization attempts like the original Agile.

We really need more connective work, relating the theoretical ideas to the observed behavior of real-life software projects, and to the subsequent damage and dysfunction. I liked this essay because it scratches that itch for me. But we need this work to go beyond personal blogs/newsletters/dev.to articles. It needs to be recognized & accepted as formal “scientific” knowledge, and to be seen and grokked by industry and corporate leadership.

[1] https://dl.acm.org/doi/pdf/10.5555/257734.257788

[2] https://pages.cs.wisc.edu/~remzi/Naur.pdf

[3] https://explaining.software/

I’m a violinist (amateur but play regularly). When I have an important note, which is held for a while and needs vibrato, I frequently decide to shift my left hand position so that my middle finger is responsible, rather than the index finger. It feels stronger, easier to nail the intonation (pitch) with precision, and freer to perform the desired type of vibrato. (String players do vibrato by wiggling the left hand finger, which affects the pitch and overtones / oscillation modes of the string.) In fact, I tend to avoid using the index finger on notes that require vibrato.

That preference might be explained here, by the precision/strength combination. I tried holding a hammer as described in the author’s hammer exercise, and there’s similarity, though it requires much more weight-holding. The left hand doesn’t hold the weight of the violin (consider a cello or a guitar with shoulder strap), but a little grip strength is required to securely hold down the string, especially with vibrato.

Overall, fascinating article. I feel quite motivated to read more on hand anatomy and biomechanics.

Agreed. I recall being taught in college physics labs: there is no such thing as “human error”. Instead, think about the causes and mechanisms of each source of error, which helps both quantifying and mitigating them.

Same energy here. “Be more careful” is extraordinarily hand-wavy for a profession that calls itself engineering.

I’m glad I saw your comment!! I’ve experienced this exact phenomenon when playing Minecraft while listening to an audiobook or podcast. Returning to that area will immediately remind me of the topic or narrative that I heard. Presumably it’s related to the “memory palace” technique, but otherwise, I can’t make heads or tails of it. It’s immediate, as if the location is a hash key mapping to the information. Or as if they’re stored in literally the same place, and fetching one implies fetching the other.

Similarly to you and the article’s author, this doesn’t happen with whatever thoughts I may think while at a location. But in that situation the brain is engaged in generating those thoughts, and not with the task of learning new information. So I don’t find it surprising that it works differently.

I haven’t thought about it in relation to “consciousness” yet. Will have to chew on this article a bit.

*If* such a thing could be done under typical corporate incentives/behavior, then I suspect the “high impact” part would need to be scrapped. Because when something is important to a corporation, it turns its eyes that thing (so to speak), which disrupts the other properties.

Or, “high impact” could be spread over the long term. So, unknown-payoff R&D. It would need to be an “invest and ignore” strategy and require a lot of institutional trust.

I do think it’s an interesting line of inquiry… but not robust enough.

E.g. this paper would be much more interesting if it measured the threshold at which the LLM starts to become good at X, and linked that threshold to the number and character of training examples of X. Then, maybe, we can begin to think about comparing the LLM to a human.

Alas, it requires access to the training data to do that study, and it requires a vast amount of compute to do it robustly.

Good point - I saw the FLAN anomaly and this didn’t occur to me!

A good follow up question would be: why didn’t the other models do better on the 2nd-order question? Especially BLOOM and davinci-003, which were middling on the 1st-order question.

I agree on your overall criticism of the experimental protocol, though.

Skimming through studies like this, it strikes me that LLM inquiry is in its infancy. I’m not sure that the typical tools & heuristics of quantitative science are powerful enough.

For instance, some questions on this particular study:

- Measurements and other quantities are cited here with anywhere between 2 and 5 significant figures. Is this enough? Can these say anything meaningful about a set of objects which differ by literally billions (if not trillions) of internal parameters?

- One of prompts in second set of experiments replaces the word “person” (from the first experiment) with the word “burglar”. This is a major change, and one that was unnecessary as far as I can tell. I don’t see any discussion of why that change was included. How should experiments control for things like this?

- We know that LLMs can generate fiction. How do we detect the “usage” of the capability and control for that in studies of deception?

A lot of my concerns are similar to those I have with studies in the “soft” sciences. (Psychology, sociology, etc.) However, because an LLM is a “thing” - an artifact that can be measured, copied, tweaked, poked and prodded without ethical concern - we could do more with them, scientifically and quantitatively. And because it’s a “thing”, casual readers might implicitly expect a higher level of certainty when they see these paper titles.

(I don’t give this level of attention to all papers I come across, and I don’t follow this area in general, so maybe I’ve missed relevant research that answers some of these questions.)

There are multiple senses of the word “creativity”, and this post focuses on one of them: divergent thinking. The other sense is that of constructive, goal-oriented creation, which ideas alone cannot achieve. It’s too bad we don’t have have more commonly used terms to make this distinction. I see a lot of comments here focusing on that distinction rather than the post’s central thesis.

I do have a comment on the thesis, which is:

The purpose of this article is to challenge this assumption [that creativity is binary] and discuss aspects of ideation, i.e. the process of coming up with ideas.

I support/agree with this challenge and all of the article’s ideas. “And yet”, right?? “And yet” some people are perceived to “have something” which others do not.

Honestly, the explanation is rather simple, or at least, simply stated. It’s neurodivergence. I’d further claim that cognitive styles gravitate to certain “attractor points”. (That’s scientific lingo for: certain patterns which fit well within the environment and which reinforce themselves. Like the pattern of wheel-ruts which attract wheels, which makes them stronger. The “environment” in this case is all sorts of things, including both the brain’s biological details, and the body’s physical+social environment.)

The strongest of these attractor points, we give labels: ADHD, various species of autism, etc. And of course the “normal person” attractor - not a point, but a broad area with its little micro-attractors and, sometimes, niche wormholes leading to more divergent areas.

People tend to clump around the strongest attractor points, and sometimes get pulled into other more smaller ones. This easily explains the perception of binary other-ness, especially when you consider that deviation from the norm - in any of the many directions - is, itself, a strong, influential force in this dynamic. To the extent that we try to build society to work well enough for the majority, anyone who deviates will have different and novel experiences of those systems.

But look, people are complicated and dynamic. We sometimes work to push away from these pattern-ruts, and other times we let ourselves be pulled into them.

This article is saying: YES. You can do things that make you ideate more divergently. You can also do the work to explore your own cognitive-behavioral niche, and which pushes your idea output into more novel, “creative” realms. Play is a certain type of work, when you need to push yourself to do it.

The article also addresses this:

Good ideas do not have to be completely novel

A hallmark of creativity is the knowledge or intuition of picking ideas that make suitable combinations. [more worthwhile to pursue]

…which brings us back to the other sense of creativity: not just divergence, but convergence; pursuit of a vision or goal or “gut feeling” intuition. I think this is the better, fuller meaning of the word. The author describes interaction between convergence and divergence very well. In the best examples of “creative genius”, both of these forces are at play. (No pun intended but perhaps that’s revealing.) Fluid, progressive creativity is at the edge of these two forces, and a “creative” person steers the ship, aware of both convergent goals and overarching visions that can only be reached by leaving those same goals behind.

The general skill of steering is quite meta-learnable by, probably, nearly everyone with any ounce of cognitive control. It takes time and support. It’s easier in more specific contexts, more well-suited to one’s situation.

For what it’s worth, toddlers absolutely do exhibit this full version of creativity, when you consider that they are pursuing the instinctive, hard-wired goal of learning and adapting to the world.

I’ve had a variety of responses to this list over my programming life (~10 years hobby, ~10 years professional).

When I first encountered them as a hobbyist, they were surprising, as perhaps intended, due to the framing of classic vices as virtues. On some reflection though, it made sense, and shaped my understanding of programming as somehow _inherently different_ than other types of creation.

When I got started with a professional career, they functioned to soften the edge of anxiety. It meant that the community of programmers who came before me - which presumably included Larry Wall - would understand that these patterns in coder behavior were ultimately beneficial and that I would maybe fit in with a corporate programming environment. (Now I know that this isn’t always true; sometimes coworkers, both programmers and non-programmers, don’t always realize these unintuitive points, and in some special cases, those programmer instincts aren’t actually valuable.)

At some point, I disagreed with the framing. As others have pointed out, the patterns can be reframed as classic or functional virtues such as curiosity. Then I backpedaled and realized that the framing is important because these are unintuitive patterns and it makes us re-think habitual incentives that reward, e.g., work that is more productive but not more effective.

How did it hit me now? I realize that it’s also related to power dynamics. Programmers are assets to their employers but they’re also potential disrupters. The traditional “virtuous” framing of potentially-less-effective behavior, like patience, is related to the organizing and taming of a workforce.

It’s also related to the types of problems we encounter. When we work with computers, Larry’s list does usually lead to more effective outcomes. But when working with other humans, who have their own agency and idiosyncrasies, the traditional virtues are better-adapted behavior. This is also more true for the complex technical systems we deal with nowadays. So, as our careers transition from programming to system engineering and/or management, the traditional virtues become more relevant.

Anyhow, this is an evergreen and thought-provoking nugget of wisdom. Thanks to Larry Wall and those who have preserved it.

Wow - can you elaborate on your process to “debug” these different layers? What comprises your personal or team’s feedback loop, given that 6 months is short? (I suspect it’s a lot of sequencing?) Are there good comparisons to be made with getting acquainted with a new codebase/technical system? Are there any particular computational tools involved? Pardon all the questions, this stuff is fascinating!

We lack good metaphors here.

Like genes, the following collections of information are plans, as other entities (workers, compilers, cells, etc) can reliably use them to produce larger, more complex objects:

- Blueprint

- Instruction manual

- Recipe

- Code

Unlike genes, they’re all human-designed. The top-down forcing function - the “back” in the feedback loop which shapes them - is human artifice.

I’ll leave it as an “exercise to the reader” to consider the differences in how their environment and execution apparatuses affect the resulting objects.

Genes are like blueprints, but obviously not the same. For one, they haven’t passed the county permitting process! And living organisms are like buildings because you can point to the plan behind them. But I’ll be darned if a house has ever had to struggle for survival.

A further thought that is too much for an edit… one of Alexander’s final conclusions is:

I’m glad that some people never develop epistemic learned helplessness, or develop only a limited amount of it, or only in certain domains. It seems to me that […] they’re also the only people who can figure out if something basic and unquestionable is wrong, and make this possibility well-known enough that normal people start becoming willing to consider it.

I think there’s better framing here as well: he is glad that a few people direct their own bounded resources towards what I’d call high-risk epistemic investments.

I’m also thankful for this. As species, we seem to be pretty good at this epistemic risk/reward balancing act - so far, at least.

Summary: Scott Alexander recounts his gullibility to various well-reasoned crackpot arguments on a topic, and describes how he to decided to trust experts instead of investing time into learning enough to assess the topic for himself. Then he reflects on the nature of argument-accepting and its relation to rationality.

I don’t think the term “learned helplessness” fits well here. It suggests a lack of agency, whereas he exercised much of it, employing his skill of critical thinking to arrive at the right epistemic stance.

A better term might be “bounded agency”, to pair with the concept of “bounded rationality”. We recognize that we cannot know everything, and we choose how to invest the capability and resources that we do have. This is far from any type of “helplessness”.

In hindsight, reviewer f5bf’s comment is fascinating:

- It would be interesting if the authors could say something about how these models deal with intransitive semantic similarities, e.g., with the similarities between 'river', 'bank', and 'bailout'. People like Tversky have advocated against the use of semantic-space models like NLMs because they cannot appropriately model intransitive similarities.

What I’ve noticed in the latest models (GPT, image diffusion models, etc) is an ability to play with words when there’s a double meaning. This struck me as something that used to be very human, but is now in the toolbox of generative models. (Most of which, I assume, use something akin word2vec for deriving embedding vectors from prompts.)

Is the word2vec ambiguity contributing to the wordplay ability? I don’t know, but it points to a “feature vs bug” situation where such an ambiguity is a feature for creative purposes, but a bug if you want to model semantic space as a strict vector space.

My interpretation here is that the word/prompt embeddings in current models are so huge that they’re overloaded with redundant dimensions, such that it wouldn’t satisfy any mathematical formalism (eg of well-behaved vector spaces) at all.

Honestly, perhaps I’m a purist, but Derek Sivers’ list isn’t sufficient for this type of “tech independence”. You can’t get around having to essentially rent your domain from the registry, unless you set up a registrar yourself. Perhaps you’re fine with using a numeric IP address and you don’t need to engage DNS; then you are still relying on your ISP: Comcast, Centurylink, Starlink, etc. OK, set up your own ISP - it is possible. But your connectivity to other regions of the state/province, country, or globe is fundamentally an _interdependency_ relationship, and pursuing independence is anathema to that.

Not to say that this list isn’t incredibly valuable for most people; and I have a similar “tech independent” setup myself. But it’s definitely not an alternative to the types of solutions that Cory Doctorow puts forth.

Edit… I missed your note about them not being incompatible so this whole comment is a bit of a strawman. But I highly respect the depth of knowledge that Doctorow has on these matters and don’t think he means for government regulation to be an alternative to personal tech agility.

Nakatomi Space 3 years ago

I think the possibility of this alternate navigation through cities and buildings is why certain open world games are so popular. For instance, the buildability of Minecraft and destructibility of GTA both enable worlds of exceptions and edge cases, where players can come up with alternate pathways to their goal, and where the latent environmental possibilities can even shape the player’s goals.

In ill-designed sandbox games without sufficient storyline (or other meaning-making mechanisms), if I run up against the edge of a map, or can’t pick up whatever decorative object, there’s a certain disappointment - that the world is limiting, but there isn’t sufficient purpose/meaning to balance those limitations.

In real life, there’s a reason we don’t indiscriminately blast holes through walls (other than perhaps lack of appropriate tool) - we care about the people on the other side, the asset comprised by the wall material, etc. But the material possibility of such hole-blasting always remains.

This is a rambling comment with unfinished thoughts, but what I’m getting at is: there’s a relationship between potential interactions w/ our environment and the “amount” of meaning that we ascribe and extract from it.

I agree, strongly, and am the happy owner of a Framework as my main computer. I’m about to make a somewhat pedantic observation but do not want it to detract from your main point - yes, it IS up to us to push this along.

Now for the pedantry. I think the repairability concern is more about owner-user agency & rights, not material efficiency /sustainability. The latter is very important of course, but we should expect it to follow from ownership. This isn’t a disagreement - I think you’re saying the same thing - just a difference in emphasis.

Imagine a population of users who, when replacing broken parts, would actually just toss them in the local river rather than properly recycling them; and imagine a corporation who sells unrepairable electronics, and touts “green” and perfectly upcycles every last bit of silicon from returned devices. (Scooping the effiencies for themselves, of course.)

On principle, I would still prefer the former scenario of users with the rights to do what they wish with their goods, than the scenario where corps essentially rent out their manufacturing expertise under the guise of selling.

Luckily, that’s an abstract thought experiment and not likely to actually occur. But corps WILL try to convince us of their benevolence and sell us the latter scenario. We need to steel against it because, like you are emphasizing, we can’t trust the profit incentives to ultimately align.

As a side note, we need non-corp entities (or at least, much smaller businesses) to handle proper electronics recycling - after all, that river-dumping scenario is not great! They exist but it’s not as easy to use them; for instance, unlike paper/glass/etc recycling in most US cities, they typically don’t come to your house to pick things up (at least in the places I’ve lived). Some shops will take this part but not that. The whole ecosystem has a LONG way to go before competing with the gravity well of the big corps. But I don’t have confidence that we can somehow get them aligned with human interests without the emphasis on individual agency and rights.

And this is just based on the sustainability issue; right-to-repair is related other ownership concerns, e.g. DRM and data privacy, neither of which are directly related to material sustainability.

I was also slightly disappointed not to find a discussion of <code smells>, but the post is interesting, and we can still discuss code smells here.

The post author (Michal Necasek) states, about the WIN87EM.DLL code:

It bears all the hallmarks of code that was written, rewritten, rewritten again, hacked, tweaked, modified, and eventually beaten into submission even if the author(s) had no real idea why it finally worked.

From what I gather, here are those hallmarks:

- Looping a no-op action, presumably to slow things down.

- Unnecessarily performing actions multiple times. This happens for three things: (a) writing a zero to an I/O port to clear something; (b) executing an instruction to clear exceptions; and (c) repeating the aforementioned no-op loop at different points.

- Saving a status in a separate location, only to reinstate it to its original location after clearing things out.

- Communicating procedure state (an EOI, “end of interrupt”) to one entity (the master interrupt controller) but not another (the controller’s slave). Furthermore, this “end” signal was sent near the beginning of the procedure. (This final point is my own observation and not explicitly called out by the author. Perhaps it’s common and not “smelly” for interrupt handlers to do this up front.)

I’ve tried to reframe the technical terms as actions and signals in a way that could be recognizable to devs of higher-level systems. My familiarity with OS-level systems is minimal so my interpretations could be a little wrong.

But despite my lack of knowledge, and with the author’s help, it does seem clear that there were serious timing and state related bugs here. And as a dev at other levels of the stack, I can relate: it’s very hard to reason about async global state! And this code’s responsibility was handling math errors, not timing errors. It is - or, perhaps, should be - the responsibility of the OS to orchestrate these things appropriately so that math libraries can focus on math stuff.

So my takeaways, for “code smells of desperation”, would be:

- There are violations of module responsibility.

- There are modifications of process timing with no discernible reason.

- There are modifications of status/environment/state with no discernible reason.

- And finally, other experts (in this case, the post author) can’t make sense of the code.

The replies to this comment are zoning in on the epistemological dilemma it poses. Soliciting theories for one of the most difficult scientific puzzles, on HN of all places: do you expect someone to serve you up a neatly-wrapped viable and plausible mechanistic theory?

And yet, I think it’s a serious comment, not a troll, because this is the right epistemic stance. We don’t know how life emerged yet and this is rightly uncomfortable.

As for the object-level topic: I’d direct my attention to any research that investigates the relationship between the cell wall and the inner organelles. I suspect that the viability of the cell factories was dependent on its co-evolution with the cell wall, which, by creating a semi-closed (permeable) system, would change the entropic conditions inside the cell.

Yeah, I suspect the grandparent comment meant that spellcheck (and perhaps other tools, like you listed) should be standardized. And thanks to the big cos (Apple and Microsoft) doing full vertical integration of their stack and calling it their “operating system”, that term is increasingly getting used for something more than just “the thing that operates your computational resources and safely exposes their APIs for developer use”.

That said, it would be interesting to see more actual OS development that innovated on supporting/encouraging more standards, without getting too proprietary or centralized.

You’re totally right - nothing can really stop a well enough funded smear campaign. In this example, I don’t think Project Veritas was going after her specifically. But it’s literally the only search result for her somewhat-unique name (and certainly the top result when combined with her profession), so it’s the only thing that future employers would see. If there’s even only a single other information source, there’s at least _something_ to compare against when a busy recruiter is doing a quick screening search. Of course these examples are rare, but they do happen.