MurphyA/hacker-news huggingface dataset:
by bazoom42 | 2025-04-13 14:26:28+00:00
Multiple comments here referring to tv-shows. Just be aware that Tove Jansson wrote and illustrated books and comics but did not produce tv shows. What you have seen was not created by Tove Jansson.

The comics and the books are different in genre, even if they use the same characters and storylines. The comics are darkly satirial of modern life while the illustrated books feels more poetic and timeless.

Fun fact: Jansson illustrated The Hobbit and drew Gollum as a giant. Tolkien realized he never described the size of Gollum and made adjustments to later editions.
Show real-time server status to your users with UptimeBlip
by aravindkumarv | 2025-04-13 14:26:40+00:00
I built a small tool called UptimeBlip that shows a live popup on your website telling users if your servers are up or down — no refresh needed.

It’s lightweight, easy to set up, and useful for solo devs or teams who want transparency with users during outages.

No dashboards or complex UI — just a simple snippet and live status display. There’s a free plan to get started.

Try it here: https://www.uptimeblip.com/

Would love feedback from other builders — happy to answer questions or share how it works behind the scenes.
by bsimpson | 2025-04-13 14:27:00+00:00
For ~a decade, Facebook replaced the address book. You wouldn't ask for a phone number; you'd add someone on Facebook.

They got greedy. Word got out about how they'd manipulate the algorithm to get you to spend hours per day there, how aggressively they mined and sold your data, etc. It became unfashionable to use. People who had spent a decade recording their lives and connecting with their friends walked away from their accounts.

In the midst of all that, they bought Instagram. I've recently moved to NYC; paradoxically, people here ask for your Instagram the way that people used to ask for your Facebook.

Social networking isn't quite as consolidated in Meta as dating is in IAC/Match, but it's close.
by ljm | 2025-04-13 14:27:21+00:00
Not killed IME but bloated and dragged down by tech debt.

E.g the JS project that uses the stdlib Date API, and pulls in moment.js, and also uses date-fns.

Or the one that pulls in bits and pieces of lodash, ramda, and other functional libraries.

And maybe it uses native fetch and axios depending on the current phase of the moon.

They don’t die but time is wasted in code review trying to understand if there is any kind of deliberate approach behind the scattershot application of packages with duplicated purposes.

(picking on JS is perhaps unfair but it’s probably the most egregious example of dependency hell)
by lifeisstillgood | 2025-04-13 14:28:08+00:00
They are children’s tales - which are designed to hide lessons and warnings on the dark side of life in a wrapper that does not traumatise - like an inoculation against what comes.

Everything the Grimms brothers collected and Disney sanitised still hides warnings.

I have read all my children “The Tiger who came to Tea” as well as taken them to theatre performances- and the author ran from Germany hours before the Gestapo came knocking and it affected much of her life and writing (“Hitler Stole Pink Rabbit” is the autobiography I think)

So yeah. It’s got layers onion boy, layers.

Still have fond memories of my kid hugging a six foot moomin in Covent Garden.
by gruez | 2025-04-13 14:28:15+00:00
>I really wanted to like Graphene, but it feels more locked down than stock android. The primary reason I want a custom OS in the first place is that I want to control the device I own.

What specific ways do you feel are "more locked down" than stock? It's not recommended, but you can install magisk + root if you really wanted to. It won't try to prevent you.

>Graphene is just taking control of my phone from Google and giving it to whoever runs Graphene. I don't get any say in how my phone works.

That's fine. The homepage of grapheneos says:

"The private and secure mobile operating system with Android app compatibility"

Surely you must understand that "security" and "giving users a say in how their phone works" are diametrically opposed? A phone can't be secure if its sandbox can be bypassed in one tap by the user. You might have a lot of say in how your linux system works, but don't kid yourself into thinking it's secure. It's only one `bash -c "$(curl -fsSL http://...` from getting pwned.
by LegionMammal978 | 2025-04-13 14:28:15+00:00
They're all in the standalone files, e.g., look at the source of https://kingbird.myphotos.cc/packing/square-11.svg. It defines a bunch of entities to represent various lengths and angles, which obviously can't be <use>d. (CSS variables would be an alternative these days, but many non-browser tools such as librsvg will have trouble with those as well.)
by Juliate | 2025-04-13 14:29:20+00:00
It's not the only objection, but it's one of the major and blocking ones, because how do you _prove_ that you do not have unconsented copyrighted contents in your training set?

