HNHacker News
TopNewBestAskShowJobs

dahart

19,063 karma · joined October 19, 2011

submissionscomments
dahart··on I don't want to read what you didn't write
Oh I see I’ve misunderstood. Your analogy is restricting the scenario to no interaction with LLMs. In that case, there are still some reasons LLM writing might be prefereable for students: for non-native speakers, and for math teachers new to match developing a new curriculum (sucks, I guess, but it certainly happens), just to name a couple.

One question to ask is why is your contrived LLM scenario any different than a math teacher using a textbook, or district/state worksheets? Math teachers typically do not write the course text or exercises, and never have. Very few math teachers do their own writing.

dahart··on I don't want to read what you didn't write
Irrelevant? How so? And why did you present two different options if you thought it was irrelevant? I thought you were trying to make a point about human interaction. From my POV, your options 2 and 3 are much closer together than 1 & 2, so if you’re not suggesting that human interaction is preferable to LLM interaction, then what’s your justification for claiming any option is better than any other? I still completely disagree with your clarified point, and suspect many many other people do too, and are demonstrating that preference by using chatGPT for their classes instead of using either the teacher or Google. It’s a simple fact that interacting with an LLM can be preferable to interacting with some teachers some of the time, and LLMs currently often make interacting with the internet more pleasant and more efficient. Your ‘almost always’ still sounds to me like one person’s opinion that is not shared by all.
dahart··on I don't want to read what you didn't write
> with its twisted mix of Australian, Cockney and Kings English

This is a great way of summarizing a lot of the TV we’re getting in the US that have British characters, and it’s annoying once you notice it.

See how the accent changes in Lie to Me between season 1 and season 3:

S1: https://youtu.be/bWyhsqh_e9s

S3: https://youtu.be/oPqOET_xCKw

dahart··on I don't want to read what you didn't write
Oh it very much depends, your opinion there is certainly not always true and not shared by everyone; you only know where you stand right now with any certainty.

It depends on the teacher. I’ve had good and bad math classes, and LLMs today are quite a bit better than the bad ones. The worst human teacher in my memory didn’t offer interactions. He walked in, turned his back to the class, wrote equations on the board for 45 minutes, and then left. The best math teachers, the ones better than LLMs, are the ones who share the joy and sense of discovery and history of math, and not just the mechanics. But there aren’t that many teachers of that sort.

Learning by using the internet without LLMs is rarely very good, but more often than not in my experience sucks much worse than using LLMs. If you include using public LLMs in internet usage, then it’s not very different from just using LLMs that search the internet. I have heard that a huge swath of today’s high school and college kids are reaching for chatGPT before Google (which is incidentally OpenAI’s goal), and that many of them would rather talk to chatGPT than talk to a teacher. I’m going to refrain from making any claims, but I believe there are a lot of people who disagree with your ranking of the options.

Foreign language learning is one case where I love using LLMs, because it’s not typically an option otherwise. You can practice non-stop and have conversations with someone fluent in a language who will be infinitely patient with your mistakes. This is true of math and other subjects too; using LLMs to practice, so that the human teacher isn’t the bottleneck, to supplement and reinforce the human interactions, is usually better than using the internet without LLMs. The other reason many people prefer talking to LLMs is the lack of judgement. If you aren’t getting it and ask the teacher one too many basic questions, they treat you differently. Sometimes it’s necessary and helpful, and sometimes it’s harmful and takes a long time to change. LLMs don’t do that, they just explain and explain. That lack of judgement is a big reason many people prefer LLM interaction to human interaction.

dahart··on C++26: Trivial infinite loops are no longer undefined behaviour
I’d guess the concern is performance, not what initializer value is used. And performance is a valid concern that is discussed in the proposal, and a reason there’s an escape hatch. Still, it might cause some confusion.
dahart··on C++26: Trivial infinite loops are no longer undefined behaviour
They were saying the problematic philosophy started in C++ 20, not the variable initialization rule.

