MurphyA/hacker-news huggingface dataset:
by autarch | 2025-04-01 13:30:23+00:00
At my very first real job, back in 1997-98, I worked in tech support for an insurance company. We used Lotus Notes for email (initially just internally, with no Internet email). I had programmer access to Notes because I built some forms for user requests (Notes was more than email, it also had forms, a whole programming language, workflows, etc.).

Some Fridays (once a month?) were casual dress days where you could wear jeans instead of slacks (this was the distant past, when most professional workplaces still had real dress codes). This was an IT/Eng-wide thing, so we'd get an email reminder about this from an admin person in the department.

One time, I thought it would be funny to send my own email announcing pants-less Friday. So I took a copy of the email this admin sent and adjusted it accordingly. I did of course specify that you still had to wear underwear. I'm not a monster. Because I had programmer privileges in Notes, I was able to forge the sender so that it appeared to come from the department admin person, not me.

I _meant_ to send it to the small email group for just the other tech support folks (around 15 people or so). But I accidentally (?) sent it to all of IT/Eng, around 200-300 people, IIRC. Oops.

Needless to say, my boss's phone started ringing off the hook. I immediately went over to tell him what I'd done. He wasn't pleased, but I didn't get fired. I did have to write an apology email.

Of course, many folks in the department later told me it was the funniest thing they'd ever seen happen.

Soon after, I moved to programming at a different company. I think this was a good thing for many reasons, but one reason is that it was more challenging, so I wasn't bored with time on my hands to do stupid things like send prank emails to my coworkers.
by seanlinehan | 2025-04-01 13:31:05+00:00
A simple salary + percent commission is a great model.

That said, this calculator was built to model/simulate the things that are super common in enterprise SaaS:

1. It takes sellers time to ramp up. Experienced sellers might be willing to jump to your company, but not if they are guaranteed to only get their (relatively) low base salary for 1-2 quarters.

2. If you decide to do a ramp, you have to make a choice about the OTE.

If you can avoid doing these things, that's great. Though whether that will fly largely depends on whether your sales cycle and target talent market supports it!
by jerf | 2025-04-01 13:31:40+00:00
"you still need to decide on heap vs stack"

No, you can't decide on heap vs stack. Go's compiler decides that. You can get feedback about the decision if you pass the right debug flags, and then based on that you may be able to tickle the optimizer into changing its mind based on code changes you make, but it'll always be an optimization decision subject to change without notice in any future versions of Go, just like any other language where you program to the optimizer.

If you need that level of control, Go is generally not the right language. However, I would encourage developers to be sure they need that level of control before taking it, and that's not special pleading for Go but special pleading for the entire class of "languages that are pretty fast but don't offer quite that level of control". There's still a lot of programmers running around with very 200x ideas of performance, even programmers who weren't programmers at the time, who must have picked it up by osmosis.

(My favorite example to show 200x perf ideas is paginated APIs where the "pages" are generally chosen from the set {25, 50, 100} for "performance reasons". In 2025, those are terribly, terribly small numbers. Presenting that many results to humans makes sense, but my default size for paginating API calls nowadays is closer to 1000, and that's the bottom end, for relatively expensive things. If I have no reason to think it's expensive, tack another order of magnitude on to my minimum.)
by nosebear | 2025-04-01 13:31:48+00:00
I agree - I always wonder should I go overkill and put everything in its own VM for separation? Is it ok to just use containers?

If using Podman, should I use rootless containers (which IMO suck because you can't do macvlan so the container won't easily get its own IP on my home network)? Is it ok to just use rootful Podman with an idmapped user running without root privileges inside the container and drop all unneccessary capabilities? Should I set up another POSIX user before, such that breaking out of the container would in the end just yield access to an otherwise unused UID on the host?

If using systemd-nspawn, do all the above concerns about rootful / rootless hold? Is it a problem that one needs to run systemd-nspawn itself with root? The manpage itself mentions "Like all other systemd-nspawn features, this is not a security feature and provides protection against accidental destructive operations only.", so should I trust nspawn in general?

Or am I just being paranoid and everything should just be running YOLO-style with UID 1000 without any separation?

