MurphyA/hacker-news huggingface dataset:
by germandiago | 2025-08-20 15:34:57+00:00
I am running buildbot with a customized matrix style buildbot for years for my side projects.

This is because yes, it is very complex. I have tried Jenkins before and Gitlab CI.

Something that most build tools and CIs should learn from Meson build system is that sometimes it is better to just keep it simple than adding features on top. If you need them, script them in some way but keep configuration as data-driven (and I mean purely data-driven, not half a language).

My build system is literally: a build matrix, where you can specify filters of what to keep or skip. This gets all combined.

A series of steps with a name that can be executed or not depending on a filter. Nothing else. Every step calls the build system or whatever.

After that it sends mail reports and integrates with Gerrit to send builds and Gerrit csn also csll it.

No fsncy plugins or the like. Just this small toml file I have and run normal scripts or command lines without 300 layers on top. There are already enough things that can break so that one keeps adding opaque layers on top. Just use the tools we all know: ssh, bash, Python etc.

Everyone knows how to call that. If a step is too complex, just make a script.
by raxxorraxor | 2025-08-20 15:35:02+00:00
On the other hand you have dev time that needs to save user passwords in a secure way. And this is the part of software that requirements maintenance and updates.

Sure, other software needs that too. Some enterprises use their own identity provider and I would prefer that as well. Usually that is probably some windows ldap database that can easily be integrated, but there are a lot of other solutions as well.
by DonHopkins | 2025-08-20 15:35:29+00:00
https://news.ycombinator.com/item?id=41478088

DonHopkins 11 months ago | parent | context | favorite | on: The PERQ Computer

The predecessor to the "Blit" at Bell Labs was originally named the "Jerq" as a rude play on "Perq" borrowed by permission from Lucasfilm, and the slogan was "A Jerq at Every Desk".

PERQ workstation:

https://en.wikipedia.org/wiki/PERQ

Blit (computer terminal):

https://en.wikipedia.org/wiki/Blit_(computer_terminal)

>The folk etymology for the Blit name is that it stands for Bell Labs Intelligent Terminal, and its creators have also joked that it actually stood for Bacon, Lettuce, and Interactive Tomato. However, Rob Pike's paper on the Blit explains that it was named after the second syllable of bit blit, a common name for the bit-block transfer operation that is fundamental to the terminal's graphics.[2] Its original nickname was Jerq, inspired by a joke used during a demo of a Three Rivers' PERQ graphic workstation and used with permission.

https://inbox.vuxu.org/tuhs/CAKzdPgz37wwYfmHJ_7kZx_T=-zwNJ50...

