MurphyA/hacker-news huggingface dataset:
by FredPret | 2025-05-16 01:44:21+00:00
Your comment has two lines but manages to be very puzzling indeed.

"temporarily embarrassed millionaire" is a term that bares your ideological slant, which I hope and I'm sure you realize. But that you pose our ideological differences as a problem is bizarre. You do realize the world contains left- and right-wingers, and that probably 90% of the population is somewhere in the middle, right? And that this is OK? Or do you insist that everyone see things 100% as you do?

Also, who said only the 1% is rich? If I say it's the top 2% then we're well into the hundreds of millions, no? And what about all the rich people who were alive in the past, can we not use their attitudes for our discussion too? And what if we pick a numeric cutoff to be considered rich, or a qualitative one?
by pmarreck | 2025-05-16 01:45:24+00:00
I've been diving into Lua (a little late to this party, but turns out it's a perfect language to rewrite some commandline scripts I had that were getting unwieldy in Bash, especially with LLM assistance!) and it's really something of an eye-opener.

LuaJITted Lua code runs at 80% (on average, sometimes faster!) of the compiled C version of the same algorithm, typically. Lua is embedded in a surprisingly massive number of products: https://en.wikipedia.org/wiki/List_of_applications_using_Lua The startup time of a script is in nanoseconds. An "echo" written in Lua runs faster than the native echo implementation.

The only warts so far are 1-based indexing (you get used to it), and the fact that LuaJIT is stuck at Lua 5.1 while Lua itself is up to 5.3 or 5.4 and has added some niceties... with Lua proper running slower. And no real standard library to speak of (although some would argue that's a feature; there are a few options and different flavors out there if that's what you need, though- Such as functional-flavored ones...)

Anyway, there's nothing else like it out there. Especially with its relative simplicity.

There are also some neat languages that compile to (transpile to?) Lua, and deserve more attention, such as YueScript https://yuescript.org/, which is a still actively-updated enhanced dialect of MoonScript https://moonscript.org/ (described as "Coffeescript for Lua", although it hasn't been updated in 10 years) although neither of these are typed. HOWEVER... there IS this: TypescriptToLua https://typescripttolua.github.io/, which takes advantage of ALL the existing TypeScript tooling, it just outputs Lua instead of JS!
by th0ma5 | 2025-05-16 01:46:19+00:00
I subscribe to Microcenter's emails and the one with the miscellaneous lesser priced accessories always completely loads in Gmail and it gives me a little bit of that feeling of flipping through an old computer shopper. I think those are all being scanned too and uploaded to the archive I think https://archive.org/details/computer-shopper-may-1996-images...
by x-complexity | 2025-05-16 01:46:51+00:00
> > Even so, the two cannot be connected without adding the human-centric context node to the graph.

> The entire graph is human-centric context. It doesn't exist outside of our PoV.

(physics/chemistry/maths) can exist outside of the human-centric context: To claim otherwise is to axiomatically require a form of untouchable uniqueness to humans, which is not true.

> If you have an undergraduate degree (or a high school diploma from last century) you've taken classes on this specific subject and forgotten what you've learned.

I'm ignoring the ad-hominem attack in this sentence.

> > This stands in contrast to (physics/chemistry/maths), which can be derived outside of the human experience.

> Think about this statement. How would you possibly know if something can be derived from outside of the human experience? We only have the human experience as a base. Your claim requires access to a peer-level-or-greater intelligence that we have not met.

The only change needed is to switch out the axiom

"Humans are universally unique intelligence-wise"

with

"Humans are not universally unique intelligence-wise"

From this change, the rest follows suit: If humans are not universally unique, then a non-human that's as-intelligent-or-better can re-derive (physics/chemistry/maths) within their non-human context with a strictly >0 probability of occurrence, even if the probability is infinitesimally tiny.

Given the >0 probabilistic nature of the whole logical chain being true, this means that the idea of (physics/chemistry/maths) being a universally "humans-only" experience is cannot be held true as it contradicts with the derived logic chain.