All of this makes me quite wary about running my paperless-ngx instance with all my important data next to my Vaultwarden with all of my passwords next to any Torrent clients or anything else with unencrypted open ports on the internet. Also keeping everything updated seems to be a full time job by itself.
by empath75 | 2025-04-01 13:32:03+00:00
I think the email is what shifted it from being a funny joke to being super obnoxious to a lot of people. If it had just been the message on the printer, a lot of people wouldn't have noticed it and a lot of people that did would have had a quiet chuckle about it at worst.

The email is what turned it from being a speed bump to a major impediment to people, at least mentally.
by cogman10 | 2025-04-01 13:32:15+00:00
AutoValue, Immutables, MapStruct. All libraries that do what Lombok does without using JVM internals.

Records also literally do a huge portion of what Lombok does.

There are a lot of fairly popular alternatives to Lombok out there that don't need a constant eye on maintenance. Lombok is probably the most popular but that's really mostly because it's got the first mover advantage.
by mr_mitm | 2025-04-01 13:32:16+00:00
There seems to be a bit of confusion about the Hilbert-Einstein controversy [1], and I believe consensus is that Hilbert derived the equations a few days before Einstein, but did not claim ownership of the research. But this is the first time I'm hearing that Hilbert made a mistake. (I mean, maybe he did, but he got the right result eventually.)

[1] https://physics.stackexchange.com/questions/56892/did-hilber...
by sgc | 2025-04-01 13:32:17+00:00
Although payload can be indicative of page load speed, there are many good reasons Lighthouse scores are more complex than that. Specifically, at the start of this thread the criticism was that the js work in modern web apps is slow. I have thus far managed to avoid using react so I don't know the actual numbers, but I don't think the conversation should be reduced to payload size, even if it is obviously important. When I profile problematic pages, other than sites that don't properly scale their images, it is not usually network that bogs them down, it is the rendering.

Even focusing on Lighthouse score or similar for a basic app is totally missing the point of Nue as presented on the linked page. It about a framework designed for speed that can handle data at scale, that is easier to control and personalize, and easier to model and thus architect. And yes, of course, most any framework can be used for good work, but the relevant question here is which one promotes it the most from start to finish, and makes it the easiest to implement. Speaking only for myself, this focus is great to see.
by palmotea | 2025-04-01 13:32:53+00:00
> (2000)

It was probably actually written sometime prior to June 1999, because that's when the author got his Physics BS at Stanford (https://pages.cs.wisc.edu/~kovar/cv.html).

I kinda want to know more of the backstory around this. What grade did he get? Or was this a private venting exercise he later put up on his webpage, once he was well clear of the course?

The author did eventually go into CS, I wonder if this project was his actual breaking point.

https://pages.cs.wisc.edu/~kovar/bio.html
by LoganDark | 2025-04-01 13:33:00+00:00
You really don't want to wire up power supplies like that in parallel because tiny voltage fluctuations could (read: would) cause all of the current to be drawn from one or the other instead of evenly distributing between them. You can, however, wire server power supplies up in series (I have done it successfully) with relatively more success, even though it's still not the greatest idea.
by Y_Y | 2025-04-01 13:33:13+00:00
Fwiw I certainly didn't mean to say this is unique to physics, I'm just not qualified to comment on other fields. Furthermore you make a good point, the hero worship is fruitful. Anecdotally I'd say a full third of my undergrad cohort cited Feynman's auto-hagiography as part of their decision to study physics.

(I also note that any double-edged polyhedral sword is necessarily degenerate.)
by gilbetron | 2025-04-01 13:33:41+00:00
"I would never wish to incorporate this technology into my work at all. I strongly feel that this is an insult to life itself."

The "insult to life" is specifically about the tech, from my reading. Granted, if he had been shown something less grotesque, maybe he would've responded differently? I doubt it, the guy doesn't like CGI either.
by gwbas1c | 2025-04-01 13:34:03+00:00
> Why F#?

I'm kinda wondering if anyone here with decent C#/.net experience can give their version of the answer?

---

The article really didn't answer its own question. It basically says "How" instead of "Why"...

