HNHacker News
TopNewBestAskShowJobs

RodgerTheGreat

7,317 karma · joined February 13, 2010

beyondloom.com
submissionscomments
RodgerTheGreat··on AI slop is killing online communities
Indeed. Take a soft approach, or "wait and see", and you'll just allow your community to get infested with slop enthusiast crybullies that loudly protest any pushback against "genai content". The communities that draw a firm line and hold it will be the only ones that endure.
RodgerTheGreat··on A little comparison between R and Kap
You have to make the decision somewhere in your code, unless you're willing to lean on a heuristic; all of the examples in R and Lil make assumptions about the names of columns in the file on-disk just as they make assumptions about the delimiter and the presence of headers.

If I knew the CSV file didn't have built-in headers, I'd write the Lil script like this:

    purchases:readcsv["country,amount,discount\n",read["headerless.csv"] "sii"]
RodgerTheGreat··on A little comparison between R and Kap
Lil's readcsv[] takes three arguments: a data string, an optional typecode-string (which can also skip columns with "_"), and an optional delimiter character. First row is always assumed to be headers; I find it easy enough to concatenate on a header row before calling the function if I'm ever dealing with a headerless CSV file.

The typecode-string approach in Lil is very similar to how Q handles it with dyadic 0:.

In this specific example I could do without the typecode-string since arithmetic operators like sum, -, and * will coerce string columns into numbers, but I think this way is cleaner.

RodgerTheGreat··on A little comparison between R and Kap
In Lil, the readcsv[] function takes an optional string specifying a type for each column to decode:

    purchases:readcsv[read["purchases.csv"] "sii"]
Summing a column:

    sum purchases.amount
To create a summary, we need to reduce each group to a single row:

    select first country sum amount by country from purchases
Discounting:

    select first country sum amount-discount by country from purchases
Lil doesn't have a "median" primitive. Decks can contain multiple modules, but we happen to know this one is alone. Your path will vary:

    stats:first import["stats.deck"]
    select first country sum amount-discount by country where amount<stats.median[amount]*10 from purchases
Calculating the median within each group is merely a matter of reordering clauses:

    select first country sum amount-discount where amount<stats.median[amount]*10 by country from purchases
RodgerTheGreat··on Generative AI Vegetarianism
The term "GenAI veganism" is deeply disingenuous, and simonw knew exactly what he was doing when he coined it.

In the broader context of most human societies treating meat consumption as a default, with thousands of years of precedent, it deliberately frames abstaining from the use of "GenAI" as an extreme perspective, suggesting that moderate or extensive usage of LLMs and their ilk is more intrinsically "normal". The "GenAI" tools in question have only existed for a few years- or perhaps months in more specific cases- and the unending marketing blitz around them notwithstanding, using them does not remotely represent an engrained cultural default.

The choice of terminology also casually devalues and denigrates the reasons many people have for being actual vegans. It's meant to sneeringly evoke negative stereotypes of vegans as annoying and irrational.

Attempting to carve out a "softened" version of this language with the "vegetarian" label is not descriptively useful.

RodgerTheGreat··on Generalised plusequals
Amending a slice would amend only the slice:

    l_inner:l[1][1]
    # {"age":3}
    l_inner.age:9
    # {"age":9}
    l_inner
    # {"age":9}
    l
    # (1,(2,{"age":3}),4)
If an amending expression isn't "rooted" in a variable binding, it also returns the entire new structure:

    (1,(list 2,list ().age:5),4)[1][1].age:99
    # (1,(2,{"age":99}),4)
RodgerTheGreat··on Generalised plusequals
In Lil[0], this is how ordinary assignment syntax works. Implicitly defining a dictionary stored in a variable named "cat" with a field "age":

    cat.age:3
    # {"age":3}
Defining "l" as in the example in the article. We need the "list" operator to enlist nested values so that the "," operator doesn't concatenate them into a flat list:

    l:1,(list 2,list cat),4
    # (1,(2,{"age":3}),4)
Updating the "age" field in the nested dictionary. Lil's basic datatypes are immutable, so "l" is rebound to a new list containing a new dictionary, leaving any previous references undisturbed:

    l[1][1].age:9
    # (1,(2,{"age":9}),4)
    cat
    # {"age":3}