From: Rob Pike <robpike@gmail.com> To: Norman Wilson <norman@oclsc.org> Cc: The Eunuchs Hysterical Society <tuhs@tuhs.org> Subject: Re: [TUHS] Blit source Date: Thu, 19 Dec 2019 11:26:47 +1100 [thread overview] Message-ID: <CAKzdPgz37wwYfmHJ_7kZx_T=-zwNJ50PhS7r0kCpuf_F1mDkww@mail.gmail.com> (raw) In-Reply-To: <1576714621.27293.for-standards-violators@oclsc.org> [-- Attachment #1: Type: text/plain, Size: 890 bytes --] Your naming isn't right, although the story otherwise is accurate. The Jerq was the original name for the 68K machines hand-made by Bart. The name, originally coined for a fun demo of the Three Rivers Perq by folks at Lucasfilm, was borrowed with permission by us but was considered unsuitable by Sam Morgan as we reached out to make some industrially, by a company (something Atlantic) on Long Island. So "Blit" was coined. The Blit name later stuck unofficially to the DMD-5620, which was made by Teletype and, after some upheavals, had a Western Electric BellMac 32000 CPU. If 5620s were called Jerqs, it was an accident. All the software with that name would be for the original, Locanthi-built and -designed 68K machines. The sequence is thus Jerq, Blit, DMD-5620. DMD stood for dot-mapped rather than bit-mapped, but I never understood why. It seemed a category error to me. -rob

https://inbox.vuxu.org/tuhs/CAKzdPgxreqfTy+55qc3-Yx5zZPVVwOW...

The original name was Jerq, which was first the name given by friends at Lucasfilm to the Three Rivers PERQ workstations they had, for which the Pascal-written software and operating system were unsatisfactory. Bart Locanthi and I (with Greg Chesson and Dave Ditzel?) visited Lucasfilm in 1981 and we saw all the potential there with none of the realization. My personal aha was that, as on the Alto, only one thing could be running at a time and that was a profound limitation. When we began to design our answer to these problems a few weeks later, we called Lucasfilm to ask if they minded us borrowing their excellent rude name, and they readily agreed. Our slogan: A jerq at every desk.
by scotty79 | 2025-08-20 15:36:01+00:00
Sorry, I misspoke. What I had was that contents of the page were served to the browser as XML. The browser automatically requested the appropriate XSLT to convert the XML to XHTML to display it nicely. Basically same thing that you had, except that I didn't need feeds.

What I wanted to say is that I didn't write XSLT by hand. Instead I was writing XHTML files with just few short, convenient markers, and my regexps based "compiler" converted them to various xls nasty tags generating output XSLT that was served.

For example `$name` was converted to `<xsl:value-of select="name" />` and `@R:person` was converted to `<xsl:for-each select="person">` and `@E` was converted to `</xsl:for-each>`

Basically there were 5 tags that were roughly equivalent to

with, for, else, if, end

`with` descended into a child in XML tree if the child was present and displayed enclosed XHTML

`for` displayed copy of the enclosed XHTML for each copy of its argument present in XML, descending into them

`else` displayed enclosed XHTML only if the argument node didn't exist in XML

`if` displayed enclosed XHTML Argument only if the element existed

Neither if nor else descended into the argument node in XML. With and for descended. XSLT was using relative paths everywhere.

`end` marked the end of each respective block.

> That would've meant the underlying XML would need to mix view and model considerations, which is exactly what we didn't want.

The thing is, what you are serving to the browser is always a View-Model. If you serve a Model instead you are just "silently casting" it onto a View-Model because at that moment they are identical. Sooner or later the need will arise to imbue this with some presentation specific information attached on the fly to data from your data layer Model.

I no longer try to use XSLT either, but I think web components are completely orthogonal tool. Your XSLT could still generate web components if you like. You could even "hydrate" generated HTML with React for interactivity.

What XML+XSLT was solving was basically skipped entirely by programmers. Instead of taking care about separating concerns, performance, flexibility they just thrown into the browser a server side generated soup that is only one step away from compiled binary and called it a day.
by vemv | 2025-08-20 15:36:07+00:00
It will increasingly become common knowledge that the best practice for AI coding is small edits quite carefully planned by a human. Else the LLM will keep going down rabbit holes and failing to produce useful results without supervision.

Huge rules systems, all-encompassing automations, etc all assume that more context is better, which is simply not the case given that "context rot" is a thing.
by lazide | 2025-08-20 15:36:10+00:00
Says the only species able to self-flaggelate and write books about it. /s

Or as someone summed up recent American exceptionalism - Americans will come to your country, blow it up and mangle it to an incredible degree, then make 10+ blockbuster movies about how it made their soldiers sad.

I’d like to add of course - while overlaying the scenes in your country with a sepia tone.
by Guid_NewGuid | 2025-08-20 15:36:21+00:00
Thanks for providing some food for thought on the specifics of the proposal. These are real and justified drawbacks. My interest is more in access to the flagging behavior in aggregate rather than campaigns against any specific person. But this being the internet it certainly creates a new avenue for deranged people to kick off. However does the risk of this hypothetical hate campaign:

a) exceed the likelihood of people doing this via commenting anyway

b) justify the opaque and powerful nature of flagging as-is

Perhaps you stopping flagging if you're not willing to justify a flag is a good outcome in aggregate? We have mods to kill threads which violate the guidelines already. But looking at the /active list there's certainly an amount of (probably organic) censorship of controversial threads in either direction (though my gut feel is it biases more towards censorship of articles about the latest outrages of US government).