Yes the reason is obvious, but it’s neither simple nor black and white. One huge problem is that this can cause serious performance regressions, and you have to change your code to opt out, e.g. add “[[indeterminate]]”. There are many, many cases in high performance computing where the intended & desired behavior is don’t touch my variables until I fill them.

This is changing C++ core principles, there’s a new designation for the state of a variable: erroneous. It’s also subtle and weird, because you can still have well-defined behavior even with erroneous state. It does seem like this might be an experiment though, I don’t think this is the end of the story. (It seems they’re already talking some redesign of this idea.)

dahart··on I don't like passkeys
Three of those four prompts are opt-in and configurable and aren’t the site’s fault, no? I disable the browser and OS password managers because I use 1Password… why do you have the Chrome and OS password managers enabled if you’re using 1Password? Or if there’s some reason you need them all available, at least rather than dismissing the prompts, why not add an entry to disabling prompting for a specific site in the 2 managers you don’t want to see again? All three support that.
dahart··on My temporary PHP fix from 2014 has nearly 20M installs. Today I'm deprecating it
There’s not much evidence these are being used, only that they are dependencies for something else; that’s why the download numbers are so high.

I wouldn’t say it’s broken, I’d say there are tradeoffs, and devs have known this and discussed it since the start of npm or any package manager. You automatically get some bloat when you use other people’s software. That’s the downside. The upside is you don’t have to write the code yourself and you can create things more quickly by not solving problems that others have already solved.

It’s worth noting that AI has some of the same tradeoffs. The quality of what you get is still proportional to your prompting & reviewing effort, and spending low amounts of effort often results in similar amount of bloat.

dahart··on Nvidia is the central bank of AI
Ah, now having the best model be expensive to use, and thinking the cash burn of both companies is insane and unsustainable I completely agree with. This, I think is likely the biggest reason they’re asking for government intervention and regulation: to help them weather the coming investment/cash plateau, not because the models are nearing any asymptotic limits. To be fair, there is an argument to be made that the improvement in models is tied to the cash burn; if they can’t train bigger models or acquire more data or research more effective harnesses, then the improvement of their models might slow down - while GLM or other models continue to improve.

I’ve never thought LLMs were on the AGI path, but I have to admit it’s surprising how far it’s come with no end in sight yet. There is something important to be said about how ‘intelligence’ is embedded in language, and it suggests that intelligence isn’t exactly what we thought it was. The language component of intelligence also goes a long way to explaining technology’s progress in human civilization; how language and the printing press and mail and radio/tv and the internet have each ushered in accelerations in the pace of progress. Biologically and evolutionarily speaking, it’s unlikely that humans have become any smarter in the last two thousand years, but technology (among other things) has exploded.

dahart··on Nvidia is the central bank of AI
> Cracks are starting to appear. Open Ai and Anthropic are publicly asking for slowdown in AI research. Translation: We see this technology not being any more useful than what it is now, no AGI is coming

Predicting a usefulness plateau is absolutely wild given how fast AI agents have been improving at writing code this year. I have doubts about AGI but I think you’re making assumptions and translating it wrong. These two companies have always been asking for a slowdown from their inception, that’s not a new thing. It’s part marketing hype, but they both do want regulation to step in and slow down the competition, not because they see a usefulness plateau, but the opposite - the usefulness is growing so fast that they want to remain in control, and they are scared that working hard and competing will not be enough. Anthropic has also said out loud they think their competition (not just OpenAI) is not being responsible and they want the regulation so they can be the responsible shepherd, as AI gets more and more useful.

dahart··on Fuck it, make it anyway
Sure of course there will be some internal reason or some non-zero value behind doing any craft. But the analogy to AI & software engineering careers is that there are corporate for-profit tomato farms today. They have pushed out plenty of small farm businesses. Your mom enjoys tomato growing in spite of the availability of cheap high quality tomatoes. Your comment seems to me to agree with and support the GP comment entirely; you mom found value in doing the work despite there being no financial incentive.