There's no special "infix" promotion syntax, so that last example would be:

    l:l,5
    # (1,(2,{"age":9}),4,5)
[0] http://beyondloom.com/tools/trylil.html
RodgerTheGreat··on Study found that young adults have grown less hopeful and more angry about AI
It's classic ladder-kicking behavior, reveling in the mild conveniences of "genai" while comfortably impervious to the externalities. Shameful that the moderators of so many online communities turn a blind eye to- or even offer explicit support for- their endless shilling for hideously unethical web-destroying for-profit companies simply because they express their native advertising in a superficially polite register.
RodgerTheGreat··on Thinking Fast, Slow, and Artificial: How AI Is Reshaping Human Reasoning
I think everyone who believes that they can personally resist the detrimental psychological effects of exposure to LLMs by "remaining aware" or "being careful", because they have cultivated an understanding of how language models work, is falling into precisely the same fallacy as people who think they can't be conned or that marketing doesn't work on them.

Don't kid yourself. If you use this junk, it's making you dumber and damaging your critical thinking skills, full-stop. This is delegation of core competency. You may feel smarter, or that you're learning faster, of that you're more productive, but to people who aren't addicted to LLMs it sounds exactly like gamblers insisting they have a foolproof system for slots, or alcoholics insisting that a few beers make them a better driver. Nobody outside the bubble is impressed with the results.

RodgerTheGreat··on FreeBSD risks losing relevance by ignoring AI tooling like Claude Code
LLM enthusiasts will always point to whatever scraps of personal value they've extracted from their use of genai as a rationale for their indispensability. Arguing from personal utility rings hollow for anyone who takes the externalities of these "tools" seriously: their erasure of the authorship of their training corpus, their erosion of social contracts, their putrefaction of the commons with endless waves of slop, etc. I'm glad FreeBSD has managed to hold the line against this sort of shortsighted ends-justify-means thinking, and I hope they don't soften their stance against slop in the future.
RodgerTheGreat··on LLMs can be exhausting
"lemons"
RodgerTheGreat··on Moss is a pixel canvas where every brush is a tiny program
Moss looks much more general and powerful, but Decker has a similar mechanism for custom brush behavior; here's an interactive tutorial with a variety of examples, for comparison: http://beyondloom.com/decker/brushes.html
RodgerTheGreat··on Show HN: Breadboard – A modern HyperCard for building web apps on the canvas
I agree. I wrote an essay which contrasts the "visualbasic-like" vision that most visual app-builder tools take with the pliable, user-modifiable stack-of-cards approach in HyperCard: https://beyondloom.com/blog/sketchpad.html
RodgerTheGreat··on SectorC: A C Compiler in 512 bytes (2023)
"you don't have -wTokenHashCollision enabled! it's your own foolish ignorance that triggered UB; the spec is perfectly clear!"
RodgerTheGreat··on On being sane in insane places (1973) [pdf]
Is "energy capsules" a euphemism for amphetamines?
RodgerTheGreat··on Best Gas Masks
There are a variety of open-source 3d-printable adapters to mount glasses within full-face respirators. I use a version of this design with my 3M 6000-series and an old pair of lenses:

https://www.thingiverse.com/thing:4672869

RodgerTheGreat··on Nintendo DS code editor and scriptable game engine
I did a double-take at

    > Executes one line of script per frame (~60 lines/sec).
Makes the "runs at 60FPS" aspect of the engine feel a lot less relevant. At this speed, anything more complex than Pong would be a struggle. Even a CHIP-8 interpreter is usually expected handle a dozen or so comparably expressive instructions per frame.
RodgerTheGreat··on The browser is the sandbox
I stand by a policy that if a feature in one of my projects can only be implemented in Chrome, it's better not to add the feature at all; the same is true for features which would be exclusive to Firefox. Giving users of a specific browser a superior experience encourages a dangerous browser monoculture.
RodgerTheGreat··on In Praise of APL (1977)
Yep. J has a small userbase, but it isn't fragmented into dialects like K or even APL, J uses ASCII characters instead of requiring a custom font/keyboard layout, J is FOSS, J has extensive learning materials, and J is reasonably batteries-included and suitable for making practical nontrivial programs.

I like K better than J aesthetically, but it's harder to recommend to beginners due to the fragmentation of the ecosystem.