The proof of existence of said non-human(s) is not needed to prove the logical axioms themselves.
by imagineai | 2025-05-16 01:47:15+00:00
We built a tool that creates a personal AI agent that tweets, replies, and quote tweets in your voice, and it is fully autonomously or with human-in-the-loop review.

It learns from your past tweets and builds a lightweight model of: - your phrasing - reply habits - tone & common expressions

Then it acts based on customizable rules:

Auto-Pilot: fully autonomous tweet & reply generation

Co-Pilot: swipe to approve/edit before posting

Assist Mode: AI suggests, you publish

Optional targeting: focus engagement on select accounts

Activity log: full visibility into every post/action it takes

We originally built this for ourselves (2-person team, both dropped out of school to build full-time). Staying active on Twitter while building was unsustainable, so this helps us stay visible without constant effort.

No complex setup. OAuth with Twitter, then tweak how active you want the agent to be.

Would love thoughts from others here on:

What parts would you trust vs not trust to AI?

Does the "swipe to approve" interaction strike the right balance?

Would you want to control more aspects (e.g., sentiment, topic filters)?

Site: https://app.imagineai.me Free 7-day trial · No credit card required

We’re not trying to build yet another “AI writer.” This is more like a lightweight behavioral clone, still early, but we’re learning fast.

Happy to answer questions, share how we trained it, or get roasted
by kstrauser | 2025-05-16 01:47:58+00:00
It's a gotcha to be sure. Sometimes it does, sometimes it doesn't. From a reference[0]:

#include <string> struct T1 { int mem; }; struct T2 { int mem; T2() {} // “mem” is not in the initializer list }; int n; // static non-class, a two-phase initialization is done: // 1) zero-initialization initializes n to zero // 2) default-initialization does nothing, leaving n being zero int main() { [[maybe_unused]] int n; // non-class, the value is indeterminate std::string s; // class, calls default constructor, the value is "" std::string a[2]; // array, default-initializes the elements, the value is {"", ""} // int& r; // Error: a reference // const int n; // Error: a const non-class // const T1 t1; // Error: const class with implicit default constructor [[maybe_unused]] T1 t1; // class, calls implicit default constructor const T2 t2; // const class, calls the user-provided default constructor // t2.mem is default-initialized }

That `int n;` on the 11th line is initialized to 0 per standard. `int n;` on line 18, inside a function, is not. And `struct T1 { int mem; };` on line 3 will have `mem` initialized to 0 if `T1` is instantiated like `T1 t1{};`, but not if it's instantiated like `T1 t1;`. There's no way to tell from looking at `struct T1{...}` how the members will be initialized without knowing how they'll be called.

C++ is fun!

[0]https://en.cppreference.com/w/cpp/language/default_initializ...
by godelski | 2025-05-16 01:48:14+00:00
> modern CPUs are so fast that instructions are almost free.

Please don't.

These things compound. You especially need to consider typical computer usage involves using more than one application at a time. There's a tragedy of the commons issue that's often ignored. It can be if you're optimizing your code (you're minimizing your share!) but it can't be if you're not.

I guarantee you we'd have a lot of faster things if people invested even a little time (these also compound :). Two great examples might be Llama.cpp and FlashAttention. Both of these have had a huge impact of people (among a number of other works) but don't get nearly the same attention as other stuff. These are popular instances but I promise you that there's a million problems like these waiting to be solved. It's just not flashy, but hey plumbers and garbagemen are pretty critical jobs too
by bigfatkitten | 2025-05-16 01:48:25+00:00
The agencies I've worked with are pretty good about this. They rotate forensics specialists in and out of particularly traumatic work like child protection, they have support systems in place, and they give their staff plenty of downtime. One place I'm familiar with has about 30% of their team out at any given moment.

The same can't be said for other people down the chain, such as detectives and prosecutors. They absolutely are told to just suck it up.
by BSTRhino | 2025-05-16 01:48:27+00:00
You are right. I am insane. I've had many existential crises about this exact issue over the past 3 years.