The other objections, in the economic range (replacing/displacing artists work for financial gain, from the producers point of view) are totally valid too, but don't rely on the same argument.

And my point above is not really an objection, it's a reminder: of what are AI generators, and what they are not (and that AI generators promoters pretend they are, without any piece of evidence or real argument).

Of what their output is (a rough, industrial barely specified and mastered product), and what it is not (art).
by wizzwizz4 | 2025-04-13 14:29:31+00:00
The software wasn't unmaintainable. The PowerPoints etc were artefacts of a time when everyone involved understood some implicit context, within which the documentation was clear (not cryptic) and current (not obsolete). The only traces of that context we had, outside the documentation, were minor decisions made while writing the program: "what mindset makes this choice more likely?", "in what directions was this originally designed to extend?", etc.

Personally, I'm in the "you shouldn't leave vital context implicit" camp; but in this case, the software was originally written by "if I don't already have a doctorate, I need only request one" domain experts, and you would need an entire book to provide that context. We actually had a half-finished attempt – 12 names on the title page, a little over 200 pages long – and it helped, but chapter 3 was an introduction-for-people-who-already-know-the-topic (somehow more obscure than the context-free PowerPoints, though at least it helped us decode those), chapter 4 just had "TODO" on every chapter heading, and chapter 5 got almost to the bits we needed before trailing off with "TODO: this is hard to explain because" notes. (We're pretty sure they discussed this in more detail over email, but we didn't find it. Frankly, it's lucky we have the half-finished book at all.)