I'm not really interested in say, Ruby, I think people should probably use languages which are type-safe if they want to avoid catastrophes in production and 1am pager calls. However if I see an article about Ruby I'm just going to not engage with it. Perhaps your existing interpretation of the unwritten rules is too broad and actually we ought to rein in the amount of flagging anyway?
by adriand | 2025-08-20 15:36:43+00:00
> Can you use unsupervised agents, where you don't interact at a 'code' level, only at a high level abstraction level?

My view, after having gone all-in with Claude Code (almost only Opus) for the last four weeks, is ”no”. You really can’t. The review process needs to be diligent and all-encompassing and is, quite frankly, exhausting.

One improvement I have made to my process for this is to spin up a new Claude Code instance (or clear context) and ask for a code review based on the diff of all changes. My prompt for this is carefully structured. Some issues it identifies can be fixed with the agent, but others need my involvement. It doesn’t eliminate the need to review everything, but it does help focus some of my efforts.
by Lio | 2025-08-20 15:37:00+00:00
Yep me too. Great to see it freely availible online.

IMHO by far the stangest, most mind bending story in it isn't really cybperpunk though but it's still flipping brilliant.

Petra by Greg Bear. It's about what happens when God dies...

https://www.rudyrucker.com/mirrorshades/HTML/#calibre_link-2...
by mortsnort | 2025-08-20 15:37:38+00:00
All of the foundational models are converging on the same performance. For most use cases you can swap Anthropic, OpenAI, and Google's top models interchangeably.

Barring some major methodology breakthrough, the next decade for AI will be about building software and hardware that actually makes use of AI, beyond Chatbots, which Apple and Amazon are positioned to do as well as anyone
by jacobaustin123 | 2025-08-20 15:37:41+00:00
Shamelessly responding as the author. I (mostly) agree with you here.

> please be surgically precise with your terms

There's always a tension between precision in every explanation and the "moral" truth. I can say "a SIMD (Single Instruction Multiple Data) vector unit like the TPU VPU with 32 ALUs (SIMD lanes) which NVIDIA calls CUDA Cores", which starts to get unwieldy and even then leaves terms like vector units undefined. I try to use footnotes liberally, but you have to believe the reader will click on them. Sidenotes are great, but hard to make work in HTML.

For terms like MXU, I was intending this to be a continuation of the previous several chapters which do define the term, but I agree it's maybe not reasonable to assume people will read each chapter.

There are other imprecisions here, like the term "Warp Scheduler" is itself overloaded to mean the scheduler, dispatch unit, and SIMD ALUs, which is kind of wrong but also morally true, since NVIDIA doesn't have a name for the combined unit. :shrug:

I agree with your points and will try to improve this more. It's just a hard set of compromises.
by IAmBroom | 2025-08-20 15:37:49+00:00
We have to agree on the basic definition of ultra-basic terms.

You just proposed a definition. Good. It's not complete, but necessary, conditionally.

Basically, we shouldn't use "alive" and "dead" as dualities. There's at least three states: "dead/inert/never gonna get there", "meets a definition of life (see next category) when supplemented by a host cell or something else complex and exterior", "can self-replicate and grow on its own, in a friendly environment with sufficient food/fuel/inputs available = life".

Maybe more. But let's stop pretending biology is dead versus alive, because viruses definitely ruin that.
by Nizoss | 2025-08-20 15:39:03+00:00
Hi HN,

I believe that using guardrails with agentic coding is far more effective than simply using instructions. This plugin demonstrates it using Test-Driven Development.

TDD-Guard can now be used with Go. Other supported languages are: JS/TS, Python, PHP, with dotnet in the works. Next are Ruby and Rust. I'd love community help adding support for more test frameworks and programming languages.

Here's feedback from an early user:

> This plugin is absolutely phenomenal and has become an indispensable part of my toolkit.

> It might sound strange, but I'm moving significantly faster on both new features and refactoring tasks now. The way it works in tandem with my strict ESLint setup is brilliant!I It iterates through issues and consistently produces clean, working code. It's not an exaggeration to say you've completely changed how I think about TDD and AI in my coding process due to this plugin.