I just had a very very particular idea of what I wanted to do and nothing else would do. Making automatic multiplayer was only half my mission. The other half was creating the perfect first programming language. (I talked about this in another comment: https://news.ycombinator.com/item?id=44001047 )

I would love for Easel to inspire other game engines about how multiplayer could or should be done. But I just can't personally do this any other way. It's like, sometimes I don't know if I chose this project or it chose me.
by djmips | 2025-05-16 01:49:52+00:00
I don't have any data for this - so it's just a conjecture - but I think ML-Enhanced Code Completion and other AI developer tools levels the playing field for anyone who enjoys pair programming but doesn't have someone to participate, or gets analysis paralysis or blank page syndrome. I think this sort of thing is why you are getting the wide spectrum of feedback about how good AI coding tools are. For some, who already had smooth transition into flow it's not such a big deal but for others they might be experiencing a neo-flow like state for the first time possibly.
by 90s_dev | 2025-05-16 01:51:30+00:00
Every language has warts. Even Lua.

Like another commenter said, using . instead of : is maybe the most common mistake, too easy to make. And Lua offers no help preventing or checking it.

TypeScript is a great language. So is Lua. So is C.

When used carefully to avoid their warts. Learning how to do that for any language takes time and practice though.
by zahlman | 2025-05-16 01:51:39+00:00
My experience has overwhelmingly been that people object to being told that they can't just ask the question they want - not to the specific words used.

We don't allow anyone to use insults; we expect each other to be patient; we use our "please"s and "thank you"s in comments (even as we remove them from questions) - and if you see otherwise, please flag it; moderators take code of conduct violations seriously.

But none of this seems to make a difference. And people come to the site with expectations about politeness that simply aren't conducive to getting people to stop doing things they aren't supposed to do:

https://meta.stackoverflow.com/questions/366889 https://meta.stackoverflow.com/questions/368072 https://meta.stackoverflow.com/questions/373801 https://meta.stackoverflow.com/questions/334870

Meanwhile, a major reason why people aren't required to explain in a comment why they downvoted a question, is because of the history we've had with downright vitriolic replies from OPs who seem uninterested in the rules:

https://meta.stackoverflow.com/questions/357436 https://meta.stackoverflow.com/questions/352575

Rudeness happens all around, really:

https://meta.stackoverflow.com/questions/326494

Related: https://meta.stackoverflow.com/a/309018/523612

(And, of course, all of this really blows up once assumptions start getting made about who is or isn't especially sensitive: https://meta.stackoverflow.com/questions/366665)
by bigstrat2003 | 2025-05-16 01:51:50+00:00
And you can use hammers to brutally murder people as well as to drive in nails. You can use a screwdriver to grievously wound someone besides using it to repair your glasses. The fact that a tool can be used for bad things does not negate the good things it can be used for. Nor does it mean that the maker is responsible if someone chooses to use it for bad things.
by pansa2 | 2025-05-16 01:53:01+00:00
> Teal is a statically-typed dialect of Lua.

I was expecting Teal to be "Lua + type annotations", similar to Mypy. However from a quick look it does indeed seem to be a "dialect" in its own right. Teal is Lua-like and compiles to Lua, but there's more to it than just static types. Perhaps it's more similar to TypeScript?

For example, Teal replaces Lua's tables - the language's signature single, highly-flexible data structure - with separate arrays, tuples, maps, records and interfaces. It changes the variable scoping rules and even adds macro expressions.

Teal therefore seems substantially more complex than Lua. The author recognizes this in the conclusion to a recent presentation [0]: Lua is "small and simple", maybe Teal is "something else"? Lua is for "scripting", maybe Teal is better suited to "applications/libraries"?

[0] https://youtu.be/Uq_8bckDxaU?t=1618
by michaelteter | 2025-05-16 01:53:26+00:00
The first thing I would do would be to take some of the inner forms and turn them into functions (single responsiblity). This isn't even Clojure-specific.

Lots of little, simple functions, composed... You can still use the threading at a higher function, but instead of doing the actual work at each step in the pipeline, you call a well-named function which does what that step was doing. Yes, it may feel redundant, but it absolutely improves human comprehension because it reads like clear human instructions.

Tests become much simpler too.

The only two challenges I face with this approach is 1 - naming things, and 2 - organizing. The function names tend to become quite long, since they ideally describe what the function does.

I haven't done this lately, now that the AI tools have become pretty great; I can imagine that an AI tool would be an excellent knowledge base for these many functions, and it would probably be very successful in providing additions or modifications given the clean, clear function names and brief contents.
by kstrauser | 2025-05-16 01:53:57+00:00
For the young'uns among us, imaging that you didn't have access to the Internet, but you still needed to research and build a PC from parts. Now imagine someone mails you a 896 page (!!!) magazine describing basically every part you could ever actually need or want, along with a gazillion vendors for each.

And you got a new version every month.

It was pure magic, I tell you.
by AStonesThrow | 2025-05-16 01:55:34+00:00
Err, "today" today? Today looks more like May 15 to me.

The 19th century closed on December 31, 1900, right? Do you disagree with that? That the 20th century began on 1/1/1901? Not in dispute?

I would say we're at 124.5 years after its close today, if you really mean today. I suppose if you want to be sloppy and round up we could achieve 125, but technically, we're still, like, 7.5 months away from December 31st.
by Qem | 2025-05-16 01:57:09+00:00
There is at least one project that managed to take the Iverson ghost[1] from Numpy and actually implement a complete array language[2] on top of it, so there is no need to stray far away from Python's ecosystem.

Previous discussion: https://news.ycombinator.com/item?id=42293723

[1] https://analyzethedatanotthedrivel.org/2018/03/31/numpy-anot...

[2] https://github.com/briangu/klongpy
by Benjamin_Dobell | 2025-05-16 01:57:27+00:00
You can get pretty far by bolting annotations onto Lua (no compilation step), for example using my IDE:

https://github.com/Benjamin-Dobell/IntelliJ-Luanalysis

Admittedly, I've been focused on some other things recently, but still with some focus on type safety e.g. https://breaka.club/blog/godots-most-powerful-scripting-lang...
by taeric | 2025-05-16 01:57:39+00:00
I mean, I got that. But you could as easily say "instead of fetching and acting on one event at a time, fetch and triage/route instructions into applicable queues."

In particular, there is no guarantee that moving to batches changes any of the problems you may have from acting on a single one at a time. To that end, you will have to look into all of the other strategies sooner or later.

Following from that, the problem is not "processMessage" or whatever. The problem is that you haven't broken "processMessage" up into the constituent "receive/triage/process/resolve" loop that you almost certainly will have to end up with.
by stavros | 2025-05-16 01:57:41+00:00
Unfortunately, I haven't had a good experience with tool use. I built a simple agent that can access my calendar and add events, and GPT-4.1 regularly gaslights me, saying "I've added this to your calendar" when it hasn't. It takes a lot of prompting for it to actually add the event, but it will insist it has, even though it never called the tool.

Does anyone know of a fix? I'm using the OpenAI agents SDK.
by WalterBright | 2025-05-16 01:58:07+00:00
Strikes are not revolts.

> The rest of the US was primarily agricultural, and did not have major strikes until later, but the improvement in the lives of those people who lived there was not because of free markets. Their lives improved because of the immense natural resources that were literally being given away free to people to cultivate and exploit, after the Native Americans were subjugated and removed.

The same thing at the same time happened in Central and South America, yet prosperity and uplift never happened.

What's the difference? Free markets in the US. Unfree markets in Central and South America.

Japan, S Korea, Taiwan and Hong Kong have no natural resources, but when they turned to free markets, it's boom time for their economies.
by tom_m | 2025-05-16 01:58:11+00:00
Absolutely. The "intelligence" isn't complete without a memory. In fact there's a whole lot more to it than that. The LLM is one component, a logic factory, but there's so much more than the LLM and the memory.

In fact, systems should be LLM agnostic or use different models for different needs.

I don't believe building something into the model will ever be the solution though. It is interesting what Google is trying to do with model caching but at the end of the day I believe the strength of agents here will rely heavily upon modularity.
by gnabgib | 2025-05-16 01:58:34+00:00
Several copies of this already:

(20 points, 16 hours ago) https://news.ycombinator.com/item?id=43993496

(8 points, 7 hours ago) https://news.ycombinator.com/item?id=43998390

(13 points, 3 hours ago) https://news.ycombinator.com/item?id=44000163

And British ICC chief prosecutor lost access to email and has bank accounts frozen (30 points, 1 hour ago) https://news.ycombinator.com/item?id=44000773
by protocolture | 2025-05-16 01:58:40+00:00
The people who act as if PDFs are legally immutable are not performing MD5 comparisons.

Also, that isnt even an intention of the file format as far as I can see, its mostly a byproduct of cruft and backwards compatibility.

No one would call .doc immutable because its very difficult to move an image and then restore that image to the original location.

In this context, people will save something out as pdf and store it because they dont think it cannot be modified.

But as has been rightly pointed out, thats not the case.
by kazinator | 2025-05-16 01:58:45+00:00
> This rule makes sense when you think about it

No, it is bonkers; stick to your consistent point, please.

These two should have exactly the same effect:

bar() = default; // inside class declaration bar::bar() = default; // outside class declaration

The only difference between them should be analogous to the difference between an inline and non-inline function.

For instance, it might be that the latter one is slower than the former, because the compiler doesn't know from the class declaration that the default constructor is actually not user-defined but default. How it would work is that a non-inline definition is emitted, which dutifully performs the initialization, and that definition is actually called.

That's what non-bonkers might look like, in any case.

I.e. both examples are rewritten by the compiler into

bar() { __default_init; } bar::bar() { __default_init; }

where __default_init is a fictitious place holder for the implementation's code generation strategy for doing that default initialization. It would behave the same way, other than being inlined in the one case and not in the other.

Another way that it could be non-bonkers is if default were simply not allowed outside of the class declaration.

bar::bar() default; // error, too late; class declared already!

Something that has no hope of working right and is easily detectable by syntax alone should be diagnosed. If default only works right when it is present at class declaration time, then ban it elsewhere.
by deviantintegral | 2025-05-16 02:01:50+00:00
Worse yet is when banks tie authentication notifications to the ability to send you marketing and advertising permissions. My bank's app was sending me weekly marketing messages, and the only way to stop that was to go back to SMS 2FA.

I wish Apple (and Google, I presume) would actually enforce their app store guidelines and at least threaten to ban apps that do this. That seems like the only thing that'd actually have traction.
by AtlasBarfed | 2025-05-16 02:01:58+00:00
Really, it just references the ridiculous lengths companies do to not actually pay employees to do good work. Utterly broken reward systems, foosball tables, etc.

I have several times saved my companies multiples of my salary in saved cloud costs or other instances, and always of my own initiative out of "professionalism". There are lots of stories I recall on HN comments of similar things, and sure maybe they got a promotion or a title... I have heard of AWS tech people getting pretty big bonuses for big service wins. But that was a huge anomaly.

Capitalism is supposed to (in theory) reward efficiency and productivity. The CEOs certainly know how to advocate for financial performance rewards, as do many other managerial tiers.

Candy bars? Christ, it's kindergarten. I just never fail to be amazed that "capitalism" is a bunch of rigid hierarchical despotic firms fighting in a "free market"... well back when there were approximation of free markets. When you're in these tightly structured orgs, it's like authoritarian planned economies (that is communism in the totalitarian soviet sense, not any putative ideal of communism).

I'll spare you all the further rants about Middle Manaagement Machiavellianism.

Congrats on your candy bar and employee of the week picture.
by kstrauser | 2025-05-16 02:02:09+00:00
Safe defaults matter. If you're using x to index into a array, and it's randomly initialized as +-2,000,000,000 because that's what happened to be in that RAM location when the program launched, and you use it before explicitly setting it, you're gonna have a bad time.

And if you used it with a default value of 0, you're going to end up operating on the 0th item in the array. That's probably a bug and it may even be a crasher if the array has length 0 and you end up corrupting something important, but the odds of it being disastrous are much lower.