Many people have argued over the years that it would be great when we have an economy that takes care of all the labor and everyone in society is free to choose to spend all of their time on things that have no financial incentive.

dahart··on Fuck it, make it anyway
> There is no amount of adaptation what is within grasp

What are you arguing for? What choices do have have?

dahart··on Music Theory for the 21st-Century Classroom
Aside from that not being what was said (the parent’s pull-quote is wrong in multiple ways), it is in fact not possible to tune a piano to any arbitrary set of 88 pitches without changing the design so dramatically and fundamentally that it would no longer be a piano. The triangular shape of a grand determined by the strings lengths, the placement of the pins, the use of double/triple strings in some frequency ranges, and design of the sound board, all permit only a very limited range of frequencies for each key on the keyboard. You very obviously cannot take an existing piano and tune it to 88 keys of A0, nor to 88 keys of C9.
dahart··on Music Theory for the 21st-Century Classroom
There is a whole paragraph in the preface about why he titled it “21st-Century Classroom”. The first sentence contains one very good reason: it’s a full year college music theory textbook with an open license.

The other reasons cited are:

“This text differs from other music theory textbooks by focusing less on four–part (SATB) voiceleading and more on relating harmony to the phrase. Also, in traditional music theory textbooks, there is little emphasis on motivic analysis and analysis of melodic units smaller than the phrase. In my opinion, this led to students having difficulty with creating melodies, since the training they are given is typically to write a “melody” in quarter notes in the soprano voice of part writing exercises. When the assignments in those texts ask students to do more than this, the majority of the students struggle to create a melody with continuity and with appropriate placement of harmonies within a phrase because the text had not prepared them to do so.”

https://musictheory.pugetsound.edu/mt21c/frontmatter-5.html

dahart··on Music Theory for Programmers
Those 22 notes are not evenly spaced, you know that, right? Primes are irrelevant.
dahart··on Microsoft says email spammers are adopting ASCII smuggling
Check out spamgourmet; they came up with roughly the same thing over 25 years ago, and implemented it, and handed it out to all for free. ;)
dahart··on DaVinci Resolve 21.1
Sorry, ask Lucas what exactly? How would that support parent’s claim that practical VFX artists can’t tell when CG is bad? Lucas hasn’t directed anything for over 20 years, and he was a writer, producer, director, and studio exec. He had already been answering questions about practical vs CGI for decades before he retired. Yes he’s overseen some CGI effects that people complained about a long time ago, and plenty more that nobody complained about, and he was perfectly aware of what people think didn’t age well. More relevantly, I know the artists he employed were aware of what would age well before the films were released.
dahart··on DaVinci Resolve 21.1
> a lot of older practical VFX artists aren’t able to tell when CGI is terrible.

Source? As a CGI VFX artist in a previous life, I disagree vehemently, and I think you’re spinning an untrue narrative. I’ve never met any VFX artists, whether practical or CG (and I’ve met many), who weren’t keenly aware of how bad effects were and how poorly they age. The few practical folks left are way less enamored of CGI than the CGI people, and they were always that way (by definition?), so it seems like you’re mixing them up.

The fact that shoddy effects get used speaks to directors and budgets and production studios and what audiences pay for, it has almost nothing to do with the artists. That said, you’re also comparing bad CGI with good practical effects, which undermines your point. There were plenty of practical effects that lost their charm as fast as any CG ever did, and today there is plenty of CGI that remains convincing; it depends entirely on which effect and which shot in which movie you’re talking about.

dahart··on Formalizing Fermat's Last Theorem
Isn’t deciding what responsibilities there are in any text very much in the author’s side and not yours?

Haven’t you dramatically overstated your case? Many expositions do not contain an explanation of their value at all. Works of fiction are a good example, and there are many many others. Often it’s the responsibility of the readers & reviewers to decide on questions like value.

