MurphyA/hacker-news huggingface dataset:
by mcmoor | 2025-12-25 06:40:46+00:00
The Rouen Cathedral is so impressive that I find it suspicious since there's nothing like it in that period. I think the "and then totally redone again at the end of the 14th century" (after 1300) carries the answer but I doubt I can find proof of what it looks like before that.

San Vitale is also so impressive that I think it heralds the end of that golden age. Nothing will be like this for 800 freaking years In contrast, that diptych from 1275 looks like it heralds the end of the dark age and it do looks like it (starting to be good but nothing like what'll come after it). So if we cherrypick again a little bit, 550-1250 is quite a long dark age.

Regardless of definition of "medieval" here, there still seems to be a very long contiguous era where there is dearth of good European, especially western/northern, art.
by fragmede | 2025-12-25 06:40:50+00:00
I gave Claude a screenshot of your comment, and it accepted the challenge.

Claude called the language Blitz.

The repo it created: https://github.com/fragmede/blitz

Is the code shit? I haven't looked at it. Didn't have to. Probably is. I fed it the blog post at the end, and difference.md has a comparison on what Laurent Le Brun built vs Claude, and Claude is fully aware that it went a different way on a number of different things.

It chose python, I had to tell it to use uv.

I'm on a mac with high DPI and it got confused about that.

I had to tell it to make a binary format (it made a BLTZ header)

But you can clone that repo, do uv run main.py --compile game/shooter.blitz and it'll make a .blitzc. Then you can do uv run main.py game/shooter.blitzc
Tear the code apart. Call out every tiny mistake in that repo. It's probably cheating somewhere! But all I did was give it challenge.png that's in the repo, and tiny bits of English, and Claude went to work.

It's been 21 years since my college computer graphics class and I went into distributed systems and not game dev, so someone else will have to tell me if it used a single (or even any!) GLSL shaders, or not.

Call it slop all you want, but that took me 70 minutes of babysitting.
by PunchyHamster | 2025-12-25 06:42:53+00:00
From my perspective X just got to the point where it just works for me few years ago and Wayland is just introducing more issues than it solves (to be clear it solves no current issue for me, only one that I think might be better for me is handling different refresh rate displays and maybe fractional scaling... and that could probably be done within X11)

Like, why simple "copy the screen" got suddenly so complicated? Why every WM suddenly needs a bunch of features that before were just handled by display server, where they belong ? Why some(most) WMs handle title bars but GNOME doesn't ? Why someone decided title bar management is optional to window manager ?

X11 might need to go but Wayland have learned no lessons from it. It's just knee-jerk "if X11 done it this way, let's do it differently"
by xiphias2 | 2025-12-25 06:43:36+00:00
There is, I just believe that generally people on the left have different viewpoint on this article than people on the right, and that's the main deciding factor.

And whenever that's true, the comments get politically heated without any substantive debate between the sides.

I love to debate with friends on the opposite side than me, but strictly offline where I can learn much more from them.
by misswaterfairy | 2025-12-25 06:45:31+00:00
> Times have changed, many have retired or been layoff to give way for the next round of "cheap young" talent in the form of contract workers.

A couple of quotes from the article above:

"WebView2-based Microsoft Teams consistently uses 1-2GB of RAM while doing nothing. Microsoft likely doesn’t know how to make these web apps use fewer resources, so it’s instead moving Teams calling to a separate process to reduce crashes."

"But Teams is not the only web app causing trouble when RAM prices are about to soar, as we also have WhatsApp. When WhatsApp debuted on Windows, it was an Electron app. However, Meta later upgraded it to WinUI/XAML (also known as native code on Windows), and WhatsApp eventually became one of the best apps [... using] less than 200MB of RAM and had smoother animations and faster load times."

It seems that most developers these days focus on web-exclusive technologies and try to force desktop and system level programs into this paradigm.

C, C++, and C# programmers seem to be as rare as hens teeth today?

Are colleges and universities not teaching these languages anymore? Is this a symptom of 'cloud-first' strategies where its easier to 'just use JavaScript' for everything, perhaps developer laziness/reluctance to learn another 'lower level' language?

I really don't understand the appeal of web-centric languages like JavaScript and TypeScript in the desktop and systems realm when they lack a standard library (which genuinely scares me: supply chain attacks...), likely contributing to the RAM consumption issue as developers just keep piling packages on for one specific function missing in another imported
library, and aren't natively compilable to small binaries that aren't dependent on a runtime or bulky embedded interpreter.

Yes, C# technically falls afoul of this (in .NET), but C# at least has a standard library that is comprehensive and is supported by an enterprise (Microsoft, for all its faults), not random developers on the internet.

https://xkcd.com/2347/

Microsoft allowing key components of Windows 11 to be rewritten in web-wrappers is only going to drive people further into Linux, as the RAM affordability crisis continues.
by vasco | 2025-12-25 06:47:19+00:00
> One option is to reject all requests that do not have the Sec-Fetch-Site header. This keeps everyone secure, but of course, there's going to be some unhappy users of old devices that will not be able to use your application. Plus, this would also reject HTTP clients that are not browsers. If this is not a problem for your use case, then great, but it isn't a good solution overall.

If my client is not a browser surely I can set whatever headers I want? Including setting it to same-origin?
by venturecruelty | 2025-12-25 06:47:40+00:00
Welcome to Standup! Choose your opponent!

- Guy who spends 20 of the 15 minutes being way too detailed about his work.

- Two guys who argue back and forth about technical minutiae that doesn't affect you.

- Your manager who lets two guys argue back and forth about technical minutiae that doesn't affect you.

- Your manager asking if you have any blockers.

- A PM asking you how many points you have left on a ticket.

(The boss battle is just this, but stretched over an entire hour.)
by shevy-java | 2025-12-25 06:50:02+00:00
To me it seems very few people use ractors. A bit more use fibers though.

It's a bit of a mess IMO. I'd much prefer everything be simplified
aggressively in regards to threads + GIL; and Ractors integrated on
top of Ruby::Box to provide not only namespaced container-like entities
but also thread-support as a first-class citizen at all times. The API
of ractors is weird and really not fun to use.
by russdill | 2025-12-25 06:50:21+00:00
Been experimenting with having a local Home Assistant agent include a qwen 0.5B model to provide a quick response to indicate that the agent is "thinking" about the request. It seems to work ok for the use case, but it feels like it'd get really repetitive for a 2 way conversation. Another way to handle this would be to have the small model provide the first 3-5 words of a (non-commital) response and feed that in as part of the prompt to the larger model.
by fulafel | 2025-12-25 06:50:30+00:00
Judging from this an approach might have been to port the 28 modules individually and check that everything returns the same data in Perl and TS versions:

"I took a long-overdue peek at the source codebase. Over 30,000 lines of battle-tested Perl across 28 modules. A* pathfinding for edge routing, hierarchical group rendering, port configurations for node connections, bidirectional edges, collapsing multi-edges. I hadn’t expected the sheer interwoven complexity."
by PunchyHamster | 2025-12-25 06:50:47+00:00
I think the problem is that people wanting to build that and being in position to (being paid for by their employer), are fed up with X11.

It learned no lessons from X11. It made most things harder to write and pushed more things that really every WM needs and doesn't care much to implement differently to WMs making them harder.

For example, stuff like "WM need to manage raw inputs, so they can have more power over them" is cute on paper but in reality most of them don't want to because there is no benefit to reinventing that part. Sure, that part in X11 could be better, maybe it should have better interface for WMs to configure common options in common way without getting into input-driver-specific options, but that just required rework of the idea, not throwing it into the bin and replacing with near entirely worse framework that wastes everyone time.
by hugs | 2025-12-25 06:51:48+00:00
there's generally only 3 ways to make money in browser automation:

1) test automation (my specialty)

