unconed

Joined 17 years ago

Karma
1,055
Submissions
494
Member since
May 19
developer, engineer, geek. my nifty things can be found at http://acko.net/ .
View on Hacker News

Recent submissions

Comment · 9 days ago
I discussed concerns about HTML-in-Canvas a while back as part of this post: https://acko.net/blog/html-is-dead-long-live-html/

Since then I've actually met these two and had to conclude that:

- They didn't have any use-cases in mind that weren't cosmetic

- They don't quite understand how being part of an advertising company shapes how they build and conceive of web tech

- They react quite poorly to reactions that aren't cheerleading

The answer for curved elements was handwaving and "just approximate it with flat projective transforms" which tells you this is not a serious attempt to expose mature UI internals, but just another shiny epicycle on the creaky leviathan that is the HTML5 web api.

The list of features that "automatically work" rests on assumptions that are only valid for minor visual adjustments. The moment you try to use HTML-in-Canvas as a more basic building block, a lot of that falls away.

e.g. Suppose I render a piece of text and then use that as a mask for visual effects. If the browser now draws a text selection highlight into that mask, the text becomes unreadable.

Comment · 1 month ago
Seems like vibe coded slop?

The long/lat globe has a bizarre projection that has incorrect perspective. Neither orthogonal nor inverse Z.

The "utah" teapot is not the utah teapot. The handle is also oriented with backfaces showing, and is disconnected from the teapot body.

The "glenzing" example is just regular alpha blending and fill whereas the original glenz effect was about mimicking alpha blend using bitwise tricks on a purposely designed 256 color palette (iirc in Second Reality).

Etc etc.

I don't understand why this stuff is supposed to be impressive when what it really represents is the inability of the person who posted it to spot and fix the errors, ranging from blatantly obvious to subtly historically inaccurate.

Calling this a "museum" is a misnomer. Museums do curation and restoration, not kitschy knock offs.

Comment · 1 month ago
So, just to illustrate.

A "vaccine skeptic" is generally considered to mean someone who is skeptical that vaccinations work at all.

This is very different from having specific concerns about specific products, like the COVID "vaccines", which turned out to:

- not protect against infection

- not prevent transmission

- have numerous side-effects worse than the disease it's supposed to prevent

...all in direct contradiction to the pharma propaganda that was the norm during 2021-2022, for which large amounts were paid to influencers and media.

Indeed, someone who is a proponent of the practice of vaccination ought to be dismayed that such a shoddy product was pushed as belonging in the same category as time-tested vaccines which went through a rigorous and long development process before hitting the market, rather than being foisted on a population under duress. Competing remedies were also ridiculed so as to secure that desirable Emergency Market Authorization, combined with government contracts that removed any liability for the producers, with additional censorship of those contracts before release to the public.

Hence, "You're all on the same team now" is an example of missing the point entirely and turning the issue of vaccination into political team sports and "our guy" vs "their guy", rather than actually debating any of the issues that matter in public health. Do you see what I mean about not being able to state what opponents actually believe?

With loaded terms such as "hate", "toxic" and "harmful" being thrown around like candy, it's exactly the same thing. Hate and harm are supposed to be decided according to objective norms of discourse and behavior, not sentiment. Because what happens is sentiment is decided according to whom the source and target is. The lefties obsessed with these topics decide first who can be a victim and perpetrator based on the tenets of intersectionality, and then interpret the events and actions to fit that preconceived hypothesis. This is largely a result of peer pressure within their own circles. The Jason Arday case is the best recent illustration.

Notice too that the surveys you cite center on "worry about the rise in harmful content" and "feeling less safe". Not about any actual harm that may have been done, nor about whether safety has actually gone up or down.

I'll even add that the distinction between looking at objective behavior and outcomes, vs looking at subjective sentiment, tracks very well with masculine vs feminine norms in social interaction. Feminization of online spaces has been an absolute disaster and the quality of discourse has gone down immensely, because women by and large prefer social cohesion over facing uncomfortable truths. But when the ship is sinking, complaining that someone is rocking the boat is willful blindness.

Comment · 2 months ago
Sorry but you're missing the forest for the trees here.

The locality of a bezier, even with symmetric constraints, amounts to the fact that the user's specified positions (the endpoints) and tangent directions are preserved exactly and can be modified independently. This makes detailed edits easy. And because curvature beziers only differ from classic beziers in the tangent lengths (not directions), the same properties hold.

The "7 control point span" you talk about is really a 5 point span, because adjusting the lengths of the bezier tangents at the far ends serves to explicitly preserve the user's intent, namely the radius of curvature.

Catmull-Rom e.g. ties together the tangent at a control point with the position of the previous and next control point. And B-splines don't guarantee going through any control point at all except the endpoints, with the tangents not even independently controllable.

This is why artists like beziers.

Comment · 2 months ago
I wrote the article :).