RodgerTheGreat··on Golfing APL/K in 90 Lines of Python
If one is golfing, tacit would be tidier:

    5(|+\)\1,1
RodgerTheGreat··on FOSS in times of war, scarcity and (adversarial) AI [video]
No code architecture will enforce privacy or guarantee security.

Some code architectures make privacy and security structurally impossible from the beginning.

As technologists, we should hold ourselves responsible for ensuring the game isn't automatically lost before the software decisions even leave our hands.

RodgerTheGreat··on ChatGPT Health
To be more precise: America could easily afford healthcare, but American elites regularly accept pathetically tiny bribes to pretend that universal healthcare is impossible. They also accept pathetically tiny bribes to allow companies like OpenAI to do whatever they please without meaningful legal consequence, so OpenAI is able to keep getting away with shipping products that cannot work as advertised and will kill people.
RodgerTheGreat··on Opus 4.5 is not the normal AI agent experience that I have had thus far
1. The people working for these companies are already demonstrably ethically flexible enough to pirate any publicly accessible training data they can get their hands on, including but not limited to ignoring the license information in every repo on GitHub. I'm not impressed with any of these clowns and I wouldn't trust them to take care of a potted cactus.

2. The risk of using "illegal" training data is irrelevant, because no GenAI vendors have been meaningfully punished for violating copyright yet, and in the current political climate they don't expect to be anytime soon. Even so,

3. Presuming they get caught redhanded using personal data without permission- which, given the nature of LLMs would be extremely challenging for any individual customer to prove definitively- they may lose customers, and customers may try to sue, but you can expect those lawsuits to take years to work their way through the courts; long after these companies IPO, employees get their bag, and it all becomes someone else's problem.

4. The idea of using carefully curated datasets is popular rhetoric, but absolutely does not reflect how the biggest GenAI vendors do business. See (1).

AI labs are extremely shortsighted, sloppy, and demonstrably do not care a single iota about the long term when there's money to be made in the short term. Employees have gigantic financial incentives to ignore internal malfeasance or simple ineptitude. The end result is, if anything, far worse than stupidity.

RodgerTheGreat··on Show HN: Server-rendered multiplayer games with Lua (no client code)
I had a similar idea about 13 years ago, but I didn't extend it into a generalized game engine: https://github.com/JohnEarnest/VectorLand
RodgerTheGreat··on Ÿnsect, a French insect farming startup, has been been placed into liquidation
Theranos was famously founded on pitches about blood testing from finger pricks that literally any phlebotomist and many people with a modest life science background could've told you were physically and statistically impossible on their face. You should be considerably less credulous toward startup grifters.
RodgerTheGreat··on LLVM AI tool policy: human in the loop
Not just codebases, but developers too. Keep your eyes open: if someone visibly embraces slop, you know they're a clown. Don't let clowns touch your repos, and do your best to cut out dependencies on anything maintained by clowns.
RodgerTheGreat··on Rich Hickey: Thanks AI
Generative AI is used to defraud people, to propagandize them, to steal their intellectual property and livelihoods, to systematically deny their health insurance claims, to dangerously misinform them (e.g. illegitimate legal advice or hallucinated mushroom identification ebooks), to drive people to mental health breakdowns via "ai psychosis" and much more. The harm is real and material, and right now is causing unemployment, physical harm, imprisonment, and in some cases death.
RodgerTheGreat··on Rich Hickey: Thanks AI
Why not both? When you make tools that putrefy everything they touch, on the back of gigantic negative externalities, you share the responsibility for making the garbage with the people who choose to buy it. OpenAI et al. explicitly thrive on outpacing regulation and using their lobbying power to ensure that any possible regulations are built in their favor.
RodgerTheGreat··on Rich Hickey: Thanks AI
Looking forward to seeing all the slop enthusiasts pipe up with their own llm-oriented version of the age-old dril tweet:

"drunk driving may kill a lot of people, but it also helps a lot of people get to work on time, so, it;s impossible to say if its bad or not,"

RodgerTheGreat··on Learn computer graphics from scratch and for free
There's still an obnoxious slop image front-and-center, full of nonsense typos. Not a good look for any educational resource.
← PreviousPage 2 of 34Next →