AI slop lacks this context. If the software had been written using genAI, there wouldn't have been the stylistic consistency to tell us we were on the right track. There wouldn't have been the conspicuous gap in naming, elevating "the current system didn't need that helper function, so they never wrote it" to a favoured hypothesis, allowing us to identify the only possible meaning of one of the words in chapter 3, and thereby learn why one of those rules we were investigating was chosen. (The helper function would've been meaningless at the time, although it does mean something in the context of a newer abstraction.) We wouldn't have been able to used a piece of debugging code from chapter 6 (modified to take advantage of the newer debug interface) to walk through the various data structures, guessing at which parts meant what using the abductive heuristic "we know it's designed deliberately, so any bits that appear redundant probably encode a meaning we don't yet understand".

I am very glad this system was written by humans. Sure, maybe the software would've been written faster (though I doubt it), but we wouldn't have been able to understand it after-the-fact. So we'd have had to throw it away, rediscover the basic principles, and then rewrite more-or-less the same software again – probably with errors. I would bet a large portion of my savings that that monstrosity is correct – that if it doesn't crash, it will produce the correct output – and I wouldn't be willing to bet that on anything we threw together as a replacement. (Yes, I want to rewrite the thing, but that's not a reasoned decision based on the software: it's a character trait.)
by LegionMammal978 | 2025-04-13 14:30:12+00:00
> which is also what the page you linked is using

To be clear, it's using both of them for different purposes, you'll find both <use> elements and <!ENTITY> declarations in files like https://kingbird.myphotos.cc/packing/square-11.svg. You can't <use> a numeric quantity in an attribute, the closest alternative for those would be CSS variables.

As for the existence of <use>, I agree with jarek-foksa, the idea is that the original element and all its clones from <use> are linked in the DOM at runtime, as opposed to DTD entities which are baked in textually. Also, most people hate XML, I'd imagine they'd hate internal DTDs doubly so, especially with how little information can be found about them outside the XML standard.

(Browser devs also love to beat the drum of minimizing attack surface, so it's a bit surprising that DTDs and XML stylesheets still work at all. I'd expect them to tear out that functionality in a heartbeat if it were ever used in a modern exploit.)
Show HN: I made an interactive website to teach young students Astronomy
by GeorgiMY | 2025-04-13 14:30:22+00:00
3 Years ago I wanted to play with some astronomy concepts but there were very limited options for what you could do on the web. That's why I decided to create this platform that has dynamic simulations with which you can play with.

Simulations consist of: - Playing God with gravity concepts - Black Hole simulation - Solar System simulation

It's made with pure JavaScript, HTML and CSS
by 0_____0 | 2025-04-13 14:30:57+00:00
I get the sense that the team represented here are going it alone e.g. there aren't amateur rocketry organizations around that they can work with and gain knowledge and working practices from.

Maybe someone on here who is in amateur rocketry can reach out and forge some connections between their group and more established ones? That's the true beauty of the Internet, right?
by rssoconnor | 2025-04-13 14:31:22+00:00
I have the following file called oop.nix dated from that time.

# Object Oriented Programming library for Nix # By Russell O'Connor in collaboration with David Cunningham. # # This library provides support for object oriented programming in Nix. # The library uses the following concepts. # # A *class* is an open recursive set. An open recursive set is a function from # self to a set. For example: # # self : { x = 4; y = self.x + 1 } # # Technically an open recursive set is not recursive at all, however the function # is intended to be used to form a fixed point where self will be the resulting # set. # # An *object* is a value which is the fixed point of a class. For example: # # let class = self : { x = 4; y = self.x + 1; }; # object = class object; in # object # # The value of this object is '{ x = 4; y = 5; }'. The 'new' function in this # library takes a class and returns an object. # # new (self : { x = 4; y = self. x + 1; }); # # The 'new' function also adds an attribute called 'nixClass' that returns the # class that was originally used to define the object. # # The attributes of an object are sometimes called *methods*. # # Classes can be extended using the 'extend' function in this library. # the extend function takes a class and extension, and returns a new class. # An *extension* is a function from self and super to a set containing method # overrides. The super argument provides access to methods prior to being # overloaded. For example: # # let class = self : { x = 4; y = self.x + 1; }; # subclass = extend class (self : super : { x = 5; y = super.y * self.x; }); # in new subclass # # denotes '{ x = 5; y = 30; nixClass = <LAMBDA>; }'. 30 equals (5 + 1) * 5). # # An extension can also omit the 'super' argument. # # let class = self : { x = 4; y = self.x + 1; }; # subclass = extend class (self : { y = self.x + 5; }); # in new subclass # # denotes '{ x = 4; y = 9; nixClass = <LAMBDA>; }'. # # An extension can also omit both the 'self' and 'super' arguments. # # let class = self : { x = 4; y = self.x + 1; }; # subclass = extend class { x = 3; }; # in new subclass # # denotes '{ x = 3; y = 4; nixClass = <LAMBDA>; }'. # # The 'newExtend' function is a composition of new and extend. It takes a # class and and extension and returns an object which is an instance of the # class extended by the extension. rec { new = class : let instance = class instance // { nixClass = class; }; in instance; extend = class : extension : self : let super = class self; in super // (if builtins.isFunction extension then let extensionSelf = extension self; in if builtins.isFunction extensionSelf then extensionSelf super else extensionSelf else extension ); newExtend = class : extension : new (extend class extension); }

In nix overlays, the names "final" and "prev" used to be called "self" and "super", owing to this OOP heritage, but people seemed to find those names confusing. Maybe you can still find old instances of the names "self" and "super" in places.
by stavros | 2025-04-13 14:31:59+00:00
Again, the library in the article removes some stdlib footguns. The footguns are there, and if you use the stdlib, you need to remove (or avoid) them yourself. There's no free lunch, and you'll either need to remove them yourself (and test that code), avoid them (and constantly remember to not hit them), or use another library.

It's not a choice between "using a dependency" or "using something in the stdlib", where all other code remains the same, otherwise there would be no point to writing a library, as it would offer nothing over `datetime`.
by slightwinder | 2025-04-13 14:32:06+00:00
> It is both amazing and sad to see China is literally in the future compared to the US in terms of infrastructure and social development.

To be fair, it's usually easier to build state of the art, when you start from scratch. Western countries have a big legacy they build decades ago, which has to be used and maintained for decades to justify the investment.

And as a visitor, it's also more likely to only see the fancy parts, and not be confronted with the dark parts, especially when you have a strong leader who's dedicated goal is to sell a positive view of the country.
by bookofjoe | 2025-04-13 14:32:08+00:00
>... terrible at titles...

I disagree. Here are some that retain their power all these decades later and will likely do so for the foreseeable future:

Time Out of Joint

The Man in the High Castle

Martian Time-Slip

The Three Stigmata of Palmer Eldritch

Clans of the Alphane Moon

The Simulacra

Now Wait for Last Year

Do Androids Dream of Electric Sheep? (1968)/Blade Runner (1982)

Ubik

We Can Build You

Flow My Tears, The Policeman Said

A Scanner Darkly

The Transmigration of Timothy Archer

Radio Free Albemuth
by ranyume | 2025-04-13 14:32:16+00:00
I'm just going to clarify one point.

> Right. Except… I’m not the one saying:

I've read the interview I mentioned before and he explains how he used the AI and which AIs he used.[1]

It might be a bit confusing. He thinks of the author of the book (the final product of "prompt thinking") as something that's not him and it's not AI either, and that's why he phrased the use of AI like that. Basically, he says he could not have written the book without AI because he would not have thought of the concepts without AI, but he also says AI didn't write the book.

It's true that even if he wrote everything, he used AI to help him think ("prompt thinking"). I imagine that philosophically speaking for him, the book isn't entirely his. In the interview he also talks about how AI manipulates. You can't escape AI manipulation, but you can't be out of the loop. You have to be conscious about the fact that you're being manipulated at all times.

About prompt thinking: it seems to be a technique that uses AI to facilitate thinking in people. It's the reverse of using AI as an oracle.

https://www.perfil.com/noticias/periodismopuro/hipnocracia-d...
by kbolino | 2025-04-13 14:32:23+00:00
I too like it, in fact I find myself missing it in other languages. I will say that anonymous interfaces are kind of rare in Go, and more generally interfaces in my experience as used in real codebases seem to lean more on the side of being producer-defined rather than consumer-defined.

But there are a couple of problems I can think of.

The first is over-scoping: a structural interface is matched by everything that appears to implement it. This can complicate refactoring when you just want to focus on those types that implement a "specialized" form of the interface. So, the standard library's Stringer interface (with a single `String() string` method) is indistinguishable from my codebase's MyStringer interface with the exact same method. A type can't say it implements MyStringer but not Stringer. The solution for this is dummy methods (add another method `MyStringer()` that does nothing) and/or mangled names (change the only method to `MyString() string` instead of `String() string`) but you do have to plan ahead for this.

The second is under-matching: you might have intended to implement an interface only to realize too late that you didn't match its signature exactly. Now you may have a bunch of types that can't be found as implementations of your interface even though they were meant to be. If you had explicit interface implementation, this wouldn't be a problem, as the compiler would have complained early on. However, this too has a solution: you can statically assert an interface is supposed to be implemented with `var _ InterfaceType = ImplementingType{}` (with the right-hand side adjusted as needed to match the type in question).
by hanslub42 | 2025-04-13 14:32:58+00:00
Janson created more than just the Moomin stories. Check out her murals: https://tovejansson.com/gallery/murals/. I don't see much darkness there... (there is even a small Mumintroll in "Party in the City", in front of the woman smoking a cigarette, a self-portrait of Janson)
by hajile | 2025-04-13 14:33:43+00:00
This is almost completely down to Go's type terrible system and is more proof that Google should have improved SML/CML (StandardML/ConcurrentML) implementations/libraries rather than create a new language. They'd have a simpler and more powerful language without all the weirdness they've added on (eg, generics being elegant and simple rather than a tacked-on abomination of syntax that Go has).
by bitbasher | 2025-04-13 14:33:47+00:00
I do a fair amount of thinking around all failure states (CSS included).

I think you may be overthinking the appearance aspect of a failure state. The application doesn't need to look the same when CSS fails to load. However, the application should be functional.

This thinking carries over to the backend as well. My application server doesn't require all services to be up and running. Instead, it's able to query and tell what is working and what isn't. That information is then bubbled down to the UI in one way or another. That may mean certain functionality is unavailable (ex, if solr isn't reachable then search is disabled).
by 0x696C6961 | 2025-04-13 14:35:00+00:00
The Brexit comparison doesn't hold water — Brexit is widely viewed as a failure, yet Go continues to gain popularity year after year. If Go were truly as bad as described, developers wouldn't consistently return to it for new projects, but clearly, they do. Its simplicity isn't a rejection of expertise; it's a practical choice that's proven itself effective in real-world scenarios.
by addicted | 2025-04-13 14:35:06+00:00
What’s impressive about this, and promising about BYD in general, is that they revealed an actual product weeks after revealing the technology.