dahart··on Intrusive linked lists (2019)
Ah yes if all collections are explicitly listed in the list node type, that makes sense. I thought the suggestion was that you could somehow link any given payload entry into multiple independent lists each with their own list node type.
dahart··on Intrusive linked lists (2019)
I googled it and got the response that Bjarne Stroustrup first used “intrusive” in his 1985 C++ book. He was adding a new distinction between the older intrusive kind and the new ‘non-intrusive’ kind, because some people had started using C++ to allocate the list nodes and the payload structs separately.

Now with std::list and college classes often teaching non-intrusive linked lists, and intrusive lists only being used in deep dark places like the OS kernel, maybe it’s easy to assume the ‘regular’ kind is non-intrusive.

What Stroustrup called ‘intrusive’ had been the default understanding of linked lists since around 1955, and what people used most often. A ‘regular’ linked list to most people back then was the intrusive kind, and the term ‘non-intrusive’ might have been an attempt to sell people on the benefits of abstracting and separating node types from payloads, but that maybe papers over the disadvantages a little.

The only kind of linked list I’ve ever used in my professional career is the intrusive kind. There are very few good reasons to ever use non-intrusive lists outside of the classroom. At least, not if you care about performance at all. They might be convenient & easy, but it’s usually the case that either an array or an intrusive list would be a better engineering choice.

dahart··on Intrusive linked lists (2019)
> It is awkward in C, where the implementation has to be macro-generated

I assume this is why they are putting the list pointer and payload in separate structs and doing pointer math to access the payload, so that it’s easy to build a set of macros that act like a generic list class for building lists out of any payload, right?

> One other advantage of intrusive data structures is the ability to link a payload into several parallel collections without indirections

Wait - how does this work? If I do address math on the pointer in order to find a payload, then isn’t the payload tied into exactly one next pointer, and thus exactly one list? For a minute I thought maybe this is why they put the pointer after the payload, but now I don’t see how to use a payload in more than one list, nor why they use subtract on the list pointer to find the payload instead of putting the list in front of the payload and adding (or using a type-cast pointer for direct access).

> the defining property of intrusive data structures is that they leave the responsibility of allocating elements to the user.

Indeed! This is why you see them in OS’s, in memory managers, and in embedded systems. We used to use them all the time in console video games before dynamic memory and heap allocations were common (or even allowed). Use of STL wasn’t allowed. Often the memory needed would be pre-allocated, and lists would be created and managed at run time without allocation, just by wiring up the pointers. Similar to what a memory manager has to do.

This was in C++, but back when (and before) EASTL was popular. EASTL was EA’s version of the STL without built-in heap allocation for container classes. We usually built payload classes with the list next pointer placed directly in the payload, and essentially did the list management as a one-off separately for each payload, because it was typically only a few lines of code and there weren’t enough list types for it to be a problem. This is the kind of intrusive list I’ve seen the most of, hence the questions about the particular C flavor shown here.

dahart··on Curvature Beziers: Improving on a timeless recipe
It is likely I’m missing something, that’s why I’m asking. ;) I don’t have any experience with curvature Béziers. I don’t understand what you mean about the 5 point span, could you elaborate? With a symmetric tangent Bézier constraint, adjusting either a shared anchor, or adjusting a tangent direction or length, will result in some amount of non-zero movement in two Bézier segments, not one, right? I believe a curvature preserving constraint will do exactly the same, no? Preserving the user’s curvature intent across Bézier segments anchors is a worthwhile goal, but that does come at the cost of always modifying two Bézier segments at a time, doesn’t it? Are you suggesting that meeting the user’s curvature intent across segments doesn’t affect spline locality? And BTW we are talking about spline locality, right? I should have asked for clarification earlier. Control points within in a Bézier segment don’t have any locality, technically; move one and the entire segment must be recomputed. This is how I ended up at 7 control points - it’s all 4 control points of 2 consecutive segments with 1 shared anchor. I don’t understand how an edit to a cubic Bézier spline could correspond to a 5 point span.

It’s true B-splines are approximating and Béziers are considered interpolating (even though 50% of the control points are approximating), and that very well might be the primary or even only reason to choose Bézier for many design goals. It’s also true that with uniform B-splines you can choose to interpolate any given control point at the small cost of duplicating control points (and of course non-uniform B-splines have additional ways).

My only observation, of course, is just that B-splines have the built-in property that curvature is smooth across segments, so if that’s your main goal for a given task, they seem like a decent choice if you can accept the tradeoffs. It is, of course, possible to mix and match curve types.

dahart··on Curvature Beziers: Improving on a timeless recipe
Ah hehe gotcha, I missed you’re author, and you were saying CatRom and B-splines have similar locality. I feel like talking about local control’s a bit iffy. In a spline with multiple cubic segments, I think a control point edit is going to affect about the same span of arc length with all three bases Bézier, CatRom, and B-spline, no?

My claim that the Curvature Bézier has less locality, of course, was based only on editing one of the Bézier’s shared join points. When you edit a shared point’s position (by moving an anchor) or tangent (by moving either of the interior control points), you are affecting 2 segments, not just one, hence the 7 control point span. I’m being a bit sloppy but I’m sure you understand what I mean there - the portion of curve affected by a single control point edit technically affects a section of the curve that’s fully determined by exactly 7 consecutive control points. (Assuming cubic!)

Re-thinking B-spline, I believe I goofed - editing a control point affect 4 consecutive curve segments, which is the non-locality you’re referring to, but which is also a span of 7 control points, so very similar to editing one of the constrained Bézier’s shared anchor points. The window of which 7 control points slides smoothly with B-spline: the edited control point is the middle of the 7 control point span. With a curvature-constrained Bézier, each shared anchor and its two surrounding control points affect the curve defined by the same 7 control points.

So yes cubic Bézier segments that aren’t constrained in any way (i.e., the “cusp” and “corner” types), sure those have a kind of ‘locality’ in that editing the two interior control points affects only the 1 segment defined by 4 control points. But as soon as you add constraints on the tangents, neighboring segments affect each other, and your control naturally becomes less ‘local’, right?

So anyway, given that adding constraints to Bézier splines will cause neighbors to affect each other and control point edits are no longer confined to a single segment, are there other reasons to stick with Bézier?

dahart··on Curvature Beziers: Improving on a timeless recipe
Oh Béziers are great and not going anywhere, and I’m not suggesting they should. It’s all about your specific goals. I think B-splines are misunderstood and underutilized, and your comment might be exemplifying that a little. ;) For one, Catmull-Rom is not a B-spline. For two, it’s easy to achieve local control of a B-spline wherever it’s needed (there are two separate ways to do this). For three, and most importantly - note that the goal of the article is to get a smooth join, and the technique in the article is to drop localized control (!) by imposing constraints on both sides of a join point. Using a Bézier for this is more complicated than using a B-spline, for no additional benefit that I can see. Also worth mentioning that uniform B-splines and Béziers are mathematically shape equivalent - it’s trivial to convert between them, so they provide identical levels of control, they’re just slightly different interfaces for the same shape.

Minor edit here to note, it just occurred to me that the curvature constraint affects the curve over a span of 7 control points, whereas editing a B-spline control point affects the curve over a span of 4 control points. B-splines are strictly more localized than Curvature Béziers…

One reason B-splines aren’t well known & used is because seemingly most/all online content launches into the math and discussion of knots. The uniform B-spline doesn’t need knots, and I wish more tutorials would start there rather than intimidating people with the math.

BTW yes you’re right about the ‘scalars’ (the beta parameters) in the G2 curvature matching equation. I haven’t tried this and I don’t know what they do. I was wondering if these might have a relationship to the ‘heuristic’ the Acko article derives? That was kind of my question.

dahart··on Quantifying Colour
Oh I didn’t know about Stockman-Sharpe, but FWIW the article acknowledges your point:

“The sensitivity curves shown here are normalized approximations (for simpler visualizations and calculations), and are not accurate. In reality, the sensitivity curves are less smooth, and different types of cones have differing levels of sensitivity. For example, the sensitivity of S-cones is significantly lower compared to the other cones. Similarly, rods are more sensitive to light than any of the cones.”

I was thinking to myself this article approaches color better than the majority of color articles I see on the HN front page. Many of them start from RGB and work backwards, often awkwardly with conceptual gaps; at least this start with SPD right out of the gate. The cone response overlap is implied via plots right at the beginning, and the first equation is an integral, and the correct integral… it might not be the most accessible, that may be true, but it’s getting across the right physics concepts first and cleanly separating perception and leaving that murky pit for after the physics is established.

dahart··on Curvature Beziers: Improving on a timeless recipe
This is very fun and well done, great interactive illustrations, and I love the deep dive into curvature.

I have to wonder - if you want smooth joins, why not use uniform B-splines instead of Bézier curves? With B-splines you don’t have to set constraints or compute curvature, it’s built in. What are the reasons to prefer Bézier?

There’s an old 1985 tech report by Tony DeRose (formerly of Pixar Research) that categorized the different ways to smoothly join curves - "Geometric Continuity: A Parametrization Independent Measure of Continuity for Computer Aided Geometric Design.”

That paper has a simple constraint formula for matching curvature between cubic Béziers, one that has a couple degrees of freedom. It’s the “G2 (curvature continuity)” formula mentioned on Wikipedia here: https://en.wikipedia.org/wiki/Composite_B%C3%A9zier_curve#Sm.... It’d be interesting to know whether that somehow works out to be mathematically equivalent to this post’s technique or not.

dahart··on Curvature Beziers: Improving on a timeless recipe
The author was having a little fun calling it a “lie”, it’s more like a popular simplification. The question is how to join Bézier curves smoothly, and it’s fairly common for people to join them by matching the velocity, which means if you join two cubic segments (for example) with control points [a,b,c,d] and [d,e,f,g] where you’re joining at point d, then setting d-c == e-d, which puts c,d,e in a line with d as the midpoint, will connect the two curves smoothly. Lots of Bézier curve editing software will have a mode that enforces symmetric control points around the join point. The problem, or “lie”, is that this symmetric strategy doesn’t match the 2nd derivative, so there can be an abrupt change in curvature at point d. You can have a smoother join by adding constraints like curvature or 2nd or 3rd derivative matching, and that’s what the article goes into - one way of achieving smoother matches.

This WP entry mentions several other alternatives to smooth joins besides matching curvature:

https://en.wikipedia.org/wiki/Composite_B%C3%A9zier_curve#Sm...

dahart··on Curvature Beziers: Improving on a timeless recipe
By line you mean a Bézier curve with no acceleration? As opposed to (say) a cubic with control points [(1,1),(2,1),(8,1),(9,1)] which makes a straight line but has a non-uniform parameterization?
dahart··on Judge rules Trump administration’s blacklisting of Anthropic was illegal
Oh no! You’ve misunderstood. I wasn’t really talking about the benefits of degrees to individuals, I was talking about the benefits to the federal budget (in response to the claim that we’re taking on debt). And there, the average income of graduates is actually the only thing that matters, not individuals’ performance, because that average turns into a sum total in income tax revenue for the federal government, a total that factors in the benefits of all degrees and all incomes, good or bad. There is a healthy positive ROI today for the government on education, even after student debt forgiveness. We’re making a tidy profit on degrees, not taking on debt. We’re making such a good profit, in fact, that we’d still be in the black making money if we covered all 4 year degrees for everyone who’s already choosing to go to college now. It looks like just the additional income tax revenue the country makes off degree earners compared to high school grads is on the order of 2-3x the sum total money paid in tuition and fees to all post-secondary schools in the US. If everyone in the country decided to get free degrees, all else being equal, it might get closer to break even or dipping into the budget… maybe. But there are multiple other countries that cover college for everyone who wants it, and they’re doing fine financially and not taking on education debt, some even rank better than the US on several economic measures.
← PreviousPage 2 of 34Next →