picometer
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
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.
Same energy here. “Be more careful” is extraordinarily hand-wavy for a profession that calls itself engineering.
I’m actually revisiting this project right now! I’m reimplementing it in Rust and also exploring different ways to communicate parser state and other contextual information through sound.
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.
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.
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.
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.
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.)
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.
3rd Voice by Evan Dahm (long form webcomic)
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.
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.
> 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.
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”.
An "AI Breakthrough" on Systematic Generalization in Language?
> - 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.
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.
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.
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.
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.