This is very Apple at its peak’esque.

Too many companies, especially in the EV space (Tesla is awful at this) will announce tech years in advance and often not even deliver.

When we first heard about this 5 min charger a few months ago I fully expected it to be available in a car at least years from now if ever.
by emtel | 2025-04-13 14:35:39+00:00
Rob Pike was definitely not a PL expert and I don’t think he would claim to be. You can read his often-posted critique of C++ here: https://commandcenter.blogspot.com/2012/06/less-is-exponenti...

In it, he seems to believe that the primary use of types in programming languages is to build hierarchies. He seems totally unfamiliar with ideas behind ML or haskell.
by guilhas | 2025-04-13 14:36:37+00:00
Go channels, good or bad, are clearly a step up in concurrency/parallelism concepts and discourse

I think that was one of the successes of Go

Every big enough concurrent system will conclude sync primitives are dangerous and implement a queue system more similar to channels

Mutexes always look easier for starters, but channels/queues will help you model the problem better in the long term, and debug

Also as a rule of thumb you should probably handle panics every time you start a new thread/goroutine
by SideburnsOfDoom | 2025-04-13 14:36:39+00:00
Yes, and as far as I know Stanisław Lem was also genuinely contemptuous of the 1950s default style of US sci-fi: square-jawed heroes who triumph over every puzzle, right every wrong; Cowboys and Indians on a frontier planet, manifest destiny, etc.