2) data scraping / crawling

3) business/robotic process automation (e.g. back-office data entry, processing invoices, etc.)

when it comes to handling login sessions, cookies, etc. test automation is the easiest. (you create disposable test logins and use them in each test. it's mostly a solved problem.)

handling logins is a way gnarlier problem in data scraping and business process automation. i'm focused on test automation in v1. (i'm hoping experts in data scraping and process automation can help me improve vibium in this regard.)
by shevy-java | 2025-12-25 06:52:40+00:00
Right now it is just the foundation I guess. That is, more
work to be put on top of it. byroot kind of pointed that out
that the proposal reminds him of containers and I think this
is the long-term goal eventually, e. g. namespaced isolated
containers. At a later time, I think, the syntax for refinements
may be simplified and also be integrated into Ruby::Box, since
Ruby::Box is kind of a stronger refinement in the long run. But
that's my take; ultimately one has to ask matz about the changes.
What he did say on the bugtracker was that this is to be considered
a low-level API e. g. a foundation work. So things will be put on
top of that eventually.
by PunchyHamster | 2025-12-25 06:53:18+00:00
At around that time X.org worked entirely fine for me, sans some NVIDIA driver config I had to set up in /etc

few years after even that wasn't required.

Yeah it missed some features I could theoretically use in 2025 but I didn't had different DPI/refresh rate displays back then and those could probably be put into X11 protocol just fine
by amluto | 2025-12-25 06:53:34+00:00
HTTP-only cookies ought to work fine for this.