To clarify, I meant B-splines _lack local control_ like Catmull-Rom splines, not that the latter is an instance of the former. Though indeed, all cubic splines are just cubic polynomials.

I disagree with your characterization that the proposed solution lacks local control, because edits only affect the segments in question, just like with a classic bezier. From the point of view of curvature handles, the handles you don't touch don't change. (The splitting of a curvature bezier is imo the best illustration of this.)

Re: the meaning of the scalars, I imagine they are derived similarly as the perpendicular-distance diagram in the post. If you plug bezier formulas into curvature formulas, a lot of terms cancel out.

Comment · 2 months ago
As the post says, beziers are everywhere so we are stuck with them. It's worth trying to improve them for that reason alone.

Additionally B-splines (like Catmull-Rom) have the issue that moving one point affects a larger area of the spline than an equivalent bezier. The local control of beziers makes them more desirable for precise illustration.

As for the formula you cited, it tells you where to put the control point for continuity in function of two scalars, but those scalars don't directly map to intuitive controls. It also doesn't help when moving a curve point while preserving curvature on both sides because it only tells you one side in function of the other. I.e. continuity of curvature is a weaker constraint than having the desired curvature.

I initially experimented with something similar but found that numerical drift would steadily accumulate during interactive editing. The post shows this with the last example before curvature handles: rotating the tangents there preserves curvature continuity but the curve tends to blow up for certain angles, because the tangent is a poor proxy for indicating desired curvature.

Comment · 2 months ago
Yes, a linearly parametrized line.
Comment · 2 months ago
The C1 continuity you refer to is relative to the parametrization t=0..1 per segment. This is useless in practice.

For e.g. animation purposes, you need to reparametrize to arc length which destroys the apparent C1 continuity.

Comment · 2 months ago
Most of those rules are copes, really.

Placing points at X/Y extremes is by itself useless because beziers are rotation invariant. i.e. If that's the best place for the control points, then by the same argument if you rotated the curve by 45° the points would need to be on diagonal extremes. It's only useful with typography where many letters are oval. IIRC this rule originated because buggy rendering code assumed the curve would never extend beyond the XY bounding box of the control points.

Placing nodes at inflection points is actually a bad idea because there are very few configurations where curvature remains continuous. It's better to construct S bends with the inflection point in the middle, because then you always get a smooth transition.

Picking a specific spacing between control points makes it more likely that equal tangents represent approximately the same curvature on both sides, but it's not guaranteed either.

Comment · 2 months ago
If you like that, then try this.

Take a row of pascal's triangle, add a zero in front (shift it to the right by one place), and divide it by the row below it.

    0 1  4  6 4 1 /
    1 5 10 10 5 1
    = ...
From this you can prove that a linear bezier line (of any degree) must have equally spaced control points.
Comment · 2 months ago
You can try to make the WebGPU API more declarative, but the issue that you still run into is that individual draw calls and passes are a poor abstraction level to express modern rendering in.

To reach the quality of a modern PBR renderer with shadows, SSAO, temporal denoising and the like, you need to lower one conceptual draw into multiple concrete draws, sequenced in a particular way, to their own targets, and I haven't seen a lot of success in this space because the shaders need to become polymorphic.

Comment · 4 months ago
>A software cursor is manually drawn by the graphics stack, which saves what was under it, draws the cursor, and then whenever it needs to be moved, writes the original data back, saves the data at the new position, and then draws the cursor there.

AFAIK this hasn't been true for a long time on most platforms, certainly on macOS. The desktop image is composited on the GPU by assembling the underlying windows with appropriate effects like shadows and scrolling/scaling. A software cursor is just another overlay which may also have a transparent shadow.

Actually preserving what was under the cursor and putting it back is the sort of thing you wouldn't do anymore, because that's a cache which requires babysitting based on everything that's underneath and around it.

e.g. On macOS there's full screen zooming for accessibility, and if you wiggle the mouse, the cursor grows in size briefly (maybe even too big for hardware cursor to support).

Comment · 4 months ago
In 2011 the iPhone was ~4 years old and iPads were ascendant as the only tablet game in town. Google was still playing catch up with Android as a knock-off, having just debuted Android Honeycomb.

The actual topics are:

- the Apple campus that is still unique today

- a rectification of an urban legend about Jobs and Knuth

- a clip showing Jobs was prescient in the late 90s about personalized cloud tech

Dismissing the focus on Jobs as a cult of personality is a mistake, he was simply very influential, and so was Apple at this time.

Meanwhile LLMs are the antithesis of the Jobsian style: just cramming pirated data into a model and reselling it as fake intelligence without real source attribution.

Comment · 4 months ago
My "oh shit" moment with AI was when an industry where licensing was the cornerstone of projects and employment contracts decided to just adopt pirated code without any source attribution.

The other one was when a CTO boss sent me an AI proposal to review and the experience was like being gaslit by a con artist.

Many professional developers have started acting like the kind of employee that previously would've been fired after 3 months.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton