Hacker News now runs on top of Common Lisp

644 Tomte 427 5/26/2025, 4:37:02 PM lisp-journey.gitlab.io ↗

Comments (427)

lynx97 · 1d ago
Regarding the "worse is better" discussion: At least its definitely better accessibility-wise. HN is about the last well-known site that allows interacting with it, including writing comments, with plain old Lynx. I am well aware that most web devs do not care anymore these days, and they have their reasons for sure. However, its still nice to see sites that refuse to go for SPA. It makes them so much more useable for people like me (blind). A big THANK YOU to the site maintainers, its one of the last corners of the net where interesting stuff happens which is still accessible.
jmathai · 1d ago
Accessible UX results in good UX. I use a modern browser and appreciate how reliably Hacker News works. It's a great example of less is more when it comes to UX.
pona-a · 1d ago
Well, I think proper font scaling would do wonders for making HN more accessible. As things stand, I have to zoom to 120% to read the text. I recall WebKit making a special case in its font rendering logic just for HN.
lynx97 · 14h ago
I can't speak to the font sizing. If I could change anything, I'd replace the table design with a plain ordered-list (ol). Simply because it is the proper semantic tag, and reading the table is unnecessarily verbose with modern browsers and a screen reader. Somehow ironically, Lynx fails to render the table as a table, so the main page is still nicely readable with it.
zoogeny · 2d ago
Hacker News is a perfect example of the "Worse is better" mantra applied to social engineering. I mean, slashdot had more features and functionality in the late 1990s.

What makes HN work is the tight focus and heavy moderation.

dang · 2d ago
Finally a Lisp system wins the worse-is-better crown!
kqr · 1d ago
For context, "worse is better" refers to Gabriel's observation that products with simple implementations and complicated interfaces tend to achieve adoption faster than products with complex implementations and elegant interfaces.

One of the original motivating examples were Unix-like systems (simple implementation, few correctness guarantees in interfaces) vs. Lisp-based systems (often well specified interfaces, but with complicated implementations as the cost.)

seanmcdirmid · 1d ago
I think Richard Gabriel attributes it to Jamie Zawinski?
amiga386 · 1d ago
He does not.

https://dreamsongs.com/WorseIsBetter.html

> One day in Spring 1989, I was sitting out on the Lucid porch with some of the hackers, and someone asked me why I thought people believed C and Unix were better than Lisp. I jokingly answered, "because, well, worse is better." We laughed over it for a while as I tried to make up an argument for why something clearly lousy could be good.

He then wrote Lisp: Good News, Bad News, How to Win Big (https://www.dreamsongs.com/WIB.html) for his EuroPAL keynote speech

> JWZ excerpted the worse-is-better sections [from Lisp: Good News, Bad News, How to Win Big] and sent them to his friends at CMU, who sent them to their friends at Bell Labs, who sent them to their friends everywhere.

The excerpt: https://www.dreamsongs.com/RiseOfWorseIsBetter.html

bbarnett · 1d ago
Now the 'God wrote in lisp' song makes even more sense.

https://m.youtube.com/watch?v=5-OjTPj7K54

neom · 1d ago
This is amazing, almost amazing as the website of the man who wrote it: https://www.songworm.com/index.html - "I wrote the generator for these pages in Macintosh Common Lisp."
bbarnett · 1d ago
I'm going to write a scifi story, the plot?

The lisp path won, Lispus instead of Linux, and we had AGI in 1997 due to code elegance.

vermilingua · 1d ago
keeganpoppen · 2d ago
oh man... this comment is just so, so incredibly apt.
dotancohen · 2d ago
It's also by the guy who mods here.
90s_dev · 2d ago
"Incidentally, very few people grasp the amount of effort Daniel Gackle expends running HN now, and what an amazing job he does." -Paul Graham, https://x.com/paulg/status/1282055086433284103
90s_dev · 1d ago
My comment definitely has more points than the two above it, but it's lower, even though that pattern isn't true with my other comments. Probably because Daniel manually demoted it as part of his manual/automatic hybrid moderation tooling, and probably for the sake of being humble about the amount of work he does for HN. Which I think is an interesting example of my other comment's point about how dang probably moderates HN. I'd be curious whether I'm very far off with this Daniel.
c22 · 1d ago
How do you know how many points the other comments got?
owl57 · 1d ago
Interestingly, I think this is one of the cases where both the "For context…" comment and yours add important context for the parent comment that some readers may be not familiar with. Although that second one serves this purpose better, not because of the subject but because it's more directly informative.
oblio · 1d ago
Well, Facebook is PHP so...
dx4100 · 1d ago
Any idea of how much of their code is still primarily PHP? Curious myself.
umanwizard · 1d ago
If you mean stock vanilla php: none. If you mean Hack, Meta’s PHP dialect which is internally just called “PHP” colloquially: a lot. Basically everything that responds to a public HTTP request, both for APIs and for the website. And since Meta is a lot less “service-oriented” than some companies, a lot more application logic happens in the web server process than you might expect.

Backend services in languages other than Hack do exist, of course. When I left Meta (then called Facebook) in 2019, they were almost exclusively in C++. Now I don’t know for sure but I think Rust is gaining a lot of popularity for non-Hack stuff.

giancarlostoro · 1d ago
IG should still be Django I would think? I'm kind of curious about Facebook / IG's use of GraphQL, is it hack or just nodejs?
umanwizard · 3h ago
You might be right about IG, I never worked on it so I’m not sure. Certainly there was still some Django when I joined in 2015 but now, who knows.

I’m not sure what you mean about the GraphQL question. Meta doesn’t use Node at all, or at least not to any significant extent.

loeg · 1d ago
The entire website is still a PHP-like derivative language (with an optimizing compiler, etc). Backend services are largely C++.
lokar · 1d ago
Well “hack”, but the same idea
dartharva · 1d ago
Is it still? I thought it has been ported
paxcoder · 1d ago
Yay
90s_dev · 1d ago
You're the outlier and for good reason.
johnisgood · 2d ago
HN may have less features, but do we even need them? I do not think it makes it worse because of that. You could call it minimalistic, which puts it into a more positive light. :)

Edit: or as someone else who has phrased it better: "less is more".

jrockway · 1d ago
I liked the "friends" and "foes" system that Slashdot had, though I would say generally the "foes" here just get banned which is convenient.

I also thought Slashdot's moderation system was kind of fun. I am not sure it was useful but I enjoyed the annotations (+5 Funny when serious, +5 Insightful when inciteful, etc.) Meta-moderation was also neat?

0xDEAFBEAD · 1d ago
I'm a little too young to remember Slashdot. It would be interesting to see an informal ethnography of those older discussion sites/Usenet/etc. from people who remember that stuff. Online communities deserve more study.
thijson · 1d ago
I always thought that moderation is a little high handed. Instead, individuals should choose what they see or don't see via a local filter that they've trained over time. I used to filter spam out of my email inbox that way, it worked pretty good.
jamesrcole · 1d ago
You talk about it as if doesn't exist anymore. If you're not aware, it still exists.
ChoGGi · 1d ago
In some sense it doesn't exist anymore. At the very least, the withered corpse is a far cry from what it once was.
KerrAvon · 1d ago
In practice, the Slashdot moderation system was ridiculously easy to game. You could adjust your viewpoints to subtly praise Linux and denigrate Windows and be assured of a higher rating.
Shorel · 1d ago
I think the problem with Slashdot was that "Funny" was higher rated than "Interesting" or "Insightful", and it made the site a clown circus.

I'm not against memes and jokes, I like them. But I also like some actual intelligent discussion in between.

And that's why right now I visit Hacker News and it's been many years since I used Slashdot.

vid · 1d ago
Because people agreed with you? Why is that a problem?
fragmede · 1d ago
Because that leads to groupthink, which stifles critical thinking and leads to poor decision-making. Ideally we'd have honest debate instead of ignoring warning signs, dismissing alternative viewpoints, and failing to thoroughly evaluate risks. This leads to overconfidence which can cause blind spots leading to catastrophic failures. We can't adapt to new information or actually learn from our mistakes if our shared groupthink says oh that was bound to happen. We'd stop innovating entirely.

In terms of Slashdot groupthink, no one uses (used) Windows and Microsoft was about to fall, but when looking outside of that at computer sales vs counted Linux installs, the picture was and is still very different. The reverse happened on the server, but Nadella was able to see outside the groupthink bringing Azure to the success it enjoys today.

wredcoll · 1d ago
What a pile of meaningless buzzwords.

Slashdot's moderation system didn't lead people to think "no one used windows", the userbase just didn't like microsoft.

Beyond that, having to re-debate every single idea every single time it's brought up is inefficient to the point of uselessness. We, as individuals, don't have time to verify every single theory from first principles, so we rely on tools like "moderation" as a heuristic to make progress.

59nadir · 1d ago
Eh, I think he brings up a pretty good point but I wouldn't say HN is any better. People here think that MacOS has high usage numbers and iPhones are the most used phone, when that's not the case. There are also a few very, very misguided ideas about software development that definitely are over-represented on HN in large part due to the (apparently, according to polls) very inexperienced nature of most HN visitors and the things they tend to work on (low-skill/low-knowledge, "high-in-their-mind"-velocity work).

HN has some very clear bubbles that probably wouldn't happen without a popularity system tied to its comments and submissions; maybe the janitorial duty of removing spam and so on is enough for a page like this. I'm not sure I see the merits of upvotes and downvotes at this point.

freedomben · 1d ago
> What a pile of meaningless buzzwords.

I completely disagree. That was a very coherent and well articulated comment. Having a useful vocabulary is not the equivalent of using a bunch of buzzwords.

firesteelrain · 1d ago
Downvoting and upvoting even if not visible can also lead to groupthink moreso on sites like Reddit than here. Points acquired here eventually let you downvote. But, really no reason to upvote or downvote comments as no one can see the points of a particular comment on this site. I am aware that after so many downvotes that the comment starts to gray out into oblivion eventually but even that promotes groupthink. Factual counterpoints, especially in political threads, are hard to discuss
dragonwriter · 1d ago
> But, really no reason to upvote or downvote comments as no one can see the points of a particular comment on this site.

Voting effects the presentation order of comments, which is especially significant when there are many responses sharing an immediate parent.

That's probably a bigger impact from voting than making points publicly viewable would be

freedomben · 1d ago
Yes, I think it is definitely a balancing act, because the rising of certain comments can certainly contribute to groupthink. However, I also think that impact of having the best comments rise to the top is very useful. The system doesn't work super great in an early and active thread, but it works very well once the thread ages a little bit
firesteelrain · 1d ago
I think that supports my point. If there were no points then it would just be responses in order of posting. Points offer bias.
dragonwriter · 1d ago
Yes, the point of moderation, community or otherwise, is to be a mechanism for promoting group norms.
firesteelrain · 1d ago
That reinforces my point that sites like this lead to groupthink and coalescence around acceptable thought
dragonwriter · 1d ago
Well, it reinforces the hypothetical argument that sites like this have a mechanisms whic promotes settling into some kind of self-reinforcing content patterns. You’d have to actually show what the common patterns were for each site (and particularly whether they were share substance of argument or shared style, or both) to make the “groupthink” argument.

(I think the best argument against the groupthing argument here is how inconsistent the positions are that are claimed to be the “groupthink” position by those claiming that.)

firesteelrain · 1d ago
> (I think the best argument against the groupthing argument here is how inconsistent the positions are that are claimed to be the “groupthink” position by those claiming that

Aren’t you countering yourself by not providing the research requested above though?

I mean without objective evidence it’s all just a subjective opinion on either side

jachee · 1d ago
Where’d this approach to “groupthink” come from? Did you formulate this all on your own?

ETA: obligatory: /s

AtlasBarfed · 1d ago
Score 5 funnies absolutely ruined /dots discussions
Thiez · 1d ago
Slashdot allowed you to configure scoring, so you could assign 0 or even negative points to 'funny'.
dotancohen · 2d ago
I think that the classical phrasing is "less is more".

At least, that's how my bash pager has it in the manpage.

johnisgood · 2d ago
You are right!
killerstorm · 1d ago
I'd like some markdown support:

  * Triple ticks for code ```

  * Bullet lists
Two spaces to mono space is somewhat offensive
int_19h · 1d ago
The single most annoying thing is the inability to somehow use a single line break to start a new line. It makes it very tedious to copy/paste things (that are not code) when quoting them.
Shorel · 1d ago
Textile is the syntax of a Jedi Developer.

Not as clumsy or random as a Markdown; an elegant weapon for a more civilized age.

jorvi · 1d ago
Dark mode. Sure, Dark Reader exists but many mobile browsers don't support it.

Annoyingly enough it's been talked about for years but it never gets implemented, despite only three colors really needing a swap: background to dark sepia or just dark gray, and text to white and off-white.

exitb · 1d ago
You need to add controls, as some people would like it set up differently than their OS. You need to store the setting. You need to consider people without accounts. You need to put a bit on thought into the color scheme, as this website is after all known for its color. In the end, many people will complain, regardless of how well you do.
jorvi · 1d ago
I can virtually guarantee that the amount of people getting annoyed at being flashbanged by HN is larger than the amount of people that would complain about a dark mode.

For users without an account you just stick to prefers-color-scheme. For users with an account you add a setting 'disable dark mode'

Dark Reader has autodetection so those users won't be a problem either.

And if you really wanna keep to the identity of the site, the top bar doesn't even really need a color swap.

It really is less of a conundrum than you think.

WorldMaker · 1d ago
> You need to add controls, as some people would like it set up differently than their OS.

The Browser also has controls. Good Browsers let you set your browser-wide choice differently from your OS-wide choice. Great Browsers let you pick per-site overrides directly, as a standard user setting in a consistent location in browser controls. I realize a lot of UX designers have come to much prefer the "add more controls" approach over the "teach a person to fish" / understand how your OS and browser controls work as the user of the site approach. I realize why a lot of UX designers will always prefer that approach, because teaching people is hard and it is easier to cut complaints off at the pass than answer complaints with "use your browser's settings".

But seriously, it should be fine to release a dark mode in 2025 that only responds to `prefers-color-scheme: dark` and leaves it to users to understand their OS and Browser tools. It irks me a lot more when sites like Wikipedia and Bing and Google ignore `prefers-color-scheme: dark` by default and makes you dig for some dumb website-specific control (that's in a different place on every website) just to set it to whatever they call "System default" that means "trust the Browser's prefers-color-scheme, I know what I'm doing". UX designers have taken something that should be natural and automatic and made it more complex and more confusing just because a small handful of users complain that they don't understand their OS and Browser Settings tools.

throwaway2037 · 1d ago
If only colour swap is required, can you use a Greasemonkey script?
jorvi · 1d ago
And how would you propose running Greasemonkey on a mobile browser?
jjav · 12h ago
> Dark mode.

The idea of "Dark mode" as a "feature" annoys me more than it probably should. Because it highlights how proper separation of content and presentation has been ruined by the so-called modern web, by modern web devs that don't get it.

The website is supposed to provide content, not presentation. Presentation is a user-agent feature. If you want to read a site with bright yellow font on a purple background, that should be your decision and yours alone. Configure your user agent with that color scheme and done.

By hardcoding presentation into the content, the "modern" (regressed) web removes functionality from the user. So now the user is relegated to begging the developers to implement particular color schemes like "dark mode", which doesn't make any sense.

steve_taylor · 11h ago
The web was like that for about the first 10 minutes. In 1996, the "modern" web accepted that web pages were almost always going to incorporate appearance and made it sane by standardising CSS.
EasyMark · 1d ago
I want a pickup truck that is designed like HN. The slate may be the answer
cgio · 1d ago
A minimalist pickup truck could be a bicycle. Depends on whether you really need a truck at all.
freedomben · 1d ago
This seems like a relatively bad approach in general. An even more minimalist bicycle can just be your legs, depends on whether you really need a bicycle at all. A more minimalist pair of shoes would be sandals, or even more minimalist is just going barefoot and building callouses on your soles. You also don't really need to look stylish, so a more minimalist set of clothing can just be a sheet that you wrap around yourself. I don't find this to be a useful line of thinking.
xarope · 1d ago
or perhaps, from a space and utility perpective, a cargo trike? I don't think a bike could handle a desk, even a foldable/collapsed one from ikea, whereas a cargo trike probably could.
71bw · 1d ago
And then you're like the meme that popped up recently somewhere on Twitter about some guy using his cargo bike to move bricks. Only took him 12 hours and 4 trips to do something anyone sane would do in 1 hour and 1 trip
quantadev · 1d ago
I mean you could technically balance a sheet of plywood on your back on a bicycle, but it seems like it would become impractical at any speed above 30mph just due to aerodynamic...uh...lift.
c22 · 1d ago
Last time I did this I rested the sheet good on one pedal and rode side-saddle. It worked all right. YMMV--helps to be going downhill...
ksec · 1d ago
Dark Mode. And Follow User would be two feature I have been using for years with other tools.
jedberg · 1d ago
Follow user is antithetical to the idea of HN -- content should be upvoted because of what it says, not who said it.

But I agree dark mode would be nice.

skydhash · 1d ago
I believe HN's HTML structure is simple enough to overwrite with custom CSS on the browser end.
jedberg · 1d ago
Sure, but I use at least five different browsers for HN, some on my phone. That’s a huge pain.

Being able to check a profile box would be a lot easier.

freedomben · 1d ago
Genuinely curious, why do you use so many different browsers for HN?
jedberg · 1d ago
Fair question. I use HN Replies, which emails me when people reply to me. On my computer, if I click the link in the email, it opens in Chrome. But on my computer my normal browser for HN is Safari. I use separate browsers for different things on my computer, so Safari is for HN and reddit, Chrome is for Google apps, like gmail etc., and Firefox for everything else. So sometimes I also get into HN via Firefox if I'm there an happen to type the URL or get a link.

Then on the phone, Safari is again the default browser, but if I click a link from the gmail app it opens in mobile Chrome.

So to use a plugin to change anything, I'd have to have the plugin on all five browsers.

0xpgm · 1d ago
Comments by people with more points to their name are (or at least used to be) promoted higher, which naturally leads to more upvotes.

So there's still an element of who says it that matters

dang · 1d ago
Comments have never been ranked differently on HN based on karma.
bloopernova · 1d ago
https://gist.github.com/aclarknexient/c39c83f2f97c3c6b1c307c...

These go in your ublock origin "my filters" section. Enables Dark Mode through CSS, and another filter restricts the width of comments.

quantadev · 1d ago
A 'Block User' feature would be nice. We don't have that feature do we? HN is full of trolls who fly just below the radar of what level of rudeness it takes to get kicked off.
lo_zamoyski · 1d ago
The "tech progressive" mindset cannot comprehend the idea that something cannot be improved or shouldn't be "enhanced". It is too close to the abyss.
freedomben · 1d ago
Also, don't want to overlook the fact that people have to justify their jobs. If you are employed as a designer, and you were to tell your employer that The app is in good shape and doesn't need any design work, you are putting yourself out of a job. Now scale that up to an entire team of designers, or even a department with a chief designer, and you have a bunch of people. Primary incentive is to continually change things. I don't think it's a coincidence that bigger apps from companies that are big enough to hire Full-Time designers are constantly churning their UI.

I don't mean this against designer specifically. I've seen plenty of software engineers that do the same thing. Hell, I've caught myself doing the same thing. It's just part of being human, but recognizing our human nature and not doing dumb things because of it is an ideal to shoot for in my opinion.

pixl97 · 1d ago
Hmm, I have an idea for HN on the next April 1st.
nickpeterson · 2d ago
Also the lack of needing to make money helps a lot.
mike_hearn · 1d ago
I'd say that's the main thing. People hate ads, HN uses unobtrusive text ads. The moderation isn't that a competitive advantage, IMO. Slashdot's was better, mostly because it had measures to stop moderation abuse whereas HN seemingly doesn't. It's just a plain old up/down system with the added filip of a "super down" button, for those who are really committed to banning their opponents. I read with showdead turned on because perfectly reasonable comments are so often greyed out or dead. That used to happen much less on Slashdot because there were far fewer people with moderation rights and the bad ones got filtered out via metamod.

Maybe now it's been ported to Common Lisp it'll be easier to add features.

mousethatroared · 1d ago
"HN uses unobtrusive text ads"

HN has ads? I've been on some 2011 and I have never seen them...

dang · 1d ago
tim333 · 1d ago
Although those aren't ads in the sense that people pay for them?

In terms of paid advertising I guess the whole of HN kind of advertises YC who fund it.

aziaziazi · 1d ago
Also, self promotion in comments - often as "shameless plug" - like in any other platform that let you write public text:

https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...

crystal_revenge · 1d ago
It's almost irrelevant now since Reddit is basically just a gigantic bot farm, but I was always annoyed that Reddit would aggressively remove self promotion in most subs while clearly running major PR campaigns under the guise of organic content.

Hacker News is the opposite and the better for it. If you're openly promoting your work, awesome! If you're doing anything to attempt to manipulate the platform for PR reasons, you can bet you will be punished for it.

I never understood why Reddit, which always tried to give off the "for the little guy" vibes was so rabidly against anyone promoting their own work.

freedomben · 1d ago
Seriously. It's often taken to absurd levels there. There have been several times when I went to Reddit answer a question about my own project that someone was asking, and my comment got downvoted or moderated away for self-promotion even though I was just answering the question. Ironically, omitting a disclaimer about it being my project will typically let the comments slide by, but that seems like the opposite of what you want. I prefer people to declare their biases up front so that I can evaluate their statement based on That context and on its merits. I personally love it when someone comments on something that they do.
taneq · 17h ago
> I never understood why Reddit, which always tried to give off the "for the little guy" vibes was so rabidly against anyone promoting their own work.

Reddit hasn't been 'for the little guy' for a decade, that's why they have to try so hard to give off those vibes.

> Reddit would aggressively remove self promotion in most subs while clearly running major PR campaigns under the guise of organic content.

Yep, this is why they do this. They're removing competition (in the form of ads they weren't paid for) to boost their product (ads they were paid for).

freedomben · 1d ago
I think hn handles this perfectly. In my opinion. If the comment is a shameless plug that adds no value, it will get downvoted quite quickly. If it's adding value to the conversation, and (usually) as long as the commenter isn't was pretending not to be integrated, it stands.
tedunangst · 1d ago
You didn't notice they were ads.
mousethatroared · 1d ago
Never realized there were stories i couldn't comment.

Then again, Im not in CS so the job by boards posts are never interesting to me

jazzyjackson · 1d ago
Usually it's just "so and so is hiring" (not to be confused with the who wants to be hired threads) weaved in to look like just another submission
taneq · 17h ago
I always thought those were a feature. I figured they were paid recruitment, they also seemed to be relevant to most of the community here, win win!
jt_b · 1d ago
They're the ones you can't comment on.
oblio · 1d ago
> "super down" button

The flag button?

palmotea · 1d ago
> IMO. Slashdot's was better, mostly because it had measures to stop moderation abuse whereas HN seemingly doesn't.

Really? IIRC, Slashdot's moderation was garbage, remember penis-bird, GNAA, goatse?

mike_hearn · 1d ago
You're talking about false negatives, not false positives. People have different tolerances for these kinds of errors.

But yes, I remember that to see that stuff you had to expand the down-modded comments.

That stuff was also a product of its time. Slashdot had the strong free speech ethos of the early internet, so CmdrTaco had a policy of never deleting comments unless they broke the site somehow or there was a legal process requiring it. Sometimes that meant very new stories would get these comments and they'd be visible before they got modded, but if you browsed stories that had been active for a little while you wouldn't see them.

One downside of a sophisticated moderation system on a site designed for programmers is that some people take it as a challenge. The reason Slashdot trolling was a bunch of dumb memes rather than e.g. commercial ads is because a lot of bored teenagers found spamming it a good way to learn web programming. The systematic nature of the moderation meant that it was a system to beat, a game to conquer. Hence the brief influx of "page widening posts" and other technical hacks. But I don't know if you'd see the same stuff today. The culture has changed, there are much better ways to learn programming and way more opportunities now. And you don't have to be fully automated. CmdrTaco had a strongly systems-oriented streak, but the problem on HN is hardly ever the actions of dang and the other paid moderators, it's really abuse of the overly simple system by other users that's a problem. You could have both good paid moderators and stricter controls on user moderation.

pram · 1d ago
You just reminded me of the beautifully rendered, colored penisbird ascii art dipshits would spam on IRC lol
zoklet-enjoyer · 1d ago
Turns out those GNAA guys are actually white supremacists https://en.m.wikipedia.org/wiki/Weev
philwelch · 1d ago
Most of that was downmodded and hidden by default though.
andai · 2d ago
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. —Antoine de Saint-Exupéry

No comments yet

throwawaymaths · 2d ago
your comment assumes that features and functionality are a good thing. "worse is better" does not apply here.

"worse is better" is people putting up with footguns like this in python, because it's percieved easier to find a python job:

    def fun(a = []):

HN is very much "less is better", not "worse is better".
zoogeny · 2d ago
I'm not sure what you mean? The literal quote from the Wikipedia article on "worse is better" is:

> It refers to the argument that software quality does not necessarily increase with functionality: that there is a point where less functionality ("worse") is a preferable option ("better") in terms of practicality and usability.

For that reason, I think I am applying the term precisely as it was defined.

The irony of my comment, which dang picked up, is that the original idea was a criticism against Lisp, suggesting that the bloat of features was a part of the reason its adoption had lagged behind languages like C.

1. https://en.wikipedia.org/wiki/Worse_is_better

90s_dev · 2d ago
You're both saying the same thing: fewer features = higher quality.

Swiss army knives are not as good at being screwdrivers as screwdrivers are.

quinnirill · 1d ago
In general: yes. But I’ve certainly had to use swathes of screwdrivers that are worse at being screwdrivers than my Swiss army knife is. Same I believe applies here: there’s a relation, but it’s nuanced. The same screwdriver is a better screwdriver when carried in a hand than in a toolbox full of other high-quality tools, but worse for everything else.
throwawaymaths · 2d ago
huh. til i actually thought "worse is better" is more recent than that but it stems from an era where feature count was the measure of quality. how times have changed!! thanks!
7thaccount · 2d ago
I've written Python for 14 years and have never seen code like that. It certainly isn't a perfect language, but this doesn't look like a common concern.

People write a lot of Python, because the language is easy to get into for a lot of non computer-science folks (e.g., engineers and scientists) and the ecosystem is massive with libraries for so many important things. It isn't as conceptually pure as lisp, but most probably don't care.

tredre3 · 1d ago
It's a common need to have an empty array be the default value to an argument. In any programming language, really. I don't know what to make of the fact that you've never seen that in the wild.

Maybe you were blessed with colleagues, for the past 14 years, that all know about how dangerous it is to do it in Python so they use workarounds? That doesn't negate the fact that it's a concern, though, does it?

dannymi · 1d ago
There's always tension between language simplicity (and thus cognitive load of the programmers) and features. Compare Scheme with Common Lisp.

The idea in Python is:

1. Statements are executed line by line in order (statement by statement).

2. One of the statements is "def", which executes a definition.

3. Whatever arguments you have are strictly evaluated. For example f(g(h([]))), it evaluates [] (yielding a new empty list), then evaluates h([]) (always, no matter whether g uses it), then evaluates g(...), then evaluates f(...).

So if you have

def foo(x = []): ...

that immediately defines

foo = (lambda x = []: ...)

For that, it has to immediately evaluate [] (like it always does anywhere!). So how is this not exactly what it should do?

Some people complain about the following:

    class A:
        x = 3
        y = x + 2
That now, x is a class variable (NOT an instance variable). And so is y. And the latter's value is 5. It doesn't try to second-guess whether you maybe mean any later value of x. No. The value of y is 5.

For example:

    a = A()
    assert a.__class__.x == 3
    assert a.x == 3
    a.__class__.x = 10
    b = A()
    assert b.x == 10
succeeds.

But it just evaluates each line in the class definition statement by statement when defining the class. Simple!

Complicating the Python evaluation model (that's in effect what you are implying) is not worth doing. And in any case, changing the evaluation model of the world's most used programming language (and in production in all countries of the world) in 2025 or any later date is a no go right there.

If you want a complicated (more featureful) evaluation model, just use C++ or Ruby. Sometimes they are the right choice.

greiskul · 1d ago
> foo = (lambda x = []: ...)

> For that, it has to immediately evaluate [] (like it always does anywhere!). So how is this not exactly what it should do?

It has a lambda there. In many programming languages, and the way human beings read this, say that "when there is a lambda, whatever is inside is evaluated only when you call it". Python evaluating default arguments at definition time is a clear footgun that leads to many bugs.

Now, there is no way of fixing it now, without probably causing other bugs and years of backwards compatibility problems. But it is good that people are aware that it is an error in design, so new programming languages don't fall into the same error.

For an equivalent error that did get fixed, many Lisps used to have dynamic scoping for variables instead of lexical scoping. It was people critizing that decision that lead to pretty much all modern programming languages to use lexical scoping, including python.

shwouchk · 1d ago
dynamic variables (esp default) when you are collaborating with many people. when you you know the code well they are incredibly useful
dannymi · 1d ago
>It has a lambda there. In many programming languages, and the way human beings read this, say that "when there is a lambda, whatever is inside is evaluated only when you call it".

What is inside the lambda is to the right of the ":". That is indeed evaluated only when you call it.

>But it is good that people are aware that it is an error in design, so new programming languages don't fall into the same error.

Python didn't "fall" into that "error". That was a deliberate design decision and in my opinion it is correct. Scheme is the same way, too.

Note that you only have a "problem" if you mutate the list (instead of functional programming) which would be weird to do in 2025.

>For an equivalent error that did get fixed, many Lisps used to have dynamic scoping for variables instead of lexical scoping. It was people critizing that decision that lead to pretty much all modern programming languages to use lexical scoping, including python.

Both are pretty useful (and both are still there, especially in Python and Lisp!). I see what you mean, though: lexical scoping is a better default for local variables.

But having weird lazy-sometimes evaluation would NOT be a better default.

If you had it, when exactly would it force the lazy evaluation?

    def g():
        print('HA')
        return 7

    def f(x=lazy: [g()]):
        pass
^ Does that call g?

    def f(x=lazy: [g()]):
        print(x)
^ How about now?

    def f(x=lazy: [g()]):
        if False:
            print(x)
^ How about now?

    def f(x=lazy: [g()]):
        if random() > 42: # If random() returns a value from 0 to 1
            print(x)
^ How about now?

    def f(x=lazy: [g()]):
        if random() > 42:
            print(x)
        else:
            print(x)
            print(x)
^ How about now? And how often?

    def f(x=lazy: [g()]):
        x = 3
        if random() > 42:
            print(x)
^ How about now?

Think about the implications of what you are suggesting.

Thankfully, we do have "lazy" and it's called "lambda" and it does what you would expect:

If you absolutely need it (you don't :P) you can do it explicitly:

    def f(x=None, x_defaulter=lambda: []):
        x = x if x is not None else x_defaulter()
Or do it like a normal person:

    def f(x=None):
        x = x if x is not None else []
Explicit is better than implicit.

Guido van Rossum would (correctly) veto anything that hid control flow from the user like having a function call sometimes evaluate the defaulter and sometimes not.

9dev · 1d ago
That’s a very academic viewpoint. People initialize variables with defaults, and sometimes, that default needs to be an empty list. They are just holding it wrong, right?
owl57 · 1d ago
Most people writing any language without a linter are holding it wrong.

When a linter warns me about such an expression, it usually means that even if it doesn't blow up, it increases the cognitive load for anyone reviewing or maintaining the code (including future me). And I'm not religious — if I can't easily rewrite the expression in an obviously safe way, I just concede that its safety is not 100% obvious and add a nolint comment with explanation.

9dev · 1d ago
My point was that no matter the conceptual purity or implementation elegance, if a language design decision leads to most people getting it wrong–then that's a bad decision.
owl57 · 1d ago
But it's not about that. I don't like this decision either, but the other side of the trade-off is not just about some abstract concepts or implementation, it's about complexity of the model you need to keep in your head to know what will a piece of code do. And this has always been a priority for Python.
dragonwriter · 1d ago
> That doesn't negate the fact that it's a concern, though, does it?

Yes, the fact that most people learn very early the correct way to have a constant value of a mutable type used when an explicit argument is not given and that using a mutable value directly as a default argument value uses a mutable value shared between invocations (which is occasionally desirable) means that the way those two things are done in Python isn't a substantial problem.

(And, no, I don't think a constant mutable list is actually all that commonly needed as a default argument in most languages where mutable and immutable iterables share a common interface; if you are actually mutating the argument, it is probably not an optional argument, if you aren't mutating it, an immutable value -- like a python tuple -- works fine.)

59nadir · 1d ago
I ran into this particular problem specifically because I wrote a ton of Racket that had this exact pattern and didn't see why Python should be any different. It really is a head scratcher in many ways the first time you run into it, IMO. I'm not sure I would immediately catch exactly what was going on even a decade later after I first discovered it.
bsder · 1d ago
> I've written Python for 14 years and have never seen code like that.

Exactly because it's a footgun that everybody hits very early. I think the Python linters even flag this.

The fact that default arguments in Python get set to "None" is precisely because of this.

int_19h · 1d ago
For this particular case, a better candidate is usually empty tuple () since it's actually iterable etc, so unless you need to mutate that argument...

The bigger problem is with dicts and sets because they don't have the equivalent concise representation for the immutable alternative.

Arguably the even bigger problem is that Python collection literals produce mutable collections by default. And orthogonal to that but contributing to the problem is that the taxonomy of collections is very disorganized. For example, an immutable equivalent of set is frozenset - well and good. But then you'd expect the immutable equivalent of list to be frozenlist, except it's tuple! And the immutable equivalent of dict isn't frozendict, it... doesn't actually exist at all in the Python stdlib (there's typing.MappingProxyType which provides a readonly wrapper around any mapping including dicts, but it will still reflect the changes done through the original dict instance, so to make an equivalent of frozenset you need to copy the dict first and then wrap it and discard all remaining references).

Most of this can be reasonably explained by piecemeal evolution of the language, but by now there's really no excuse to not have frozendict, nor to provide an equally concise syntax for all immutable collections, nor to provide better aliases and more uniform API (e.g. why do dicts have copy() but lists do not?).

bsder · 21h ago
At this point, the biggest problem simply seems to be that the size of "Python Core" has outstripped the number of maintainers.

I helped shepherd a bug fix into Python that was less than a dozen lines, dead simple, completely obvious, sorely needed and still took 3 years and a summoning of Guido, himself, to get it shoved through. Because there was no designated maintainer for that section of code, people were absolutely terrified of touching the code even though it was completely obvious that the fix was backwards compatible. It finally hit the latest Python and a bunch of other projects immediately removed their workarounds for the bug.

If it was that difficult to get a super small, super obvious bugfix through, trying to get a "frozendict" into the language is going to be a Sisyphean task.

int_19h · 1m ago
There's a lot of changes going on in CPython in the past few releases, so a frozendict wouldn't be a big one comparatively speaking.

The bigger problem is that there was already a PEP (https://peps.python.org/pep-0416/) about that, and it was rejected for wonderful reasons such as "multiple threads can agree by convention not to mutate a shared dict, there’s no great need for enforcement" and "there are existing idioms for avoiding mutable default values".

jaza · 1d ago
Ah yes, the ol' default empty list Python gotcha, it bit me I think about 10 years ago, and ever since, sadly I've written code like this so many times it's not funny:

    def fun(a = None):
        _a = a if a is not None else []
Spivak · 1d ago
Python made a choice to have default values instead of default expressions and it comes with positive and negative trade-offs. In languages like Ruby with default expressions you get the footgun the other way where calling a function with a default parameter can trigger side effects. This kind of function is fine in Python because it's unidiomatic to mutate your parameters, you do obj.mutate() not mutate(obj).

So while it's a footgun you will be writing some weird code to actually trigger it.

0xDEAFBEAD · 1d ago
>In languages like Ruby with default expressions you get the footgun the other way where calling a function with a default parameter can trigger side effects.

Seems fine to me. If the default expression causes side effects, then that's what I would expect.

>This kind of function is fine in Python because it's unidiomatic to mutate your parameters, you do obj.mutate() not mutate(obj).

I first wrote Python over 10 years ago and I never learned this.

How would you idiomatically write a function/method which mutates >1 parameter?

int_19h · 1d ago
It's just plain wrong. For example, next() is a builtin function which mutates the iterator passed to it. And, in general, given that Python doesn't have extension methods or anything similar, if you want to write a helper that works on mutable objects of some type, it'll have to be a free function.
Spivak · 1d ago
next() is just sugar for iter.__next__()

A common case where you would have a free function which mutates its parameter would be a function which takes a file handle but it's also the case that you wouldn't have a mutable default for this value.

int_19h · 5m ago
It doesn't change the fact that it's a function that mutates its parameter, even if it eventually calls a method to do so. And, furthermore, it is idiomatic to call next(iter) rather than iter.__next__(), even when no default value is expected.
biorach · 1d ago
They are referring to a convention, not a language restriction.

If you want to mutate two parameters just pass them to a function like you normally would.

It's sloppy and a bad habit, I would not let it pass a PR in production code. Probably OK for a throwaway script.

-__---____-ZXyw · 1d ago
Maybe this was tongue-in-cheek in a way that eludes me, but in case any innocent and curious bystanders are as confused as me by your comment, I'm not sure "Worse Is Better" refers to what you think it does. It isn't about "features and functionality", it's about how ease of implementation beats everything else. I can't see how that applies here, or what your comment means in that light.

Here's the original essay -- https://www.dreamsongs.com/RiseOfWorseIsBetter.html

This is a good little overview entitled "Worse is Better Considered Harmful" -- https://cs.stanford.edu/people/eroberts/cs201/projects/2010-... -- in which the authors argue for "Growable Is Better".

In summary - it's about ease of implementation trumping all else. C and Unix are memorably labelled "the ultimate computer viruses".

smokel · 2d ago
The ugliness scares most people away, or at least it doesn't accidentally lure them in.
marssaxman · 1d ago
Some of us genuinely like the way it looks.
froh · 1d ago
indeed. I love it. no frills, just contents.
encom · 2d ago
HN is like 4chan, but house-broken.
drweevil · 1d ago
I find aesthetically pleasing, tbh.
krapp · 1d ago
A lot of people claim that but I've never seen evidence of the existence of a vast number of people who would be using Hacker News if only it had more bells and whistles. Craigslist is "ugly" too, and plenty of people use it.

I think it's more likely that most people (even most tech-adjacent people) simply don't know this place exists, or don't care, since no one is sharing links to Hacker News on mainstream social media and nothing goes viral here outside of already established HN-adjacent circles.

jt_b · 1d ago
HN's aesthetic has grown on me honestly!
7bit · 1d ago
I like Hackernews. I like the simplicity. I don't bother with better AI. I prefer it that way and I acknowledge that the look and feel of Hackernews does not suite everyone.

But I don't value the look and feel of Hackernews, because it drives people away -- as if these people are of lesser value. That is just elitist and gatekeeper mentality.

dang · 23h ago
The people I don't want to drive away are younger cohorts who would be a great fit for the community but who may be put off by the ancient form factor.

https://news.ycombinator.com/item?id=44101473

jaoane · 1d ago
There is absolutely nothing wrong with gatekeeping. There are people who you definitely want to keep away.
b00ty4breakfast · 1d ago
folks forget, or never figured out, that community-building is a thing that requires a degree of curation; you wouldn't want your sloppy alcoholic uncle showing up to your business brunch (or whatever the hep cats do these days...) but he may be a welcome addition to your new years eve party. That doesn't mean you are "gatekeeping"
DaSHacka · 1d ago
> That is just elitist and gatekeeper mentality.

This sounds good in theory until you realize just who it is that is being "gatekept".

Peruse through any sufficiently large Discord server or the comments on a YouTube Shorts / Instagram Reels video to see what our fellow "valued internet compatriots" are up to.

I, for one, have had enough of dealing with neuron-fried dopamine addicts and literal children from those aforementioned circles to last me a lifetime, I'd prefer HN doesn't become (more) like that.

There's always Reddit for those who prefer a community with the front gates blasted wide open.

whyowhy3484939 · 1d ago
The heavy, thick irony of these people running their own platform on as little technology as possible and depending heavily on human input.

It's like they know somewhere deep inside that "mo tech" is not helping anyone.

dang · 1d ago
There's a less cynical interpretation of that which is not so far from the case.
hbsbsbsndk · 1d ago
There's a few levels going on here:

- technologists and startup wannabes feeling like HN is "underground" because of the stripped down aesthetic and weird tech stack

- out of touch VCs who are successful because of money and connections but want to cosplay as technical

- the end users of the startups, who are fed the enshittified products funded by the VCs and created by the technologists

chipsrafferty · 1d ago
It's not ironic whatsoever.
raverbashing · 2d ago
Honestly it's not "worse"

But I think HN built on what Reddit got right (at least old reddit) and also on a context of more online/faster interactions as opposed to Slashdot that brought some of the old forums structure and on a context of slower and more meaningful (ahem, for the most part) interactions. Hence why moderation was more precise, upvotes had color and you still had things like user signatures

In a way, users and posts on HN are "cattle", not pets ;)

soapdog · 1d ago
I don't think that was what made HN prevail against similar sites that were popular in the past. In my opinion, it is the fact that it is tied to Y Combinator and lots of startups/founders that made it stick. Something that is not technical at all.
jaza · 1d ago
Not me! For a number of years, I was like "what's with that domain, never heard of ycombinator, oh well, can't be bothered reading up on it right now, anyway, great content here, and nice minimal interface, I'll keep coming back".
udev4096 · 1d ago
A lot of people on HN do infact hate YC and pretty much everything VC
donnachangstein · 2d ago
The genius of Slashdot's moderation system is that it forced you to be fastidious with how your limited mod points were allocated, only using them on posts that really deserved them.

As opposed to tearing through a thread and downvoting any and everything you disagree with.

Slashdot encouraged more positive moderation, unless you were obviously trolling.

The meta-moderators kept any moderation abuse in check.

It's sad to see we have devolved from this model, and conversations have become far more toxic and polarized as a direct result of it. (Dissenting opinions are quickly hidden, and those that reinforce existing norms bubble to the top.)

I believe HN papers over these problems by relying on a lot of manual hand-moderation and curation which sounds very labor intensive, whereas Slashdot was deliberately hands-off and left the power to the people.

emeril · 1d ago
I miss slashdot when it was at its peak decades back

unsure why precisely it descended so much

not crazy about HN's approach but the quality of the discourse here is so high through whatever mechanism, I don't much care

bawolff · 1d ago
I remember slashdot being full of "M$ is teh evill111!!" and other childish nonsense. At the end of the day what matters is the results, and i much prefer the discusions on hn than /.
MetaWhirledPeas · 1d ago
For HN, replace M$ with Musk and you'll still see parallels. Although to be fair HN is much more even-keeled than most commenting systems, like Ars and Electrek.

Slashdot is struggling a bit these days. The lower the comment count, the worse the moderation, so it's a bit of a snowball effect. The UI could use some help; there are many who don't want it to change at all, but it would be nice if an alternate UI were available, hitting the same API.

vacuity · 1d ago
> For HN, replace M$ with Musk and you'll still see parallels.

I think HN leans towards deriding both MS and Musk (see any thread on MS and FOSS). In any case, I think that part of being well-spoken is that you speak out against severely bad actors often. It's never useful to reflexively criticize something, but people may contemplate and still decide they're right. Making a comment is the bare minimum of accountability for bad actors who should know better. It may not be to your taste that HN is such a platform, but that's not up to your decision any more than it is mine. There are many problems from a society that struggles to speak well or ill as a subject deserves, which is to say to speak the truth when it should be spoken, and not to speak mistruths except in exceptional circumstances. It would surely be best if one reasoned critique solved the problem and we never would hear of it again, but alas.

MetaWhirledPeas · 1d ago
I use comments as a barometer for general sentiment, and what I'm seeing is that it's much more popular to repeat aggressive condemnatory statements than it is to analyze and provide counterpoints. This is not a surprise but I expect better of HN (and on most topics, HN provides this).

I don't expect HN commenters to change their minds necessarily, but I do wish they would elevate posts with more consideration and objectivity, and less low-effort outrage.

vacuity · 1d ago
Certainly, but sometimes I'm just in the mood for "I'll take what I can get". Probably not the best position, but I haven't found it effective to try to change everyone's minds all the time.
bawolff · 1d ago
> For HN, replace M$ with Musk and you'll still see parallels. Although to be fair HN is much more even-keeled than most commenting systems, like Ars and Electrek.

I don't really see it. /. had this basically every single thread and the criticism was very not substantive. Musk is unpopular here, but the criticism at least has a bit more meat to it and is not on every single post.

Karrot_Kream · 1d ago
HN is the same with Big Tech and ads.

On HN Meta is one step away from going bankrupt and being sued into oblivion. Meta’s Earnings Reports tell a very different story.

I feel like HN fits the same shape in tech as Slashdot did and I’m not happy about it.

perching_aix · 2d ago
How are you determining the causative relationship?
baq · 2d ago
I'm still missing being able to read only +5 insightful comments after 20 years.

I'd expect Slashdot's point systems and meta moderation to make a comeback in the LLM slop world we live in currently, but nobody knows about it anymore. Steam kinda rediscovered it in their reviews, perhaps even was inspired by it (I hope...)

Tijdreiziger · 1d ago
Dutch tech news website Tweakers.net basically has this. Comments are moderated on a scale from -1 to +3, and then you can choose to expand only +2 and up.
spockz · 1d ago
I have it set to 2 by default which helps but can also be annoying on fresh posts as unmoderated posts are also hidden. And then if there is a +2 post it totally only makes sense in the context of the tree so now I’m manually unfolding the parent comments.

All of this to say that one feature brings in a whole set of additional complications. Less is more.

busymom0 · 1d ago
Can you explain how that works? I visited the site but don't understand their language.
Aurornis · 2d ago
> and heavy moderation.

I don’t think there is heavy moderation in the traditional sense. It’s primarily user-driven, aside from obvious abusive behavior. The downvote and flagging mechanisms do the heavy lifting.

The heuristics that detect a high ratio of arguments to upvotes (as far as I can tell) can be frustrating at times, but they also do a good job of driving ragebait off the front page quickly.

The moderators are also very good at rescuing overlooked stories and putting them in the second chance pool for users to consider again, which feels infinitely better than moderators forcing things to the front page.

It also seems that some times moderators will undo some of the actions that push a story off the front page if it’s relevant. I’ve seen flagged stories come back from the dead or flame war comment sections get a section chance at the front page with a moderator note at the top.

Back in the Slashdot days I remember people rotating through multiple accounts for no reason other than to increase their chances of having one of them with randomly granted moderation points so they could use them as weapons in arguments. Felt like a different era.

90s_dev · 2d ago
> I don’t think there is heavy moderation in the traditional sense.

It seems to be a combination of manual and automated moderation (mostly by dang but he has more help now), using the kind of over/under-engineered custom tools you'd expect from technophiles. I've wondered a lot about the kind of programming logic he and the others coded up that make HN as curious as it is, and I have half a mind to make a little forum (yet another HN clone, but not really) purely for the sake of trying to implement how I think their moderation probably works. If I went through with this, I'd have it solely be for Show HN style project sharing/discussion.

mdaniel · 2d ago
> (mostly by dang but he has more help now)

https://news.ycombinator.com/item?id=43558671 for those who missed it

90s_dev · 1d ago
Matt's right, guys.
90s_dev · 1d ago
I'm pretty much decided on making the Show HN clone even if nobody uses it. Because I know it's a good idea and I believe in it:

* For every N=round(10) years software experience, you can click submit N10 times.

* You must* provide a link and year proving your earliest project or employoment.

* Max 256 submissions per day for everyone total.

Should be a fun experiment. Email me if you want an early invite.

ted_dunning · 1d ago
How do people with experience that predates the internet prove that?
90s_dev · 1d ago
They'll find a way.
marssaxman · 1d ago
Somewhere in my garage there's a box containing a physical package for one of the first pieces of published software I ever wrote. I wonder if there's a date printed on its CD-ROM?
smt88 · 1d ago
HN is heavily moderated by humans. They've discussed it before. They're machine-assisted, but heavily involved day-to-day.
gchamonlive · 1d ago
Maybe it's an effect of not having to compete with other outlets.
jgalt212 · 1d ago
I think HN has some pretty sophisticated automated and human-in-the-loop moderation features that few other sites possess, or throw as much resources at. Because HN is not ad-supported it does not fall victim to tragedy of the commons.
akomtu · 1d ago
HN's dry text-only design is what repels most of the problems. Mods only polish it a bit.
andsoitis · 1d ago
Το λακωνίζειν εστί φιλοσοφείν

To be spartan is to philosophize.

thaumasiotes · 1d ago
I'm curious why λακωνίζειν needs to be nominalized and φιλοσοφείν doesn't.
chairmansteve · 1d ago
Slashdot sold out to Conde Nast. That killed it. It was very well designed.
quantadev · 1d ago
"Worst and First beats Perfect and Last"

     - Every Venture Capitalist Ever.
rmason · 1d ago
The exception to that rule was Google. Which coincidentally might have been one of the best VC investments of all time.
quantadev · 1d ago
Google was just the right idea at the right time. Ranking pages based on how many other pages link to it wasn't a brilliant idea, it was just the most obvious thing to do next. It was an algo that you could basically implement in a weekend. Tons of tech companies are just this. Something done at the right time, that was super easy to implement, by people capable of getting others to try it.
wltr · 1d ago
What makes HN work is being popular. Nothing more. Stop praising mediocrity.
varbhat · 2d ago
So, Hacker News was not rewritten in Common Lisp. Instead they reimplemented the Arc Runtime in Common Lisp.
quotemstr · 2d ago
And that's the sort of thing Lisp excels in
westurner · 2d ago
There are probably Markdown libraries for Arc by now?

Though, Reddit eventually realized that javascript: URLs - in Markdown - were an XSS risk.

-__---____-ZXyw · 1d ago
Lisp supremacy approaches!

I'm reminded of definitively the most extreme writing on programming I've ever read, here https://llthw.common-lisp.dev/introduction.html, including but in no way limited to claims such as:

> The mind is capable of unconsciously understanding the structure of the computer through the Lisp language, and as such, is able to interface with the computer as if it was an extension to its own nervous system. This is Lisp Consciousness, where programmer and computer are one and the same; they drink of each other, and drink deep; and at least as long as the Lisp Hacker is there in the flow, riding the current of pure creativity and genius with their trusty companions Emacs and SLIME, neither programmer nor computer know where one ends and the other begins. In a manner of speaking, Lispers already know machine intelligence---and it is beautiful.

Has any other language produced such thoughts in the minds of human beings? Maybe yes, but I don't know of one. Maybe Forth, or Haskell, or Prolog, but I haven't found similar writing. Please do share.

mark_l_watson · 23h ago
I agree, and it gets even better: while low level ML support in Common Lisp does not match Python libraries, now it often does not matter because LLMs are not embedded in applications, then are often accessed via a HTTP request.
mannyv · 23h ago
68k assembly is like that.
dang · 2d ago
> Arc was implemented on top of Racket

Originally on MzScheme, then later PLT Scheme. It was ported to Racket by the great kogir, IIRC.

sctb · 2d ago
I think MzScheme is just the core (non-GUI) part of PLT Scheme, which was renamed to Racket.

Also, I believe pg started implementing Arc on Scheme48 based on mailing list activity at the time. I've always been curious about the switch to PLT!

neilv · 1d ago
That might've been more a reflection on PLT than on Scheme48 (which also had some really smart people on it).

As some point, when I was writing a lot of basic ecosystem code that I tested on many Scheme implementations, PLT Scheme (including MzScheme, DrScheme, and a few other big pieces), by Matthias Felleisen and grad students at Rice, appeared to be getting more resources and making more progress than most.

So I moved to be PLT-first rather than portable-Scheme-first, and a bunch of other people did, too.

After Matthias moved to Northeastern, and students graduated on to their own well-deserved professorships and other roles, some of them continued to contribute to what was soon called Racket (rather than PLT Scheme). With Matthew Flatt still doing highly-skilled and highly-productive systems programming on the core.

Eventually, no matter how good their intentions and how solid their platform for production work, the research-programs-first mindset of Racket started to be a barrier to commercial uptake. They should've brought in at least one of the prolific non-professor Racketeers into the hooded circle of elders a lot sooner, and listened to that person.

One of the weaknesses of Racket for some purposes was lack of easy multi-core. The Racket "Places" concept (implementation?) didn't really solve it. You can work around it creatively, as I did for important production (e.g., the familiar Web interview load-balancing across application servers, and also offloading some tasks to distinct host processes on the same server), but using host multi-core more easily is much nicer.

As a language, I've used both Racket and CL professionally, and I prefer a certain style of Racket. But CL also has more than its share of top programmers, and CL also has some very powerful and solid tools, including strengths over Racket.

agumonkey · 2d ago
Are we iterating over all lisp implementations ? A strange variant of the ship of Theseus
pdpi · 1d ago
Lisp of Theseus does have a certain ring to it.
oblio · 1d ago
Next up, the end goal: Emacs Lisp.
dang · 1d ago
Yes and dynamically scoped.
kragen · 1d ago
Elisp supports static scoping now. Also, native-code compilation. I haven't tried benchmarking it against SBCL, though, and I would be surprised if it approached SBCL's performance.
dang · 23h ago
Oh yes! I was joking that if we were going to port Arc to Emacs Lisp, I would want it to be the classic, dynamically scoped version.

I don't mean that, of course. But there's a reason for the joke. When I did extensive work in Emacs Lisp (before they added lexical scope) I came to appreciate (1) how amazing a domain-specific language it is, for the domain of a programmable text editor—it's really one of the ultimate classics of a domain language; and (2) how everything being dynamically scoped was somehow closely allied with this domain. It made Elisp less useful as a general purpose language (lexical scope is a good thing!) but arguably more useful for making and extending a programmable text editor.

kragen · 21h ago
That seems plausible. But I wonder how far you could get in a lexically scoped language using temporary assignments to variables that get automatically undone when exiting a scope, the way dynamic scope is usually implemented with shallow binding. Other domains where you often want such temporary assignments include floating-point math (execute this calculation with the rounding mode temporarily set to "upward") and graphics (execute this drawing with the current transformation matrix temporarily set to foo and the current color temporarily set to bar).
agumonkey · 1d ago
yeah that would be a fun thing to do, even though yeah SBCL compiled code will probably be an order of magnitude faster
kragen · 2d ago
Aren't MzScheme, PLT Scheme, and Racket the same thing?
dang · 2d ago
Yes, but for me each name denotes the thing as it was when it was called that.

(This conversation has turned unexpectedly ontological!)

kragen · 1d ago
I always wonder whether it's really the same conversation anymore when that happens.
altairprime · 2d ago
Welcome to HN :)
froh · 14h ago
this made me crack, you _do_ know who you welcomed to HN, do you? and I saw the smiley but I have to know if it was intentional or accidental:-)
altairprime · 20m ago
Yes :D
rurban · 2d ago
They were all based on MzScheme, yes. But nowadays Racket runs on the fastest scheme, chez.

HN runs now on SBCL, which is much faster and also multi-threaded.

Xeoncross · 2d ago
The article makes it sounds like Dang also helps with the codebase. There must be others, but Dang is the one I've seen for years at this point.

I've beeing a part of many online communities as both a member and moderator. However, Hackernews is the community that I've been apart of for the longest and the one that brings me the most joy.

Dang, is there anything random people like me can do for you? Can I at least buy you a coffee or something?

someperson · 1d ago
Keep in mind Hacker News (formerly Startup News) is effectively a loss-leading advertising arm of Y Combinator, which at this point is one of the most successful investment firms in the world.

And HN founder and original author Paul Graham is (at least on paper) billionaire, not merely the decamillionare he used to be.

Though it's still good for it to be a self-funding project even if that means accepting donations.

ksec · 1d ago
> Initially called Startup News or occasionally News.YC., it became known by its current name on August 14, 2007.[4]

Oh I have been on HN since 2008 and didn't know that.

dang · 1d ago
bwilliams18 · 1d ago
Is there a canonical definition of hacker as described in this post and (at it's best) this community? I always feel strong gravitation to this term, but also feel nervous about embracing it because of it's criminal connotations in common parlance.
dang · 1d ago
Worry not! Your gravitation is well-founded.

The earliest documented use of 'hack' is from "AN ABRIDGED DICTIONARY of the TMRC LANGUAGE", written in 1959 by Peter Samson. (TMRC was the Tech Model Railroad Club of MIT.) The definition was itself a playful example of what it was defining:

  HACK: 1) something done without constructive end; 2) a project undertaken on bad self-advice; 3) an entropy booster; 4) to produce, or attempt to produce, a hack.

  HACKER: one who hacks, or makes them.
Samson (2005): "I saw this as a term for an unconventional or unorthodox application of technology, typically deprecated for engineering reasons. There was no specific suggestion of malicious intent (or of benevolence, either). Indeed, the era of this dictionary saw some 'good hacks': using a room-sized computer to play music, for instance; or, some would say, writing the dictionary itself."

https://www.gricer.com/tmrc/dictionary1959.html

The 'malicious' connotation (e.g. breaking into someone else's system) dates from early 1960s phone phreaking. The claim that the malicious sense came earlier than the creative sense was made in 2003 by a researcher [1] who retracted it when this 1959 usage was pointed out:

"as soon as the 1959 citation was discovered I conceded that I was probably wrong about "hacker" originally having malicious connotations" (https://news.ycombinator.com/item?id=19416623)

I'm not sure Peter Samson would agree that it was "discovered", but never mind.

[1] https://web.archive.org/web/20051023131548/http://listserv.l...

---

Edit: The phone-phreaking instance dates from 1963: https://blog.historyofphonephreaking.org/2013/09/document-of...

The wrong idea that the so-called 'malicious' usage came first was widespread for a while—here's an example: https://imranontech.com/2008/04/01/the-origin-of-hacker/

No comments yet

cheshire_cat · 1d ago
Paul Graham himself wrote an essay about the word and it's meaning. [0]

Another text that might describe the HN communities understanding of the word is "How to become a hacker" by Eric S. Raymond. [1]

You can go back more in time towards the origins of the term, the MIT labs of the 50s and 60s, see the hacker ethic. [2] But it's not like the folks in the valley would care that much for those values nowadays.

The wiki page for the term hacker also is quite helpful, hn crowd is talking about the first kind of hacker. [3]

[0] https://paulgraham.com/gba.html

[1] http://www.catb.org/esr/faqs/hacker-howto.html

[2] https://en.wikipedia.org/wiki/Hacker_ethic

[3] https://en.wikipedia.org/wiki/Hacker#Definitions

tptacek · 1d ago
Be a little careful with things like Raymond's guide, which is one of those documents that says "the way to be X is to be more like the author". Raymond's stewardship of the old "jargon file" is pretty infamous for the same reason.
SonOfLilit · 1d ago
Look in the hacker jargon file
cheshire_cat · 1d ago
hyperman1 · 1d ago
If dang is listening: I'd like your comments on how to pull this off. Replacing the engine of a live site without some old forgotten part breaking is hard to accomplish. I rarely see this kind of thing happen without a week of frantic bug fixing and users grumbling.
brundolf · 2d ago
> [Clarc] is much faster and also will easily let HN run on multiple cores

This was all running on a single core??

haiku2077 · 2d ago
Modern CPUs are crazy fast. 4chan was serving 4 million users with a single server, a ten year old version of PHP and like 10000 lines of spaghetti code. If you do even basic code quality, profiling and optimization you can serve a huge number of users with a fraction of a CPU core.

I/O tends to be the bottleneck (disk IOPS and throughput, network connections, IOPS and throughput). HN only serves text so that's mostly an easy problem.

Tabular-Iceberg · 1d ago
I still can't wrap my head around how the conventional wisdom in the industry to work around that problem is to add even more slow network I/O dependencies.
EasyMark · 1d ago
Yo dawg, I hear you want to cache your cache of shards.
bakugo · 2d ago
4chan is a special case, because all of its content pages are static HTML files being served by nginx that are rewritten on the server every time someone makes a post. There's nothing dynamic, everyone is served the exact same page, which makes it much easier to scale.
donnachangstein · 2d ago
It's not a special case at all. 20 years ago this was standard architecture (hell, HN still caches static versions of pages for logged-out users).

No, what changed is the industry devolved into over-reliance on mountains of 'frameworks' and other garbage that no one person fully understands how it all works.

Things have gotten worse, not better.

pmdr · 1d ago
The "this won't scale" dogma pushed by cloud providers via frameworks has actually scared people into believing they really need a lot more resources than they actually do to display information on the web.

It's really dumbfounding that most devs fell for it even as raw computing power has gotten drastically cheaper.

haiku2077 · 1d ago
I was having a conversation with some younger devs about hosting websites for our photography hobbies. One was convinced hosting the photos on your own domain would bankrupt you in bandwidth costs. It's wild.
sgarland · 1d ago
I very much enjoyed the Vercel fanboys posting their enormous bills on Twitter, and then daring people to explain how they could possibly run it on, you know, a server for anything close to the price.

I took the bait once and analyzed a $5000 bill. IIRC, it worked out to about the compute provided by an RPi 4. “OK, but what about when your site explodes in popularity?” “I dunno, take the other $4900 and buy more RPis?”

nssnsjsjsjs · 1d ago
Or get a hundred Hetzner dedis
DrillShopper · 1d ago
Sounds like the real web scale was all of the AWS bills we paid along the way
actuallyalys · 1d ago
Static HTML and caching aren't special cases by any means, but a message board where literally nothing changes between users certainly seems like a special case, even twenty years ago. You don't need that in order to make a site run fast, of course, but that limitation certainly simplifies things.
haiku2077 · 1d ago
I worked at at company near the top of https://en.wikipedia.org/wiki/List_of_the_largest_software_c... for a while. It was extremely common that web services only used about 1/20th of a CPU core's timeshare. These were dynamic web services/APIs. (We did have to allocate more CPU than that in practice to improve I/O latency, but that was to let the CPU idle to be ready to quickly react to incoming network traffic.)

This was many years ago on hardware several times slower than the current generation of servers.

agumonkey · 2d ago
Here goes all your software engineering classes. So bare it's hilarious
bawolff · 1d ago
I wouldn't call that a special case, just using a good tool for the job.
mschuster91 · 2d ago
... which, again, shows just how much power you can get out of a 10 year old server if you're not being a sucker for the "latest and greatest" resume-driven-development crap.

Just look at New Reddit, it's an insane GraphQL abomination.

sgarland · 1d ago
Every time a dev discovers how tremendously bloated and slow modern software is, an angel gets its wings.
quotemstr · 2d ago
Modern CPUs are stupid fast when you use them the right way. You can take scale-up surprisingly far before being forced to scale out, even when that scale out is something as modest as running on multiple cores.
thatwasunusual · 2d ago
Based on context, you are insinuating that a discussion board like HN _can_ be hard on the CPU alone? If so, how? My guess would be _also_ be that the CPU would have little to do by itself, but that I/O would take the brunt?
grg0 · 2d ago
Negotiating TLS handshakes is one way. But I'd imagine the rest is largely IO-bound like you said.

It still puts into perspective what a big pile of dogshit consumer software has become that stuff like this comes as a surprise. Also, the last time I checked, Let's Encrypt also ran on a single system. As did the Diablo 2 server (I love reading about these anecdotes.)

For every incremental change in HW performance, there is an order-of-magnitude regression in SW performance.

sgarland · 1d ago
If nothing else, handling interrupts from the NIC to pull packets out of its receive buffer, though that should be usually be isolated to a couple of cores.

Also, re: I/O, the CPU usually also has to handle interrupts there, as well as whatever the application might be doing either that I/O.

quotemstr · 1d ago
> If nothing else, handling interrupts from the NIC to pull packets out of its receive buffer,

Interrupts? Interrupts? We don't need no stinking interrupts! https://docs.kernel.org/networking/napi.html#poll

bawolff · 1d ago
Servers can also serve small text files out of memory incredibly fast.
whalesalad · 1d ago
Most apps aren’t suffering from computation. They suffer from I/O
kevincox · 1d ago
Yet GitHub can't show more than a dozen comments on the same page. Needing you to click "view more" to bring them in 10 at a time.

HN is an island of sanity in a sad world.

simoncion · 1d ago
In fairness, HN wouldn't show more than what, twenty-ish thread roots at a time, requiring you to click "more" to bring in more... which could contain the same set of thread roots you'd been looking at, depending on upvote activity.

(I assume that this update has removed that HN restriction, but haven't bothered to go look to verify this assumption.)

kevincox · 1d ago
The update appears to have come with unlimited or much higher page size. I don't think anyone has found a thread that is still split into multiple pages.
JW_00000 · 2d ago
I was going to reply that this is pretty common for web apps, e.g. NodeJS or many Python applications also do not use multi-threading, instead just spawning separate processes that run in parallel. But apparently, HN ran as 1 process on 1 core on 1 machine (https://news.ycombinator.com/item?id=5229548) O_O
mbac32768 · 16h ago
HN is not really that much of a workload. Links with text only comments, each link gets a few hundred comments at most, and commenting on stories ends after they are old enough.

Probably everything that's current fits easily in RAM and the older stories are candidates for serving from a static cache.

I wouldn't say this is an astounding technical achievement so much as demonstrating that simplicity can fall out of good taste and resisting groupthink around "best practices".

galaxyLogic · 1d ago
I think NodeJS apps typically rely on JavaScript event-loop instead of starting new processes all the time.

Spawning new processes for every user is possible but would probabaly be less scalable than even thread-switching.

watermelon0 · 1d ago
NodeJS apps usually use multiple processes, since JS event loop is limited to a single core. However, this means that you cannot share data and connection pools between them.
jay-barronville · 1d ago
> I think NodeJS apps typically rely on JavaScript event-loop instead of starting new processes all the time.

> Spawning new processes for every user is possible but would probabaly be less scalable than even thread-switching.

I’d just like to note/clarify that there is, in fact, multi-threading happening under the hood when running Node.js. libuv, the underlying library used for creating and managing the event loops, also creates and maintains thread pools that are used for some concurrent and parallelizable tasks. The fact that JavaScript (V8 in the case of Node.js) and the main event loop are single-threaded doesn’t mean that multi-threading isn’t involved. This is a common source of confusion.

xnx · 1d ago
It's amazing what's possible when you don't use microservices
EasyMark · 1d ago
Text only processing is amazingly fast, as are static websites. Javascript is heavy, man.
anthk · 2d ago
Good, sbcl it's great for CL. And now with current CLX from QuickLisp (the one with daily releases, I can't remember it's name) MCClim runs snappy even under Intel n270 ATom machines. Under ECL it almost runs snappy, but the performance gain it's astronomical. From a really laggy UI to instant rendering.

EDIT: UltraLisp for QuickLisp.

quotemstr · 2d ago
Is QuickLisp entering the 1990s and enabling TLS yet?
atgreen · 1d ago
quotemstr · 1d ago
That looks awesome. Hope it gets traction!
mdaniel · 2d ago
sbcl is a workhorse. I wonder if the Racket folks didn't consider the Arc under production workloads general purpose enough to fix. I actually don't know of any other projects that use Racket in anger

I'll always have a soft spot in my heart for Armed Bear because that JVM library ecosystem is enormous https://github.com/armedbear/abcl

dang · 2d ago
The Racket folks have always been most helpful and never turned down a request to fix anything.
mdaniel · 2d ago
Apologies that may have come across as more accusative than I intended. I was just surprised that whatever missing(?) feature or behavior that would cause one to move off of Racket wouldn't be of interest to other Racket users
samth · 1d ago
The big difference between SBCL and Racket today is support for parallelism, and that's about decisions made by both projects a very long time ago. Racket has incrementally added significantly more parallelism over the years, but supporting lightweight parallel tasks that do IO (as in a web server) is still not something Racket's great at.

(Source: I'm one of Racket's core developers.)

brobdingnagians · 2d ago
My assumption is that creating a compiler and runtime to match sbcl isn't in scope for racket, so it wouldn't be polite to request racket to do so :) there were probably other benefits of similar orthogonal features, where racket users don't necessarily need it, but another language/runtime already has it because that's where people who need that go
BoingBoomTschak · 2d ago
Isn't Racket using the (also) very fast Chez Scheme underneath?
cess11 · 1d ago
SBCL is disgustingly performant, and while Racket is fine for most applications you'll still notice sometimes that it's executed on a VM and hasn't prioritised speed to the same degree.
reikonomusha · 1d ago
In addition, Common Lisp provides standardized ways to get fast code: OPTIMIZE policy, type annotations, stack allocations, disassemblies, etc. This is all there before you get to SBCL's specific tools for optimization and profiling.
lemming · 1d ago
Chez compiles, I think, its not a VM. It’s not as fast as SBCL of course, but it’s not interpreted.
cess11 · 1d ago
It's what they consistently call it here, VM and bytecode:

https://docs.racket-lang.org/guide/performance.html

As I understand it the difference between raco make and raco exe is that the latter bundles a VM.

I don't really care about these minutiae, it's a great platform for GUI development that consistently builds as well on Debian as Windows.

int_19h · 1d ago
From this very page you've linked to

"Every definition or expression to be evaluated by Racket is compiled to an internal bytecode format, although “bytecode” may actually be native machine code. In interactive mode, this compilation occurs automatically and on-the-fly. Tools like raco make and raco setup marshal compiled bytecode to a file, so that you do not have to compile from source every time that you run a program. ... For the CS implementation of Racket, the main bytecode format is non-portable machine code."

There's more about what this entails here and how to view the generated assembly: https://docs.racket-lang.org/reference/compiler.html#(part._...

fuzztester · 1d ago
>it's s a great platform for GUI development

Can you elaborate on that? I'm interested in deciding on a good tech stack for desktop GUI app development for personal projects, so was interested in your comment.

cess11 · 1d ago
Sure. There is a rather extensive toolkit that comes with the basic distribution, https://docs.racket-lang.org/gui/. For that you can use MrEd to build your layouts if you want, https://github.com/Metaxal/MrEd-Designer.

The problem with that approach is that you need to figure out some parts on your own, like state management. If you need that flexibility it's still a good option, or you'd opt for gui-easy, a library on top of the GUI toolkit that adds observables for state management and a more declarative API, https://docs.racket-lang.org/gui-easy/index.html.

I haven't managed to get cross-compilation going but I've had no problem just copying my Racket files to another computer and build there. It's supposed to be possible however, you'll probably manage to figure it out if it's important to you.

The gui-easy library makes it trivial to pack up some small tool in a GUI in a few tens of lines of code. I'm guessing there is a way to prune the binaries but don't really care about it myself, I just go with the default ~20 MB executables.

fuzztester · 22h ago
thanks, good info.
tejtm · 1d ago
As "in anger" is only something I have seen in the biomedical community, mediKanran should tick the box.

https://minikanren.org/workshop/2020/minikanren-2020-paper7....

jgrahamc · 2d ago
As someone who runs a website based on the Arc code that was opened sourced... I'd love to be able to use Clarc.
g8oz · 1d ago
what is the site?
jgrahamc · 1d ago
https://twostopbits.com

I use the HN Arc code, but the site is about retro computing and gaming.

justsomehnguy · 1d ago
Damn you, you reminded me [again] of the delightful days of FeedDemoning

Maybe I should find a way to have APOD every day again.

miki123211 · 1d ago
Are there any other popular (>10k DAUs) sites that still use an esoteric, homegrown tech stack? If you have worked on them, what do you think, is it a legacy mess nobody wants to touch, or a pleasure to work with?

PG made an assertion once that websites (in contrast to desktop software) are free to use any stack of their choosing, as long as it can take in HTTP requests and output JSON or HTML. This intuitively seems to be true, especially so with how powerful modern machines can get, but it seems like it hasn't increased stack diversity much.

The advantages of boring technology and "resume-driven development" seem to outweigh whatever gains you may get from using something custom.

reaperducer · 19h ago
Are there any other popular (>10k DAUs) sites that still use an esoteric, homegrown tech stack? If you have worked on them, what do you think, is it a legacy mess nobody wants to touch, or a pleasure to work with?

I do. It's absolutely lovely.

We can make decisions based on what's best for the user, and not based on what the latest fad is.

In the time I've been in charge of this company's web sites, we've reduced cost drastically, improved reliability, and cut time to production in half.

Hiring can be problematic, because there's a lot of people out there who can't think through problems; or only know how to do x in one tool, and are unwilling/unable to learn something else.

The big keys are: We're not a tech company, so management doesn't care what we do, as long as it gets done. We build a lot of our own tools, so they fit perfectly into our workflow, which makes them and us more efficient. And we don't have to have 99.999999% uptime for no reason. Management is OK if the web sites are slow or unavailable for a few minutes each week, as long as they're back to normal in less time than it takes for someone to call and complain. And our clients love to call and complain.

rcarmo · 2d ago
Hmmm. Does that mean we'll get dark mode now?
yyx · 2d ago
uBlock origin filter:

    ! Hacker News dark mode
    news.ycombinator.com##html:style(filter:invert(90%) hue-rotate(180deg))
    news.ycombinator.com##body:style(background: white)
rcarmo · 2d ago
Does not work in embedded browsers in RSS readers. We need a proper site CSS, not client-side patches.
wvenable · 1d ago
Sounds like you need to write a CSS translating proxy server.
rcarmo · 1d ago
…and follow the HN pattern of adding more complexity to my own niche solution instead of fixing he technical debt? :)

Maybe I could fund a startup for that…

dang · 2d ago
rcarmo · 2d ago
That thread is 5 years old, and nothing really came out of it.

The genius solution in there is probably this one:

     @media (prefers-color-scheme:dark){body{filter:invert(1) hue-rotate(180deg)}}
...which you can try by doing this in the browser console:

    const styleElement = document.createElement('style');
    styleElement.type = 'text/css';
    styleElement.textContent = "@media (prefers-color-scheme: dark) { html { filter: invert(1) hue-rotate(180deg); } }";
    document.head.appendChild(styleElement);

But I get that there are a lot of opinions. Just try one, put up a vote over a week, do it over 4-6 weeks, settle on the one that has the best feedback...
brudgers · 2d ago
That thread is 5 years old

This might be what we are up against:

https://norvig.com/21-days.html

https://paulgraham.com/hundred.html

rcarmo · 1d ago
I’m all for stability and all (heck, I still use vanilla vim), but some things are… necessary.
Tijdreiziger · 1d ago
I use the awesome “Dark Reader” browser extension, which gives you dark mode on any website.
rcarmo · 1d ago
Does not work in in-app browsers.
satiric · 1d ago
Considering Hacker News thinks font-size:9pt is acceptable for body text in 2025, don't hold your breath.
1718627440 · 1d ago
I like it, in fact my standard terminal font size is even smaller. I hate all the modern websites wasting tons of whitespace, so that you need to hit C-- ~3 times to make it usable.
ashwinsundar · 1d ago
This is what cmd +/- is for
krior · 1d ago
whats wrong with that?
satiric · 1d ago
It's too damn small. Firefox automatically scales it up to 12px (as does Chrome I think), and even then I zoom in to 130% to get the font to 15.6px.

On the home page the text that tells you who the poster is, how many upvotes and comments, etc, is gray text on a gray background, at 7pt font. Again, Firefox and Chrome scale this up to 9.33pt, which again, is too small for me to read comfortably on a 24 inch desktop monitor without zoom.

(I accept that 120% would be fine; that brings up the main font size to 14.4pt. Wikipedia seems to use 14pt and that's totally fine for me. But still, neither me nor the browser should have to scale up the website.)

Even at 130% zoom, on the home page I can see 20 posts at once. I understand complaints that reddit went too far in the other direction, but that doesn't mean they should throw accessibility out the window for this site.

simoncion · 1d ago
> Firefox automatically scales it up to 12px...

Only if you've told it to. My Firefox settings have "Minimum Font Size" set to "None". Perhaps scaling up to 12px is a default? (Edit: Also, are you sure you're not thinking of 12pt? IIRC, points are DPI-independent units and (AIUI) the traditional way of specifying font sizes in computerized typography.)

Despite my age, I still have eyes that are good enough to easily read the font sizes you're complaining about. A hugely important part of a User Agent is that it provide overrides for site design choices that the Agent's user has decided will benefit them. It's a good thing that UAs let folks like you choose a minimum-possible font size. It's an equally good thing that UAs let folks like me choose to see the choices that designer made that others criticize.

chuckadams · 22h ago
Pixels are in fact DPI-independent too, the CSS spec makes them exactly 0.75 of a point, which comes out to 96 DPI regardless of the device. Devices are then free to scale that up or down as they like: phones typically scale it down a touch because they’re held closer to the eyes.
simoncion · 21h ago
What a bloody confusing way to define a unit of measure called a "pixel". 1px should be one device pixel, and 1pt should be 1/72 of an inch on the device!

Sheesh.

chuckadams · 20h ago
Eh, logical pixels have been a thing since at least X11, which is where we got that 96DPI thing to begin with. It certainly is confusing that they’re named the same thing though.
satiric · 1d ago
Yup meant to say 12pt, sorry.
simoncion · 21h ago
Nothing to apologize for. I didn't even notice until a bit after I wrote up my reply. It has been several hot minutes since I've had to know the difference between the two.
simoncion · 1d ago
> ...points are DPI-independent units...

To be clear, this is a confusingly- (and perhaps incorrectly-) worded way to say "At a given point size, a particular glyph from a particular font is supposed to be the same size on the output device, regardless of its physical size or number of pixels.".

rwmj · 2d ago
Can't you use tampermonkey or a similar tool that lets you apply your own stylesheet?
quotemstr · 2d ago
The OP isn't really asking for a "dark mode" like a literal reading of his comment might suggest. He's asking for an officially supported dark mode that evolves with the site and doesn't break random functionality one day. It's easy to use Stylist or TamperMonkey to make a dark mode that works at one instant of time. It's much harder to maintain one indefinitely in the face of constant changes made by developers not concerned with breaking your work, which they probably don't even know about.
SoftTalker · 2d ago
I think there was a vision early in the evolution of the web that user-supplied stylesheets would be a lot more commonly used than they turned out to be.

Things like colors, contrast levels, font sizes, are often matters of personal preference, and the browser (in theory) is the common place to manage those. Each site should not have to reinvent this feature.

galaxyLogic · 1d ago
User-style-sheets sound great in theory, but CSS is Cascading Style Sheets which means it would be very easy for users to break functionality of web-sites. For instance make the cascade cascade so that the text-color is same as background color on some widget on some website and you might be missing a button.

A user's custom style-sheet might be good for one web-site, but not for every website.

The original web was much about self-expression of developer-users, but now the web is all about apps, which must not break because a user might want to use different colors.

And why should you need to customize colors? I can understand that different users need larger fonts which you can do by zooming in the browser. Colors should be good to go if the website is well-styled to begin with.

zzo38computer · 1d ago
> Colors should be good to go if the website is well-styled to begin with.

What if it is not well-styled? Or, maybe some people think it is and others disagree and want something else. The end user should need to customize fonts (not only larger, but also if you want smaller fonts; I more often find the fonts on a web page are too big and want smaller fonts; however, also you might prefer a specific font typeface and not only the font size), colours (also for many reasons, including using a monochrome display or printer that the web page author might not have been aware of), animations (e.g. to disable them), margins, etc.

quotemstr · 1d ago
> User-style-sheets sound great in theory, but CSS is Cascading Style Sheets which means it would be very easy for users to break functionality of web-sites. For instance make the cascade cascade so that the text-color is same as background color on some widget on some website and you might be missing a button.

Pretty sure AI-driven style derivation will finally deliver the dream of custom stylesheets in a robust and automatic way.

zzo38computer · 1d ago
I think that being able to make user stylesheets based not only on HTML but also on ARIA attributes and on existing CSS commands, might be helpful, to compensate for the problems. User settings could also be used to e.g. override (and/or disable) the meaning of specific CSS commands in the styles specified in the document, and to override the results of media queries. It could also perhaps help to make the rendering more efficient if inefficient commands are disabled by the user (I often find it slow due to inefficient use of CSS commands).
quotemstr · 1d ago
> ARIA attributes

That works today. No problem.

    [role="button"] {
      cursor: pointer;
    }
> on existing CSS commands

Not sure what you mean. Between the new selector combinators and attribute selectors, you can do a ton. You also have style-based container queries, which are probably close to what you want.

johnisgood · 2d ago
It is possible to have this feature built-in to the browser. I am surprised it has not been implemented yet (?).
randallsquared · 2d ago
Browsers used to commonly support user stylesheets. Chrome removed it a long time ago, and I'm not sure what the status of that is in Firefox now. The issue is that there's no single common use case for them, and if there were, it would be simpler to build it in. But maintaining that level of flexibility has a continuing cost...
johnisgood · 2d ago
I am referring to the fact that there are more or less simple algorithms you can use to determine the dark version of colors, or rather, perceptually darker variants (e.g. APCA). The browser could make the contrast threshold configurable.
johnisgood · 12h ago
Oh, and there is inverse(), but I have no idea how good that is.
SoftTalker · 2d ago
Firefox appears to support a light and dark mode, custom foreground and background colors, and setting a default font face and size. Nothing like full user stylesheet support, at least not without extensions.
saint_yossarian · 1d ago
It does support the userContent.css file in the profile, there's just no UI for it.
shwouchk · 1d ago
safari still supports it on mac
altairprime · 2d ago
There was a Chrome experiment for it when I looked last year; it worked well in some cases and was just as bad at Google Sheets as every other generic darkmode solution.
vinceguidry · 2d ago
> Each site should not have to reinvent this feature.

This would send me into peals of laughter if I weren't already crying. The time to make this argument was 30 years ago, when the web wasn't fragmenting into a billion different pieces. The browser can make exactly zero assumptions about any given site, so it could never be a place where user preferences about them could be actionable. Downvoters should get work as web developers sometime. You really want the browser making assumptions about your web design?

All it can do is pass a header and let the website do what it will with it.

rcarmo · 2d ago
None of those extensions work in app-embedded browsers.
rcarmo · 2d ago
I don't read HN in normal browsers. If you read the RSS feed and click through, for instance, it's instant white flash from the embedded browser in the RSS reader, which cannot be customized but honors dark mode.
abdullahkhalids · 1d ago
Which RSS reader do you use?
rcarmo · 1d ago
Reeder on iOS, and Feeder(?) whenever I need to use an Android device. But _anything_ with an in-app browser will have the same issues.
jaoane · 1d ago
Disable the in-app browser I guess? If it doesn’t run extensions at all, are you not using an ad blocker? o_O
rcarmo · 1d ago
For HN? Why would I need that?
jaoane · 1d ago
I assume you use an RSS reader to read multiple feeds, not only HN.
justsomehnguy · 1d ago
Ask your browser for the reading mode
rcarmo · 1d ago
That does not prevent a big white flash in the middle of the night, and does not work inside all in-app browsers.
cess11 · 1d ago
There is an API somewhere, could wrap that with whatever you feel like.
rcarmo · 1d ago
That’s not really the point, my RSS reader’s in-app browser couldn’t deal with that.
codr7 · 2d ago
Definitely makes more sense than Racket imo, Common Lisp is a lot more pragmatic and SBCL is like magic.
cadamsdotcom · 1d ago
Rewrites are definitely not “always a bad idea” as Joel Spolsky once said. What they are is highly situational.

HN has a bunch of factors that make it amenable to a rewrite. It has gigantic scale, not a ton of complexity at a business level, and what it “is” is pretty slow moving at this point.

That means it’s not a great example to justify a rewrite at work :) that said the success does prove rewrites are possible. Bravo on shipping!

eurleif · 1d ago
But they didn't rewrite HN; they created a different implementation of the language it's written in.
alexpham14 · 1d ago
The success of Hacker News doesn’t come from flashy features, but from a community that consistently produces high-quality content. That said, I can’t help but wonder if there are any updates to the UI/UX in the works, LOL.
ggm · 1d ago
Not saying "security by obscurity never works" but am saying it's a shame the defensive wall of anti-spam/abuse depends on some secrecy, because it's a low wall. If the concern with knowing the secret sauce is how easy it would be to defeat, then its a low wall. But, as long as it stays secret, it's doing it's job.

I'm not an infosec professional, or a competent LISP coder, I'm not in a position to say what's better. This is just what pros in the field say to me.

(It's mentioned in the article)

Tistel · 1d ago
Is it still Paul Graham/Robert Morris working on it? Skimmed the article but did not see a ref.

need to check out what it adds to CL: http://arclanguage.org/

dang · 1d ago
Alas, they moved on long ago.
netdevphoenix · 1d ago
That's great, but I think they should improve the responsiveness. It's still a bit wonky. You can see it on the top right corner if you narrow the screen and then widen it
diggan · 1d ago
I'm sure if you came up with a tiny diff of the CSS that would improve the user experience without degrading anything else, and send it to hn@ycombinator.com, they can get it deployed :)
everybodyknows · 1d ago
> anti-abuse measures that would stop working if people knew about them

A heavy lesson in that for other implementors of discussion-forum cum blog-comment systems.

gtirloni · 2d ago
I assume it's worth it to keep it in Arc and not rewrite in something more widely available, is that so?
dang · 2d ago
gtirloni · 1d ago
Thanks for clarifying
kosolam · 2d ago
Is this open source software that I can run my own hacker news as well?
krapp · 1d ago
cmod · 1d ago
Hacker News is the url I use to test most fussy connections because it's so light, and will load under even the slightest trickle of data. When I was doing research in Ghana, it was the only site I could get to reliably load for news in the field, and thus spent a month reading only HN (good luck getting the _New York Times_ to load without a gigabit connection). Appreciate how it stays — and has stayed — svelte and fast throughout the years.
mandeepj · 1d ago
> Hacker News now runs on top of Common Lisp

> there’s now an Arc-to-JS called Lilt, and an Arc-to-Common Lisp called Clarc.

> But Clarc’s code isn’t released, although it could be done:

> Releasing the new HN code base however wouldn’t work:

I'm not sure if I follow all that. If the Clarc is not released, then how does HN run on it?

diggan · 1d ago
> I'm not sure if I follow all that. If the Clarc is not released, then how does HN run on it?

The same person who writes Clarc also deploys HN (assumption, but seems dang does can do both :) ), so using unreleased software is just a matter of navigating to the right local directory.

mbac32768 · 16h ago
could probably have saved themselves a lot of trouble and asked Claude to rewrite it in C++
dhqgekt · 2d ago
When we will get to see the code of clarc? I hope that there is no "business logic" relevant to running HN in the language implementation, is there?
javawizard · 2d ago
That's addressed in the article. There absolutely is:

> Much of the HN codebase consists of anti-abuse measures that would stop working if people knew about them. Unfortunately. separating out the secret parts would by now be a lot of work. The time to do it will be if and when we eventually release the alternative Arc implementations we’ve been working on.

dang · 2d ago
I think the (anonymous? I can't find a name) author of the OP slipped slightly at the end of that otherwise-impeccable sequence of quotes. That last comment (https://news.ycombinator.com/item?id=21546438) was responding to a question about open-sourcing the entire HN codebase, not just the Arc implementation.

Open-sourcing HN wouldn't work because of the anti-abuse stuff, etc. But open-sourcing the Arc implementation (i.e. Clarc) would be much easier. The way to do it would be to port the original Arc release (http://arclanguage.org/) to Clarc. It includes a sample application which is an early version of HN, scrubbed of anything HN- or YC-specific.

sctb · 2d ago
> The way to do it would be to port the original Arc release (http://arclanguage.org/) to Clarc.

If you're looking for volunteers... :)

vindarel · 1d ago
I edited the post to add this clarification, thank you.

Vincent (my full name appears in linked projects ;) )

dang · 1d ago
Ah thanks! I was impressed with how you reconstructed the history there.
dhqgekt · 2d ago
I am asking about the core language implementation. No need to publish the whole source code of HN, just the part of source code of clarc.. You do not have "anti-abuse measures" in the language implementation and runtime, do you? Is it that hard to seperate a language implementation and code written in the language?
dang · 2d ago
You're right. The Clarc code and the rest of the HN codebase are separate. (Well, mostly. Almost entirely.)

More here: https://news.ycombinator.com/item?id=44099560.

udev4096 · 1d ago
I cannot believe how people are praising a centralized, heavily censored links site. Take a look at HN's privacy policy, they sure do make money from monetizing every single thing you say and also fingerprint you all the time. We should have a decentralized link sharing site
jaza · 1d ago
Centralised and heavily censored, yes, but AFAICT the censoring by-and-large respects free speech and diversity of opinion, while effectively stopping spam / abuse, and thus maintaining the high quality of content that keeps us all coming back.

And surely HN is way less monetised (and therefore way more trustworthy) than virtually every other links site / every social media platform out there?

krapp · 1d ago
Depends on what you consider "monetization." Are there ads? Not explicitly, but YC startups do advertise themselves in threads here, and aspiring entrepreneurs do use visibility on HN (both to users and YC) as part of their strategy. If you think this is just a forum of nerds engaging in organic conversation and intellectual diversion, you'd be mistaken. Your attention is currency here as much as anywhere.
krapp · 1d ago
Lemmy or Mastodon, depending on how you want to do it.
ChoGGi · 1d ago
Dang! Thanks dang!
nickpeterson · 2d ago
Random question, how big is hacker news? It’s plain text so I’d imagine it’s reasonably compact?
brudgers · 2d ago
<back of napkin>

Based on the current id, about 45,000,000 items.

Assuming 1KB per item, about 45GB.

So with code and OS, probably it would fit on a $10 thumb drive without compression.

</back of napkin>

If I am within a couple of orders of magnitude, it is hard for me to see a benefit from compression.

monkeyelite · 1d ago
Is the bel project still alive?
Fraterkes · 2d ago
Look, I like the way HN looks but there aren't many sites that essentially look like bare html but still struggle with displaying more than 300 comments.
mdp2021 · 2d ago
What do you mean? With the current internals, a 300 posts HN page would weigh ~500kb; different ones will hardly be more compact. Where is the «struggle»?
busymom0 · 1d ago
Not sure about 300 comments but a post with 5300 comments takes about 10 seconds to load:

https://news.ycombinator.com/item?id=43208973

In March this year, HN changed pagination behavior. Previously, one needed to paginate through pages to read more than X comments. Around March, they now serve all comments at once.

A post having over a thousand comments is extremely rare so not a big deal.

tanjtanjtanj · 2h ago
That page took well under 2 seconds to load on both desktop and mobile for me (wall clock).
krapp · 1d ago
HN has been known to fail in the past with heavy or high velocity threads to the point that dang has asked people to log off en masse to reduce server load. That shouldn't happen for a simple text forum.
DonHopkins · 1d ago
You should have rewritten it in sh and called Sharc, or BASIC and called it BArc, or PHP and called it PHarc, or ML and called it MLarcy. Or license it under GPL-3 and call it Gnarc!
johnisgood · 2d ago
> Much of the HN codebase consists of anti-abuse measures that would stop working if people knew about them. Unfortunately. separating out the secret parts would by now be a lot of work. The time to do it will be if and when we eventually release the alternative Arc implementations we’ve been working on.

Is this a case where security through obscurity is good, or bad? Legit question. I am curious to read the responses it may prompt.

I found this though: https://news.ycombinator.com/item?id=27457350

> There are a lot of anti-abuse features, for example, that need to stay secret (yes we know, 'security by obscurity' etc., but nobody knows how to secure an internet forum from abuse, so we do what we know how to do). It would be a lot of work to disentangle those features from the backbone of the code.

The question still stands for curiosity!

dang · 2d ago
The OP got everything right except that bit. This is a reason for not open-sourcing HN (the application), but it doesn't relate to open-sourcing Clarc (the language implementation). We could do that without revealing any anti-abuse stuff.

More at https://news.ycombinator.com/item?id=44099560.

electroly · 2d ago
Abuse of this sort isn't a security issue in the network sense. i.e. the security of Hacker News is not imperiled by people creating spam accounts, but nonetheless we want to stop that.
Shorel · 1d ago
This is related to Kerckhoffs principle:

"The design of a system should not require secrecy, and compromise of the system should not inconvenience the correspondents"

This means that all of the security must reside on the key and little or nothing in the method, as methods can be discovered and rendered ineffective if that's not the case. Keep in mind that this is for communication systems where it is certain that the messages will be intercepted by an hostile agent, and we want to prevent this agent to read the messages.

When implementing modern cryptographic systems, it is very easy to misuse the libraries, or to try to reimplement cryptographic ideas without a deep understanding of the implications, and this leads to systems that are more vulnerable than intended.

Security by obscurity is the practice of some developers to reinvent cryptography by applying their cleverness to new, unknown cryptosystems. However, to do this correctly, it requires deep mathematical knowledge about finite fields, probability, linguistics, and so on. Most people have not spent the required decades learning this. The end result is that those "clever" systems with novel algorithms are much less secure than the tried and true cryptosystems like AES and SSL. That's why we say security by obscurity is bad.

Now, going back to the main topic: Hacker News is not a cryptographic system where codified messages are going to be intercepted by an hostile actor. Therefore Kerckhoffs principle doesn't apply. There's not a secret key that can be changed in a way the system will recover its functionality if the secret key is discovered.

There is a series of measures that have worked in the past, and are still working today despite a huge population of active spamming and disrupting agents, and they should be kept secret as long as they keep working.

kayodelycaon · 2d ago
Obscurity is extremely good at filtering out low to medium skilled griefers. It won’t stop anyone who is highly motivated, but it will slow them down significantly.

Hacker News is small enough that obscurity would give moderators enough time to detect bad actors and update rules if necessary.

johnisgood · 2d ago
Is HN really that small, considering "HN hug of death"? If it really is small, then hey, we may have already talked! :)
kayodelycaon · 1d ago
Hacker News is a single forum with a tiny attack surface.

Literally any e-commerce site has larger and more critical infrastructure to protect.

johnisgood · 1d ago
Oh, you meant small in that way. My bad.
brudgers · 2d ago
Is this a case where security through obscurity is good, or bad? Legit question. I am curious to read the responses it may prompt.

To me; philosophically; and to a first approximation, all security is through obscurity.

For example encryption works for Alice so long as Bob can't see the key...

... or parking the Porsche in the garage, reduces the likelihood someone knows there is a Porsche and reduces the likelihood they know what challenges exist inside the garage. Now put a tall hedge and a fence around it and the average passerby has to stop and think "there's probably a garage behind that barrier."

To put it another way, out of sight has a positive correlation to out of mind.

Yes of course a determined well funded Bob suggests obscurity with Bob's determination and budget. If Bob is willing to use a five dollar wrench, Alice might tell Bob the key.

qingcharles · 2d ago
There are forks of what I assume is the scrubbed HN codebase, e.g. https://github.com/jgrahamc/twostopbits
omgmajk · 1d ago
Read earlier in the thread that they run the open sourced version https://news.ycombinator.com/item?id=44099315
wvenable · 1d ago
This likely isn't so much "security through obscurity" because it's not really about security in the traditional sense but instead about anti-griefing measures.
Aurornis · 2d ago
> Much of the HN codebase consists of anti-abuse measures that would stop working if people knew about them.

We’ve all heard about how “security through obscurity” isn’t real security, but so many simple anti-abuse measures are very effective as long as their exact mechanism isn’t revealed.

HN’s downvote and flagging mechanisms make for quick cleanup of anything that gets through, without putting undue fatigue on the users.

quotemstr · 2d ago
Things called "security" that don't follow Kerckhoffs's principle aren't security. There are a lot of things adjacent to security, like spam prevention, that sometimes get dumped into the same bucket, but they're not really the same.

Security measures uphold invariants: absent cryptosystem breaks and implementation bugs, nobody is forging a TLS certificate. I need the private key to credibility present my certificate to the public. Hard guarantee, assuming my assumptions hold.

Likewise, if my OS is designed so sandboxed apps can't steal my browser cookies, that's a hard guarantee, modulo bugs. There's an invariant one can specify formally --- and it holds even if the OS source code leaks.

Abuse prevention? DDoS avoidance? Content moderation? EDR? Fuzzy. Best effort. Difficult to verify. That these things are sometimes called security products doesn't erase the distinction between them and systems that make firm guarantees about upholding formal invariants.

HN abuse prevention belongs to the security-adjacent but not real security category. HN's password hashing scheme would fall under the other category.

tptacek · 2d ago
This is simply not true. At the highest levels, security is about distributing costs between attackers and defenders, with defenders having the goal of raising costs past a threshold where attacks are no longer reasonable expenses for any plausible attacker. Obfuscation, done well, can certainly play a role in that. The Blu-ray BD+ scheme is a great case study on this.
quotemstr · 1d ago
A definition can't be right or wrong. We're using different definitions of the word "security". What would you call the rigorous invariant-based conceptualization I call "security"?
tptacek · 1d ago
Incoherent.
DonHopkins · 1d ago
"Security Through Pedantry"
tredre3 · 1d ago
> We’ve all heard about how “security through obscurity” isn’t real security

This is something that programmers enjoy repeating but it has never been true in the real world.

Shorel · 1d ago
You can only say that if you have no idea about cryptography. It is definitely true in the real world, but it needs the right context to be relevant.

It is related to Kerckhoffs principle: "The design of a system should not require secrecy, and compromise of the system should not inconvenience the correspondents"

This means that all of the security must reside on the key and little or nothing in the method, as methods can be discovered and rendered ineffective if that's not the case. Keep in mind that this is for communication systems where it is certain that the messages will be intercepted by an hostile agent, and we want to prevent this agent to read the messages.

When implementing modern cryptographic systems, it is very easy to misuse the libraries, or to try to reimplement cryptographic ideas without a deep understanding of the implications, and this leads to systems that are more vulnerable than intended.

Security by obscurity is the practice of some developers to reinvent cryptography by applying their cleverness to new, unknown cryptosystems. However, to do this correctly, it requires deep mathematical knowledge about finite fields, probability, linguistics, and so on. Most people have not spent the required decades learning this. The end result is that those "clever" systems with novel algorithms are much less secure than the tried and true cryptosystems like AES and SSL. That's why we say "security by obscurity" is bad.

Now, going back to the main topic: Hacker News is not a cryptographic system where codified messages are going to be intercepted by an hostile actor. Therefore Kerckhoffs principle doesn't apply.

krior · 1d ago
it does not apply to the "real" world, but the digital one
AndrewKemendo · 2d ago
> Much of the HN codebase consists of anti-abuse measures that would stop working if people knew about them. Unfortunately. separating out the secret parts would by now be a lot of work

The business logic in encoded into the original structure, making migration to anything different effectively impossible - without some massive redesign.

This, I think more than any response, indicates why the philosophy of “it’s working don’t touch it” will always win and new features” requests will be rejected.

HN didn’t depaginate based on user desires, it was based on internal tooling making that feature available within the context of the HN overall structure.

HN has zero financial or structural incentive to do anything but change as little as possible. That’s why this place, unique in the internet at this point unfortunately has lasted.

HN is not *trying* to grow, it’s trying to do as little as possible while staying alive; so by default, it’s more coherent to maintain because its structure isn’t built for it and changing the structure would break the encoded rituals (anti-abuse measures).

Something to think about when you’re trying to solve for many problems like “legacy code” “scaling needs” etc… it all comes back to baseline incentives

dang · 1d ago
It's trying to grow in the sense that we want new users. Otherwise it will get stale. I fear that's already happening.
ashwinsundar · 1d ago
Is there data or otherwise that HN is growing stale? Or more of a general vibe
mdaniel · 1d ago
I mean this in the spirit of genuine curiosity: what staleness risk is there given the massive breadth of experience the existing userbase already has?
dang · 1d ago
We need a healthy influx of younger users in addition to retaining older ones.
jaza · 1d ago
It remains an unsolved problem! For example, Facebook's "solution" was to buy Instagram.
walterbell · 1d ago
> staleness risk

Mortality.

dang · 23h ago
Indeed.
packetlost · 2d ago
Man, I wish GUIs in general were like this. Not that I don't want progress, but some interactions (especially in basic OS stuff) really doesn't need to be redone every 5 years.
walterbell · 1d ago
Muscle memory belongs on a balance sheet.
exe34 · 2d ago
Honestly I don't understand why more things aren't like this. I don't need a revamped landing page for my GP/council/department/directorate/organisation/etc - just finish the previous version with the features that were promised. I don't need another half-assed version that will also be abandoned at 40-50%.
AndrewKemendo · 5h ago
Business incentives

HN is odd in that it’s subsidized by a hyper capitalist who still has at least a romantic concept of the “early” internet

My assumption is that HN will die when the current leadership turns over because while HN does help marketing/intel for YC it’s a cost center

All cost centers eventually get closed

exe34 · 1h ago
> All cost centers eventually get closed

This needs to be the epitaph of humanity. I propose we start a crowd fund to get it carved in big letters on the moon!

kristianp · 1d ago
Just a note on the grammar of this: "HN runs on top of SBCL since a few months".

"since a few months" sounds wrong, it isn't idiomatic english. Consider replacing it with:

"HN has been running on top of SBCL for a few months now."

chmod775 · 1d ago
It sounds wrong because "since" is generally combined with a point in time, but "a few months" is a duration, not a date. Also the first paragraph switches tense forms, which makes it stand out even more.

Rewriting it to "since a few months ago" seems to be the easiest way to fix this, though my favorite way to express the the same thing is "as of a few months ago".

It should be noted that the author, like most people you're likely to interact with in this bubble, is not a native speaker of English. What matters is getting the message across - which they did.

You'll end up not being very productive if you spend your time pointing all of these little slips out.

kmstout · 1d ago
I have routinely noticed this sort of construction since a few years [1]. Does it correspond to standard usage in other languages? If so, which ones?

---

[1] See what I did there? Eh? Eh?

chmod775 · 1d ago
In German you might say "seit drei Monaten", translating word-for-word to "since three months", but meaning "for three months now". The author in this case is French, where saying "depuis trois mois" is perfectly fine (as far as I know).

English, where that construction sounds weird and at least needs some helpers around it to exist, is a bit of an odd one out. It is kind of odd that we can say "for three months" to say that something took three months, but we can't say "since three months" to refer to something that has been going on as of three months ago.

christophilus · 1d ago
Yeah. That’s my guess, too. The Germans I work with almost always phrase it like this.
vindarel · 1d ago
I appreciate the feedback, I edited the post. I actually should have noticed it, it's a grammar lesson I remember quite well and a mistake I spot in others' posts :] My first wording was mentioning "September of 2024", which I replaced with "a few months" at the last minute.
quantadev · 1d ago
Hacker News has so little capability, almost any experienced developer using a modern AI Coding Agent could replicate the entire thing in a weekend, and perhaps in a single day.

I'm not saying it's bad, or criticizing anyone. I mean it does what it does, and it works, and people like it. But no one should care what technology they're using because there's just nothing impressive going on from a technical perspective.

d3ckard · 1d ago
Good software tends to resemble an iceberg - what you see is just a small bit of what's actually in there. I wouldn't be so hasty in assumptions here.
quantadev · 1d ago
I should've been more clear that my claim was only about the ability to post messages, have them stored in a database, and then have a tree-view that displays and edits the posts. That's 99% of what users do right? That entire functionality could be done by an AI Agent nowadays in about 10 minutes.
tauoverpi · 20h ago
The question would be how many security exploits and other edge cases would be included in that.
quantadev · 17h ago
Doesn't matter. You could replicate the basic functionality of Hacker News in a single Coding Agent Prompt. Sorry, I'm not wrong.

I've been writing web apps since 1998. Just today I implemented a similar tree view, with ability to create, edit, rename, move files and folders in a TypeScript react web app, and my app that I wrote today is a vastly more sophisticated GUI than Hacker News. lol.

tauoverpi · 11h ago
It _does_ matter as those edge cases would be the difference between a working product and something that's trivial to topple over with `"; find . -exec shred -f {} \;` if your agent is used for the backend. There's also a lot of boring problems to solve backend wise (migration, failure mitigation, suitable performance, etc) that need to be considered for a site with significant traffic even for "basic functionality" (a service that's down cannot serve it's users).

The frontend of HN doesn't need to be complex and I'd even argue that it's better for being simple as it's then easier to parse, takes less effort from the client to render, certainly less battery on mobile, and so on. Web applications don't _need_ to be more complex than the problem at hand where the frontend itself is just enough of to display content in a comfortable enough format for human consumption.

Unrelated to the topic but related to the thread: if you edit a message then please keep the original message around to keep context for others that read this thread if that edit would change how the message was interpreted at the time of the reply. Non-functional edits (e.g spelling corrections) are fine without notice.

quantadev · 2h ago
What I meant by "doesn't matter" is that your original quip didn't prove me wrong. You just want to talk about all these other things to insinuate somehow I'm unaware of them, despite having 3 decades of web dev exp. lol. I already made it perfectly clear what I said is about 2 days of work, and I'm not wrong.
EasyMark · 23h ago
I don't get this attitude at all. I would think most programmers/readers are interested in the gears and cogs behind something they use on a regular basis. Especially if the work in web, backend, etc.
quantadev · 17h ago
I've been coding for 35 years. I love HackerNews. Because it works. And it's all we need. But holding it up as some example of engineering would be silly. It's just a tree editor. I implemented a better tree editor myself today from scratch.

If you want to know what stuff I'm impressed by it's things like Mastodon, Nostr apps, and stuff that does more than edit a simple content tree of nothing but plain text. We can't even upload images. Can't do markdown. lol. It's definitely a "Less is More" app, from two decades ago. Just agree to agree with me on that. It's not an insult to them. It's just an observation.