...Which as someone who's spent over 20 years in C#, and tends to advocate for "functional" style, leaves me with more questions than answers!
by kuon | 2025-04-01 13:34:10+00:00
I manage about 500 servers. Critical services like DNS, mail, tftp, monitoring, routing, firewall... are all running openbsd in N+1 configuration, and in 15 years we had zero issue with that.

Now most servers are app servers, and they all run archlinux. We prepare images and we run them with PXE.

Both those are out of scope for self host.

But, we also have about a dozen of staging, dev, playground servers. And those are just regular installs of arch. We run postgres, redis, apps in many languages... For all that we use systems packages and AUR. DB upgrade? Zfs snapshot, and I follow arch wiki postgres upgrade, takes a few minutes, there is downtime, but it is fine. You mess anything? Zfs rollback. You miss a single file? cd .zfs/snapshots and grab it. I get about 30minutes of cumulated downtime per year on those machines. That's way enough for any self host.

We use arch because we try the latest "toys" on those. If you self host take an LTS distribution and you'll be fine.
by gwbas1c | 2025-04-01 13:34:30+00:00
If you've had C# and F# co-exist in the same codebase, how do they co-exist? Is it like C# and VB.Net where a project (dll) is either C# or VB.Net, and they can reference each other?

Or: Is it more like the Swift / Objective C ecosystem where Swift, Objective C, and even straight C can co-exist in the same library?

In a mixed C# and F# codebase, generally when do you favor C# versus F#?

Coming from a C# background, what are the areas where F# is a better language?

Any success stories for F#, especially if it co-exists with C#? Any horror stories?
by diggan | 2025-04-01 13:35:07+00:00
> pitched as a selfhosting platform for medical and other highly regulated industries

From first hearing about Sandstorm since the first open beta 10 years ago (https://news.ycombinator.com/item?id=10147774) and reading about it on/off since then, this is first time I hear anyone pitching it for "medical and other highly regulated industries". Where exactly does this come from?

> There's still nothing else quite like it

Plenty of other similar self-hosted platforms, YunoHost is probably the closest, most mature and most feature-packed alternative to Sandstorm, at least as far as I know,.
by jerf | 2025-04-01 13:36:08+00:00
Long before sync.Pool was a thing, I wrote a pool for []bytes: https://github.com/thejerf/gomempool I haven't taken it down because it isn't obsoleted by sync.Pool because the pool is aware of the size of the []bytes. Though it may be somewhat obsoleted by the fact the GC has gotten a lot better since I wrote it, somewhere in the 1.3 time frame. But it solve exactly that problem I had; relatively infrequent messages from the computer's point of view (e.g., a system that is probably getting messages every 50ms or so), but that had to be pulled into buffers completely to process, and had highly irregular sizes. The GC was doing a ton of work when I was allocating them all the time but it was easy to reuse buffers in my situation.
by kbolino | 2025-04-01 13:36:40+00:00
Basically, anything that isn't a thin pointer (*T, chan, map) gets boxed nowadays. The end result is that both words of an interface value are always pointers [1], which is very friendly to the garbage collector (setting aside the extra allocations when escape analysis fails). I've seen some tricks in the standard library to avoid boxing, e.g. how strings and times are handled by log/slog [2].

[1]: https://github.com/teh-cmc/go-internals/blob/master/chapter2...

[2]: https://cs.opensource.google/go/go/+/refs/tags/go1.24.1:src/...
by gaugefield | 2025-04-01 13:37:07+00:00
This issue also bugged me for a while. It is more of cultural issue, and older the research group is, the less likely it is for research software to be open, in my experience.

In the area of deep learning based simulations, one good example of an open software is netket. The researcher their is pretty active in terms of github/gitlab/huggingface ecosystem.
by bluGill | 2025-04-01 13:37:12+00:00
Yes, but it is very very hard to find the personal discipline needed to do so. If you watch mindlessly you will learn very little. If you watch, then do the exercises/practice (depending on the topic different things are needed) you can learn a lot. Almost nobody does, but youtube and classroom lectures that are known to work are very similar - the difference is classrooms have various ways to get people to do the other homework.
by 9rx | 2025-04-01 13:37:27+00:00
> One could define a new "Pool[T]" type (extending sync.Pool) to get these guarantees:

So long as that one is not you? You completely forgot to address the expectation:

type Foo struct{ V int } pool := Pool[*Foo]{ // Your Pool type. New: func() any { return new(Foo) }, } a := pool.Get() a.V = 10 pool.Put(a) b := pool.Get() fmt.Println(b.V) // Prints: 10; 0 was expected.
by neonsunset | 2025-04-01 13:37:46+00:00
As sibling comment pointed out, it's just .fsproj manifest and Program.fs file. What boilerplate do you speak of? It's on the opposite end boilerplate-wise to projects made in e.g. Java or TypeScript.

For F#, projects are needed to make full applications or libraries. Otherwise, you can simply write F# scripts with .fsx and execute them via 'dotnet fsi {SomeScript.fsx}'.

(obviously you can also specify dotnet fsi as shebang and integrate these scripts into general scripting on Unix systems - it's very productive)
Do we have a "GenAI dependabot"?
by guilhermecgs | 2025-04-01 13:37:53+00:00
It would be great to have something like Dependabot, but for performing generic maintenance across multiple projects — not just library updates. For example, adding a standardized README to a project or ensuring that all database write operations have associated logs. Each check could be defined by a set of prompts running in the background, managed by a central team within the company or a dedicated group responsible for these validations.
by djtango | 2025-04-01 13:38:10+00:00
Interesting - I'm curious where your thoughts are now on using FP/Scala in 2025?

I've always looked at F# with envy as it is a hosted ML that will have extremely battle tested bindings to the important day to day stuff via C# (Darklang's stories of struggling with postgres and AWS when using OCaml was a good cautionary tale on the risks of using less common langs as a startup)

Never had a chance to try out Scala but am a seasoned Clojurian, as an outsider it seemed Scala suffered a little from being not opinionated enough so the ML family has been more appealing to tinker with even though Scala supports type classes out the box and will also have great ecosystem support via the JVM
by acc_297 | 2025-04-01 13:38:49+00:00
From the wiki I take it they have yet to build and fly a full-sized prototype

"A 1/4 scale model was successfully demonstrated in 2022 in Narragansett Bay"[1]

Also I assume radar-proof is just because it's a ground effect vehicle that will never fly high enough to show up on radar it certainly doesn't look all angular like a stealth bomber. In which case my bicycle is also radar-proof?

[1] https://en.wikipedia.org/wiki/REGENT_Viceroy
by tossandthrow | 2025-04-01 13:39:14+00:00
> you have JS in production; your TS is only in dev.

As my sibling says, this is wrong. We indeed have TS in production.

Even for the parts that are being compiled to JS: You wouldn't say: You can not have C++ in production, only binaries.

The fact is that we don't write any JS as a part of our platform.

> It's not that you can't; it's that you choose not to

I think I made that quite clear in my comment.

> a language across the entire stack with mature wide adopted frameworks and libraries
by viraptor | 2025-04-01 13:39:15+00:00
They're not responsible for the policy, but typically when you're thinking of a job at Oracle, you likely can have other options. At least if we're taking about software engineers and similar people. I was being recommended for a position by friends who moved there and I refused, because it's a shit company. The money is not worth it. It's the whole "contractors on Death Star" thing from Clerks.
by unchar1 | 2025-04-01 13:39:17+00:00
> To be clear, they are not "using" TypeScript, it's more accurate to say they are providing TypeScript bindings.

Interesting that you say it's more about providing "bindings", and not really "using". Much of the types in the svelte codebase are never exported outside of svelte, and they are only consumed internally.

The problem they were having was with transpilation, since the browser doesn't run JS.

From Rich Harris (months after svelte switched to JSDoc) [1]:

> removing types from your own code is clownish, epically misguided behaviour, but whatever — to each their own

I would suggest going through the issues and PRs in the codebase to see how invested the Svelte team is in typescript.

> TypeScript is not "real" static typing in the same sense as Go, Rust, C#.

That is true for Go, Rust, C#. But the same thing is also true for languages like C, and Generics in Java. I'm sure both of those languages have weak type systems, but are definitely statically typed.

I think the fact that type information is lost after being compiled isn't really a classifier for typed/non-typed. Ultimately it all comes down to machine code, and that certainly isn't typed either.

[1]: https://x.com/Rich_Harris/status/1699490194565578882
by ddingus | 2025-04-01 13:39:23+00:00
>Of course you can never underestimate the achievements of Farbrauch, ASD (from Greece!), CNCD, all the legendary groups who produced these productions. But, come on, where is the massive demoscene output that should be there given the massive, huge gaming branch which is all about animation, sound and visuals, and pushing boundaries?

This seems to be the core element in your part of this discussion.

And like every NFT mention I have seen, associating it with either the idea of untapped value with the purchase of an NFT (if that even makes sense somehow), or it is some how a way to control use, seems dubious at best, given no one has shown how involving the NFT creates additional value or has intrinsic value of some kind beyond the "makes a nice ticket" use already mentioned.

The NFT just is not germane. And "bark" is not helpful either.

Fact is, sceners started looking at each others work using disassenblers! Many still do. I do, and have, and will do so again.

I think your preservation argument is weak sauce like the NFT is weak sauce.

They are neat uses of the block chain, and that means what again?

I am not in favor of them in this context at all.

Must we continue, "what about that and NFT?" over and over before accepting the NFT just does not seem to add value, except for the hard core few looking for ANYTHING to stick?

Probably, lol.

As for that missing, and massive output, perhaps there is confusion here too. The way I see it, generative art came to the scene, who was really more about more fully exploiting tech. This is particularly true of older hardware and productions, and the sceners who did all that to start it all.

The real driving forces behind most scene works just are not mainstream things.
by pyrale | 2025-04-01 13:39:44+00:00
> There's no way in Java, Rust or C++ to express this either

You make it look like it's a good thing to be able to express it.

There's no way in Java, Rust or C++ to express this, praised be the language designers.

As for expressing a pool value that may be multiple things without a horrible any type and an horrible cast, you could make an union type in Rust, or an interface in Java implemented by multiple concrete objects. Both ways would force the consumer to explicitly check the value without requiring unchecked duck typing.
by Y_Y | 2025-04-01 13:39:45+00:00
I was about to link you what I thought was best coverage of the priority I knew about, https://www.science.org/doi/10.1126/science.278.5341.1270 but now I see that's in the second edit of the accepted answer at your link.

(I certainly count myself among the confused, but I don't think there's any real dispute to answer.)

See also: this work alleging some foul play in the historical record - https://www.degruyter.com/document/doi/10.1515/zna-2004-1016...
by jlouis | 2025-04-01 13:39:56+00:00
It is fairly common your type system ends up with escape hatches allowing you to violate the type rules in practice. See e.g., OCaml and the function "magic" in the Obj module.

It serves as a way around a limitation in the type system which you don't want to deal with.

You can still have the rest of the code base be safe, as long as you create a wrapper which is.

The same can be said about having imperative implementations with functional interfaces wrapping said implementation. From the outside, you have a view of a system which is functionally sound. Internally, it might break the rules and use imperative code (usually for the case of efficiency).
by mingus88 | 2025-04-01 13:40:21+00:00
You should always bring a burner device when traveling to a foreign country, US or otherwise

The border patrol can effectively do anything they want, for any reason. If they ask you to unlock your devices, do it. Let them take it away to be imaged. There will be nothing of value on a burner device.

1password has a travel mode which will remove vaults from your devices. Take this one step further and remove everything unnecessary for travel from your devices
by perihelions | 2025-04-01 13:40:37+00:00
I'm not sure what's supposed to be publication-worthy here. This is common knowledge for anyone who's ever interacted with sheep on a farm, in their natural, fermionic superfluid state. If you turn over a sheep and tickle its ticklish underbelly, you get a sheep-laugh (a hilarious sound) only about 50% of the time; the other 50%, you'll hear a sheep laughing from the opposite end of the meadow. Because, you cannot definitively say if it was *this* sheep you tickled, or *that* other, identical one. They are indistinguishable baa-tickles