A lot of his work emphasises how this tendency fails in the face of the sheer unknowable alienness of the outer universe. e.g. Solaris, The Invincible, Fiasco.

Lem liked Phil Dick though, because Dick's work was more sceptical and mind-bending: more like his own work than it was like the spaceship heroics.
Ask HN: Do you think MS Copilot will replace junior consultants?
by GustavHartz | 2025-04-13 14:37:09+00:00
As a consultant, I spend way too much time buried in emails, teams, Slack threads, and random SharePoint folders trying to come up with answers to questions like: • What’s the current project status? • What is that XXX deck? • What is the revised timeline?

Junior consultants at my company usually get the job of building timelines, trackers, and endless update slides. I’m curious whether MS Copilot, due to the data access, could fill this role—parsing all comms, tracking deliverables, and giving you clean overviews, action items, and even draft decks.

Do you think Copilot will evolve into this kind of tool? Or is there still a gap here that a startup could fill? Curious if others are seeing the same pain, or already building around it.

Idea visualized: https://theo-consult-canvas.lovable.app/dashboard
by npodbielski | 2025-04-13 14:37:41+00:00
I had it as optional and I read it out of my own volition and some of them still stays with me after almost thirty years. The one about writer wanted his robot to write stories, but in the end realizes that actually stories written by his robot are much better than his, want to turn the robot off but instead robot kills the writer... Makes you think about humanity, robotics, technology and what it is to be human or what is self-aware machine.

These were really light, nicely done stories but when you think about them, they introduce you to actual.problems that come with robotics and AI.

I am glad that I read those and kind of sad that I did not read more of Lem's books early in my life.
by crazygringo | 2025-04-13 14:39:06+00:00
Yup. There are also a ton of other Greek letters in row E used in math... and no uppercase delta, which you'd obviously want, even more than many of the others. The only reason they wouldn't have included it down there was because they already included it above, exactly because it's DELta.

It still doesn't answer why it's a short uppercase delta though... I can only guess there was a failure of communication somewhere between who chose the character set and who drew the pixels...