Happy to answer questions!
by tmvphil | 2025-08-20 15:39:32+00:00
I think for me personally, such a linear breakdown of the design process doesn't work. I might write down "I want to do X, which I think can be accomplished with design Y, which can be broken down into tasks A, B, and C" but after implementing A I realize I actually want X' or need to evolve the design to Y' or that a better next task is actually D which I didn't think of before.
by tptacek | 2025-08-20 15:39:49+00:00
This draft does not describe Kaminsky's attack; it describes the vanilla Birthday Attack from 2002. Kaminsky's discovery was the combination of random bogus query names and spoofed authority sections, which dramatically expanded the number of "bites at the apple" attackers had to match query IDs from spoofed responses to original requests.

Daniel Bernstein was right in the late 1990s about randomizing source ports, and randomization did effectively foreclose on Kaminsky's vulnerability. But I'm unaware of a cite in which he outlines Kaminsky's attack in any detail. His djbdns countermeasure was a sensible response to BIND's QID prediction problem, which Paul Vixie was reluctant to fix because the QID only gave him 16 bits of randomness to work with.

I'm not saying you're certainly wrong that other people had discovered the random-name / authority spoofing attack Kaminsky came up with, only that I'm intimately familiar with this whole line of security research and I'm unaware of a source laying it out --- I am thus skeptical of the claim.
by dgfitz | 2025-08-20 15:39:56+00:00
I wouldn't be surprised at all, make is great!

My contention is that a build script should ideally be:

sha-bang

clone && cd $cloned_folder

${generate_makefile_with_tool}

make $1

Anything much longer than that can (and usually will) quickly spiral out of control.

Make is great. Unless you're code-golfing, your makefile will be longer than a few lines and a bunch of well-intentioned-gremlins will pop in and bugger the whole thing up. Just seen it too many times.

Edit: in the jenkins case, in a jenkins build shell the clone happens outside build.sh:

(in jenkins shell):

clone && cd clone ./build.sh $(0-1 args)

(inside build.sh): $(generate_makefile_with_tool) make $1
by schlauerfox | 2025-08-20 15:39:59+00:00
From 2014 until it was, in effect, obliterated by DOGE actions this year there was the "United States Digital Service", a crack team of programmers, a sort of skunkworks who worked to improve U.S. government websites of departments that wanted the help. So it seems to be partisan to want good websites, but there are countless people involved in politics with many agendas.
by Finnucane | 2025-08-20 15:40:38+00:00
In 1986, it was unlikely that the original contract for the book mentioned anything about electronic rights. As it was a reprint anthology, the rights purchased would have only covered the use in the anthology as long as it was in print. Which means that to post the book online, Rucker would have to contact the individual contributors and get new permissions. Did he do that? I make a guess that he did not. It is not clear from what is stated here.
by fkyoureadthedoc | 2025-08-20 15:42:28+00:00
It's probably very hardware dependent now, just like it was back then. My calculator opens to interactive in much less than 1 second, but I've got a 9800x3d and fast memory and nvme drive. The other guy saying his start menu takes 8 seconds to open probably has a pretty shit computer.

I definitely got the stupid hourglass in win 95 when trying to open anything, but my understanding of computers at the time was that black ones were faster than beige ones, so my computer was probably shit.

I tried to look up calculator win 95 vids on YouTube, there are a couple. One gets an hourglass - but less than a second, one is instant, one shows the calculator crashing lol.

During this I also found out that Microsoft Calculator is open source: https://github.com/microsoft/calculator
by erikerikson | 2025-08-20 15:42:53+00:00
Thanks. My useful feedback is that navigation violated my expectations. I was in mobile FWIW. I didn't know what to do so I started to scroll. My touch to the screen kicked into the next pane so I'm like "oh, okay". I happened to touch the right side so I thought that advanced it and so when I later clicked an extra time unintentionally, I tried to click the left side to go back (note that people who read right to left it top to bottom may have different intuitions [or be used to an insensitive web]). Unfortunately that just skipped another screen so that I missed two in a row. Not fatal because I kept going but disappointing and micro-sad. I think some subtle guidance could have removed the ambiguity and helped me focus and engage better.
by mrtksn | 2025-08-20 15:43:07+00:00
>I'm Danish and we have lots of Turks. They are generally much nicer than the Danes but almost all of them are dunces

That's rich coming from someone who doesn't understand what the Schengen visa is about. FYI it's not about settling in Denmark, it's for up to 90 days stays in 180 periods for tourism and business purposes.

But hey, the inventors of of the mRNA vaccine are both Turkish immigrants to Germany and there are plenty of other quite successful Turkish immigrants in all kind of industries and the academia. Maybe the problem isn't Turks but you? Thank god your racism isn't shared by that many Europeans.
by shadowgovt | 2025-08-20 15:43:36+00:00
I hadn't even realized how much I'd gotten used to emacs' way of thinking about buffers until I tried automating Google Docs.

... What a nightmare. Everything is an object. A header is an object. A paragraph is an object. There's a three-deep hierarchy to start talking about the current document. Yes, it's nice and namespaced and in that sense is well-defined, but the "hello world" of inserting text at the current cursor position is an absolute nightmare. And if you want to insert something more complex, like a couple headers and a paragraph and maybe a table? Get ready to build a factory function that creates a bunch of stuff and glues it together like you're writing a UI in Java AWT. And then it's not even in the doc yet, you have to go find your cursor, find the doc element the cursor is in, and only then can you insert content via a reparenting operation.

In emacs, you could do all of that with repeated "insert" calls, nearly literally touching the same keys you'd use to do it in the editor. It's an almost 1-to-1 metaphor mapping. If you know how to write text in emacs you know half of what you need to script emacs.
by ksymph | 2025-08-20 15:44:22+00:00
Reading the original release post for Anubis [0], it seems like it operates mainly on the assumption that AI scrapers have limited support for JS, particularly modern features. At its core it's security through obscurity; I suspect that as usage of Anubis grows, more scrapers will deliberately implement the features needed to bypass it.

That doesn't necessarily mean it's useless, but it also isn't really meant to block scrapers in the way TFA expects it to.

[0] https://xeiaso.net/blog/2025/anubis/
by scott-tp | 2025-08-20 15:45:42+00:00
Hi luckman212,

My name is Scott and I'm the CEO and Owner of TinyPilot.

Thanks for being a happy TinyPilot owner!

The decision to "archive" the forum was not an easy one to make. However, after discussing with our Support Engineers and analyzing our modes of support and the response times we target, it made sense to no longer offer official support on the forum.

The forum is still there (https://forum.tinypilotkvm.com) as a resource. We may evaluate re-opening the forum as the business continues to evolve, but for the time being it is set to "read-only."

As for the future of the business. I guarantee you that we are not "winding down" the business (with the goal to extract maximum profit). Our velocity did dip slightly after the transition, but we've regained that velocity and continue to press ahead on software and hardware updates.

Since the purchase of the business in April 2024, we've released 4 updates to our core KVM over IP software, TinyPilot Pro (https://tinypilotkvm.com/pages/tinypilot-pro-change-history). We expect 1-2 more releases this year with some long-desired features and some that open up completely new use cases for our hardware offerings.

Let me know if you have any comments, concerns, or questions and I hope you continue to "stay tuned" to TinyPilot. You can always reach a real human on our team via support@tinypilotkvm.com
by shkkmo | 2025-08-20 15:45:55+00:00
Not really, if you look at the actual birth rates, it maps to economic success more than religious identity.

Yes, we all know that global population growth is mainly happening in Africa and other poor countries.

You also cite global retention rates for islam. Those retention rates are memetic and highly dependent on the same set of poorer, non-western countries so you are comparing applyes to oranges. If you look at western countries, the retention rate is pretty similar.

You keep stretching statistics to reinforce your world view without trying to actually understand the statistics, which is why I assume you keep repeating garbage like "Any group that maintains a positive fertility rate will multiply indefinitely."
by delichon | 2025-08-20 15:46:33+00:00
The green box around his face in the image is evidence that it detected a face, but not that it had collected or stored identifying biometrics. It would be legal for a POS device to detect any face, e.g. to help decide when to reset for the next customer. But as I understand it, this would usually be enough to trigger discovery, where he could learn the necessary technical details.

Even if this suit fails, the store is vulnerable to continuous repeats by other parties. Written consent from each customer is the only viable protection. So the BIPA law may mean that face detection, not just recognition, is not practical in Illinois.