I imagine there’s a fair amount of complexity that would need to be worked out, mostly because the browser doesn’t know the suborigin at the time it makes a request. So Sec-Fetch-Site and all the usual CORS logic would not be able to respect suborigins unless there was a pre-flight check for the browser to learn the suborigin. But this doesn’t seem insurmountable: a server using suborigins would know that request headers are sent as if the request were aimed at the primary origin, and there could be some CORS extensions to handle the case where the originating document has a suborigin.
by maz1b | 2025-12-25 06:54:04+00:00
It's never Christmas without a new ruby version.

The ruby::box thing looks pretty interesting, from a cursory glance you can run two simultaneous versions of something like a feature or rollout much more conveniently.

Also being able to do

if condition1
&& condition2
...
end

on multiple lines rather than one - this is pretty nifty too!
by tomasGiden | 2025-12-25 06:54:57+00:00
I just tried out your app for the first time. First time trying to learn Spanish. I feel exactly like the user you describe but it is because I have to click Don’t remember for 70-80% of the words.

I’ve always had difficulty remembering vocabulary. I remember cramming German in School 30 years back. We had 20 words we had to learn per week and I could sit a whole night repeating and repeating them just because they wouldn’t stick. And then in the morning they were all gone anyway. So I gather I am a bad language learner.

In your algorithm, do you assume everyone’s recall is the same or do you optimize for a recall rate which make everyone fail a certain percentage of the word? If so, knowing that I am supposed to not remember 70% would be a good reminder in the app to not feel bad.
by kelnos | 2025-12-25 06:55:18+00:00
You can do per-display DPI just fine on X11 (through xrandr), it's just the major toolkits don't support it. GTK, for example, reads a single global DPI value from XSETTINGS; there's no reason why it has to be that way.

The annoying thing about the other things you mention is that they honestly are not that difficult to fix.

The X server can throw an error (or just silently ignore it) when one client passes the window of another client and button/key events in the mask to XSelectInput(). And the Xinput2 bits that allow for receiving all key and button events can be changed to only send events destined for windows in the same client. There: input snooping is fixed.

Lock screen awareness can be fixed with new requests/events in the MIT-SCREEN-SCREENSAVER extension (or, if that's fraught, a new extension) that allow an app to create a "special" lock-screen window, which the X server will always stack on top, and send all events to. (That new functionality should probably allow for child windows and popups for input methods as well.) This is honestly not hard!

And yes, some applications will break when you do this. But I cannot see how that's not significantly better than creating an entirely new display protocol that everyone has to port to.

There are other issues with X11, of course, mainly in the graphics pipeline (e.g. the compositor should really be in the X server), but it's hard to believe these things couldn't be fixed. It feels like no one really wanted to do that: building something new from scratch that (in theory) didn't have all of the mistakes of X11 would be more fun, and more rewarding. And I get that, I really do. But Wayland has created so much work, so many thousands (tens of thousands? hundreds of thousands? million+?) of developer-hours of work for people that maybe could have been better spent.

So I think Phoenix is a great idea. It's basically "X12"[0]: removing the old cruft and making breaking changes to fix otherwise-unfixable problems. I imagine most modern, toolkit-using X11 applications would work just fine with it, without modification. Some -- perhaps many -- won't... but that's ok. Run a nested, rootless X11 server inside "X12" if they can't be fixed, or until they're fixed.

[0] Yes, I know that an X12-type thing was considered and rejected (https://www.x.org/wiki/Development/X12/), but I still think it's a better idea, after a decade and a half of Wayland still not being able to support everything we need to port Xfce's components and maintain all of their features.
by rwaksmunski | 2025-12-25 06:55:32+00:00
I'm saying it's not good enough to write code yet, but good at explaining code. If it can't that means I messed up and I need to make it clearer. Once it's explanation and my meaning line up, the code is good enough and I move on. Meta point is that people are using AI for the wrong thing. It's great at consuming, not creating.
by KellyCriterion | 2025-12-25 06:56:50+00:00
Weeks ago a local newspaper had the headline:

"keep the big bang until later for your children, the bible is really a great set of fairy tales"

Im not religious at all, actually "implicitly fighting against it", though I have to admit: This sentence made sense and Im thinking still until today about it, because actually I think its quite true - for smaller children, the storylines in the bible are much more "real" and understandable than the story of: "hey, there was a big bang, all molecules were created then and you are consisting today of these molecules"
by benatkin | 2025-12-25 06:56:56+00:00
It's analogous to asm.js, the precursor to WebAssembly, which was written in js, in that it ran virtual machines in pure js, which is a huge win in portability. The mquickjs readme explains it in a much lower level way than the quickjs readme. There's also more emphasis on the bytecode. In a way it's like a tiny WebAssembly plus garbage collection extension vm that can run compile to js languages, going beyond that and compiling them to bytecode. The overhead of porting it to a dynamic language wouldn't always be that bad depending on the use case. Its memory savings could be maintained.
by KellyCriterion | 2025-12-25 06:58:17+00:00
▲
▲▲▲
▲▲▲▲▲
▲▲▲▲▲▲▲
▲▲▲▲▲▲▲▲▲
▲▲▲▲▲▲▲▲▲▲▲

Hell - mine one is crashed! Claude didnt work properly :-D
by PunchyHamster | 2025-12-25 06:59:59+00:00
Realistically rewrite would keep X11 compatibility layer and just do same wayland did, make new protocol.

Just... without all that mess that turned out to be at best +/-, at worst outright negative causing problems for everyone involved.
And near all of the "advantages" are "the server is built from scratch" not "the protocol was the limitation"
by BLKNSLVR | 2025-12-25 07:00:42+00:00
This is an interesting contrast to the "don't become the machine" article.

The mouse wheel this guy has been running in, both working for YouTube and preparing for interviews to work elsewhere just sounds like an intentionally created psychology-breaking torture machine designed to eat youthful enthusiasm and ambition and spit out the dried up shell.

Jumping from one broken hierarchy to another seemed to be the (misguided) goal.

The above might be a bit harsh, my opinion hardened and my empathy evaporated somewhat reading this line "prioritize user retention metrics"
by hn_throwaway_99 | 2025-12-25 07:00:48+00:00
The way the list-unsubscribe header works, it essentially must use a token when one click unsubscribe (i.e when the List-Unsubscribe-Post: List-Unsubscribe=One-Click header is also passed) is used, and since GMail has required one click unsubscribe for nearly 2 years now, my guess is all bulk mail senders support this. Relevant section from the one click unsubscribe RFC:

> The URI in the List-Unsubscribe header MUST contain enough information to identify the mail recipient and the list from which the recipient is to be removed, so that the unsubscription process can complete automatically. Since there is no provision for extra POST arguments, any information about the message or recipient is encoded in the URI. In particular, one-click has no way to ask the user what address or from what list the user wishes to unsubscribe.

> The POST request MUST NOT include cookies, HTTP authorization, or any other context information. The unsubscribe operation is logically unrelated to any previous web activity, and context information could inappropriately link the unsubscribe to previous activity.

> The URI SHOULD include an opaque identifier or another hard-to-forge component in addition to, or instead of, the plaintext names of the list and the subscriber. The server handling the unsubscription SHOULD verify that the opaque or hard-to-forge component is valid. This will deter attacks in which a malicious party sends spam with List-Unsubscribe links for a victim list, with the intention of causing list unsubscriptions from the victim list as a side effect of users reporting the spam, or where the attacker does POSTs directly to the mail sender's unsubscription server.

> The mail sender needs to provide the infrastructure to handle POST requests to the specified URI in the List-Unsubscribe header, and to handle the unsubscribe requests that its mail will provoke.
by gnabgib | 2025-12-25 07:03:13+00:00
From 2024 (TRACTOR):

DARPA project for automated translation from C to Rust (136 points, 193 comments) https://news.ycombinator.com/item?id=45443368

Translating All C to Rust (TRACTOR) (363 points, 393 comments) https://news.ycombinator.com/item?id=41110269
by PunchyHamster | 2025-12-25 07:03:28+00:00
Windows in early 2000s didn't even detect your early 2000s SATA drive

Windows in early 2023 didn't even detect the network card it needed to download network card drivers. After changing mobos I needed to boot into linux to download network drivers for windows...

Windows in early 2025 still uses SCSI emulation to talk with NVMe and only now the server part got a proper driver

Windows in early 2025s still need virtio driver injection to boot properly as a VM without IDE emulation

"Drivers working out of the box" were never windows strong part
by netfortius | 2025-12-25 07:04:44+00:00
Interesting. For me running it in multiple online compilers gets consistently the following output:

1 1= 1
2 2= 4
3 3= 9
4 4= 16
5 5= 25
6 6= 36
7 7= 49
8 8= 64
9 9= 81
10 10= 100
by 0xWTF | 2025-12-25 07:05:31+00:00
The 14" MacBook Pro is unequaled as a daily driver. You can compile some things in a pinch, but let's face it, if you're writing compiled code professionally, someone in management owes your team build resources. Your laptop is your canvas, your easel, your blank page, your sketch pad, and your research library and research notebook. In 2025 and in 2026, your laptop is not for compiling.
by gnabgib | 2025-12-25 07:06:47+00:00
Comprehensive in March (6 points) https://news.ycombinator.com/item?id=43436638

July (3 points) https://news.ycombinator.com/item?id=44572417

August (4 points) https://news.ycombinator.com/item?id=45010855

September (4 points) https://news.ycombinator.com/item?id=45336582

October (4 points) https://news.ycombinator.com/item?id=45629331

Still time for more comprehensiveness (Jan 1?)
Zsh scripts to copy or paste image in Ubuntu / WSL
by flying_sheep | 2025-12-25 07:06:50+00:00
Hi folks, I have created these zsh scripts. So as to copy/paste either text or image in the shell with the Windows pasteboard. You can pipe it to command line like `qr_code` to decode QR code in pasteboard. I found it quite handy sometimes so I would like to share.

Enjoy and merry christmas =)

Link: https://gist.github.com/hktonylee/4297134d43f766c3e9d5589d21e81195
Show HN: ZenStack – Modern Data Layer for TypeScript Apps
by carlual | 2025-12-25 07:07:14+00:00
When Prisma 2.0 launched, they also shared their vision for a "uniform data access layer" inspired by Facebook's TAO and Twitter's Strato (https://www.prisma.io/blog/prisma-raises-series-a-saks1zr7ki...). That idea resonated with me.

Several years passed, Prisma seemed to have gone in a different direction, but I want to continue it.

ZenStack V3 is now GA. It started as a Prisma extension but hit limits. V3 reimplements the ORM to provide a solid foundation for the vision to continue. It is a TypeScript ORM built on top of Kysely (kysely.dev), but more. Schema-first, Prisma-compatibility, built-in access control, automatic CRUD API, and other goodies.

Especially if you're building SaaS apps or multi-tenant systems, it might be worth a look.

repo: https://github.com/zenstackhq/zenstack-v3
by SCdF | 2025-12-25 07:07:21+00:00
Late to this, but my interpretation of the parent's point was eg: LLMs still often produce bad code, despite "reading" every book about programming ever written. Simplistically, they aren't taking the knowledge from those books, and applying them to the knowledge of the code they've scraped, they are just using the scraped output. You can then separately ask them about knowledge from those books, but then if you go back and get them to code again, they still won't follow the advice they just gave you.
by nomilk | 2025-12-25 07:08:41+00:00
Love the moonrise! Beautiful shots.

When most road transport is automated it will seem crazy that everyone had to drive for themselves, or sit in the car with a complete stranger, who may prioritise their comfort over the traveller's with regard to audio, navigation noise, air 'fresheners' / diffusers, temperature. Perhaps analogous to having a flatmate; it's mostly done out of necessity rather than choice.