Hacker News now runs on top of Common Lisp

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

Comments (309)

zoogeny · 16h 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 · 15h ago
Finally a Lisp system wins the worse-is-better crown!
kqr · 13h 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 · 11h ago
I think Richard Gabriel attributes it to Jamie Zawinski?
bbarnett · 10h ago
Now the 'God wrote in lisp' song makes even more sense.

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

neom · 6h 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 · 9h 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 · 8h ago
oblio · 13h ago
Well, Facebook is PHP so...
dx4100 · 13h ago
Any idea of how much of their code is still primarily PHP? Curious myself.
umanwizard · 10h 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 · 6h 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?
loeg · 12h ago
The entire website is still a PHP-like derivative language (with an optimizing compiler, etc). Backend services are largely C++.
lokar · 13h ago
Well “hack”, but the same idea
keeganpoppen · 15h ago
oh man... this comment is just so, so incredibly apt.
dotancohen · 14h ago
It's also by the guy who mods here.
90s_dev · 15h 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 · 13h 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 · 5h ago
How do you know how many points the other comments got?
owl57 · 6h 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.
paxcoder · 12h ago
Yay
90s_dev · 12h ago
You're the outlier and for good reason.
soapdog · 50m 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.
johnisgood · 15h 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 · 13h 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 · 3h 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.
jamesrcole · 3h ago
You talk about it as if doesn't exist anymore. If you're not aware, it still exists.
KerrAvon · 12h 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.
vid · 11h ago
Because people agreed with you? Why is that a problem?
fragmede · 10h 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 · 4h 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 · 1h 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.

firesteelrain · 2h 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 · 1h 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

firesteelrain · 1h 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 · 1h ago
Yes, the point of moderation, community or otherwise, is to be a mechanism for promoting group norms.
jachee · 7h ago
Where’d this approach to “groupthink” come from? Did you formulate this all on your own?

ETA: obligatory: /s

AtlasBarfed · 5h ago
Score 5 funnies absolutely ruined /dots discussions
Thiez · 1h ago
Slashdot allowed you to configure scoring, so you could assign 0 or even negative points to 'funny'.
killerstorm · 38m ago
I'd like some markdown support:

  * Triple ticks for code ```

  * Bullet lists
Two spaces to mono space is somewhat offensive
dotancohen · 14h 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 · 14h ago
You are right!
EasyMark · 11h ago
I want a pickup truck that is designed like HN. The slate may be the answer
cgio · 11h ago
A minimalist pickup truck could be a bicycle. Depends on whether you really need a truck at all.
xarope · 6h 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 · 2h 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 · 6h 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 · 5h 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 · 11h ago
Dark Mode. And Follow User would be two feature I have been using for years with other tools.
jedberg · 10h 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.

0xpgm · 4h 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

skydhash · 9h ago
I believe HN's HTML structure is simple enough to overwrite with custom CSS on the browser end.
jedberg · 9h 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.

quantadev · 6h 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 · 11h 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.
pixl97 · 8h ago
Hmm, I have an idea for HN on the next April 1st.
nickpeterson · 15h ago
Also the lack of needing to make money helps a lot.
mike_hearn · 14h 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 · 12h ago
"HN uses unobtrusive text ads"

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

dang · 12h ago
aziaziazi · 12h 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 · 3h 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.

tedunangst · 12h ago
You didn't notice they were ads.
mousethatroared · 5h 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 · 11h 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
jt_b · 6h ago
They're the ones you can't comment on.
palmotea · 13h 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 · 1h 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.

zoklet-enjoyer · 5h ago
Turns out those GNAA guys are actually white supremacists https://en.m.wikipedia.org/wiki/Weev
pram · 12h ago
You just reminded me of the beautifully rendered, colored penisbird ascii art dipshits would spam on IRC lol
philwelch · 13h ago
Most of that was downmodded and hidden by default though.
oblio · 13h ago
> "super down" button

The flag button?

andai · 14h 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 · 15h 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 · 15h 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 · 15h 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.

throwawaymaths · 14h 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 · 14h 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.

59nadir · 1h 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 catch exactly what was going on even a decade later after I first discovered it.
tredre3 · 13h 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 · 12h 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 · 10h 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 · 8h ago
dynamic variables (esp default) when you are collaborating with many people. when you you know the code well they are incredibly useful
9dev · 12h 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 · 6h 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 · 17m 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.
dragonwriter · 7h 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.)

bsder · 12h 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.

Spivak · 13h 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 · 4h 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?

biorach · 2h 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.

smokel · 15h ago
The ugliness scares most people away, or at least it doesn't accidentally lure them in.
marssaxman · 7h ago
Some of us genuinely like the way it looks.
jt_b · 6h ago
HN's aesthetic has grown on me honestly!
7bit · 2h 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.

jaoane · 52m ago
There is absolutely nothing wrong with gatekeeping. There are people who you definitely want to keep away.
DaSHacka · 1h 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.

encom · 14h ago
HN is like 4chan, but house-broken.
drweevil · 13h ago
I find aesthetically pleasing, tbh.
whyowhy3484939 · 13h 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 · 12h ago
There's a less cynical interpretation of that which is not so far from the case.
hbsbsbsndk · 6h 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 · 9h ago
It's not ironic whatsoever.
raverbashing · 15h 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 ;)

donnachangstein · 14h 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 · 6h 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 · 13h 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 · 11h 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.

Karrot_Kream · 7h 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 · 14h ago
How are you determining the causative relationship?
baq · 14h 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 · 12h 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 · 12h 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 · 10h ago
Can you explain how that works? I visited the site but don't understand their language.
Aurornis · 15h 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 · 15h 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 · 14h ago
> (mostly by dang but he has more help now)

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

90s_dev · 12h ago
Matt's right, guys.
90s_dev · 12h 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 · 11h ago
How do people with experience that predates the internet prove that?
90s_dev · 11h ago
They'll find a way.
marssaxman · 7h 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 · 12h ago
HN is heavily moderated by humans. They've discussed it before. They're machine-assisted, but heavily involved day-to-day.
gchamonlive · 13h ago
Maybe it's an effect of not having to compete with other outlets.
jgalt212 · 13h 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 · 13h ago
HN's dry text-only design is what repels most of the problems. Mods only polish it a bit.
andsoitis · 13h ago
Το λακωνίζειν εστί φιλοσοφείν

To be spartan is to philosophize.

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

     - Every Venture Capitalist Ever.
rmason · 6h ago
The exception to that rule was Google. Which coincidentally might have been one of the best VC investments of all time.
quantadev · 4h 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 · 2h ago
What makes HN work is being popular. Nothing more. Stop praising mediocrity.
hyperman1 · 2h 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.
varbhat · 16h ago
So, Hacker News was not rewritten in Common Lisp. Instead they reimplemented the Arc Runtime in Common Lisp.
quotemstr · 16h ago
And that's the sort of thing Lisp excels in
westurner · 14h ago
There are probably Markdown libraries for Arc by now?

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

dang · 15h 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 · 15h 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 · 12h 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 · 14h ago
Are we iterating over all lisp implementations ? A strange variant of the ship of Theseus
pdpi · 13h ago
Lisp of Theseus does have a certain ring to it.
oblio · 13h ago
Next up, the end goal: Emacs Lisp.
dang · 12h ago
Yes and dynamically scoped.
kragen · 15h ago
Aren't MzScheme, PLT Scheme, and Racket the same thing?
dang · 15h 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 · 9h ago
I always wonder whether it's really the same conversation anymore when that happens.
altairprime · 15h ago
Welcome to HN :)
rurban · 15h 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 · 15h 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 · 13h 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 · 11h 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 · 11h ago
bwilliams18 · 10h 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 · 5h 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 itself was playful and an 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 (or the sense of breaking into someone else's system) dates from the early 1960s in the context of phone phreaking. The claim that the malicious sense was 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...

No comments yet

cheshire_cat · 8h 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 · 4h 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 · 8h ago
Look in the hacker jargon file
cheshire_cat · 7h ago
brundolf · 16h ago
> [Clarc] is much faster and also will easily let HN run on multiple cores

This was all running on a single core??

haiku2077 · 15h 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 · 1h 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.
bakugo · 14h 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 · 14h 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 · 11h 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 · 10h 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 · 9h 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 · 3m ago
Or get a hundred Hetzner dedis
actuallyalys · 10h 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 · 12h 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.

bawolff · 13h ago
I wouldn't call that a special case, just using a good tool for the job.
agumonkey · 14h ago
Here goes all your software engineering classes. So bare it's hilarious
mschuster91 · 14h 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 · 13h ago
Every time a dev discovers how tremendously bloated and slow modern software is, an angel gets its wings.
kevincox · 8h 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.

JW_00000 · 15h 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
galaxyLogic · 13h 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 · 13h 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 · 13h 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.

quotemstr · 15h 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.
whalesalad · 8h ago
Most apps aren’t suffering from computation. They suffer from I/O
thatwasunusual · 15h 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 · 15h 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 · 9h 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 · 9h 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 · 13h ago
Servers can also serve small text files out of memory incredibly fast.
xnx · 8h ago
It's amazing what's possible when you don't use microservices
mdaniel · 16h 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 · 16h ago
The Racket folks have always been most helpful and never turned down a request to fix anything.
mdaniel · 16h 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
brobdingnagians · 14h 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 · 14h ago
Isn't Racket using the (also) very fast Chez Scheme underneath?
cess11 · 13h 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 · 10h 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 · 12h ago
Chez compiles, I think, its not a VM. It’s not as fast as SBCL of course, but it’s not interpreted.
cess11 · 3h 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.

fuzztester · 12m 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.

tejtm · 8h 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 · 16h 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 · 13h ago
what is the site?
jgrahamc · 13h ago
https://twostopbits.com

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

justsomehnguy · 12h 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.

ggm · 5h 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)

rcarmo · 16h ago
Hmmm. Does that mean we'll get dark mode now?
yyx · 14h 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 · 14h ago
Does not work in embedded browsers in RSS readers. We need a proper site CSS, not client-side patches.
wvenable · 13h ago
Sounds like you need to write a CSS translating proxy server.
rcarmo · 3h 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 · 15h ago
rcarmo · 14h 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 · 14h 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 · 2h ago
I’m all for stability and all (heck, I still use vanilla vim), but some things are… necessary.
Tijdreiziger · 12h ago
I use the awesome “Dark Reader” browser extension, which gives you dark mode on any website.
rcarmo · 3h ago
Does not work in in-app browsers.
satiric · 12h ago
Considering Hacker News thinks font-size:9pt is acceptable for body text in 2025, don't hold your breath.
1718627440 · 1h 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 · 9h ago
This is what cmd +/- is for
krior · 11h ago
whats wrong with that?
satiric · 10h 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.

rwmj · 16h ago
Can't you use tampermonkey or a similar tool that lets you apply your own stylesheet?
rcarmo · 14h 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 · 11h ago
Which RSS reader do you use?
rcarmo · 3h 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 · 41m 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
quotemstr · 16h 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 · 15h 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 · 13h 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 · 13h 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 · 12h 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 · 13h 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 · 12h 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 · 15h ago
It is possible to have this feature built-in to the browser. I am surprised it has not been implemented yet (?).
randallsquared · 15h 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 · 14h 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.
SoftTalker · 14h 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 · 10h ago
It does support the userContent.css file in the profile, there's just no UI for it.
shwouchk · 7h ago
safari still supports it on mac
altairprime · 15h 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 · 15h 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 · 14h ago
None of those extensions work in app-embedded browsers.
justsomehnguy · 12h ago
Ask your browser for the reading mode
rcarmo · 2h 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 · 13h ago
There is an API somewhere, could wrap that with whatever you feel like.
rcarmo · 2h ago
That’s not really the point, my RSS reader’s in-app browser couldn’t deal with that.
codr7 · 16h ago
Definitely makes more sense than Racket imo, Common Lisp is a lot more pragmatic and SBCL is like magic.
cadamsdotcom · 8h 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 · 8h ago
But they didn't rewrite HN; they created a different implementation of the language it's written in.
Tistel · 11h 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 · 11h ago
Alas, they moved on long ago.
anthk · 16h 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 · 16h ago
Is QuickLisp entering the 1990s and enabling TLS yet?
atgreen · 12h ago
quotemstr · 11h ago
That looks awesome. Hope it gets traction!
gtirloni · 15h ago
I assume it's worth it to keep it in Arc and not rewrite in something more widely available, is that so?
dang · 15h ago
gtirloni · 9h ago
Thanks for clarifying
dhqgekt · 16h 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 · 16h 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 · 15h 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 · 15h 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 · 13h ago
I edited the post to add this clarification, thank you.

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

dang · 12h ago
Ah thanks! I was impressed with how you reconstructed the history there.
dhqgekt · 16h 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 · 15h 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.

nickpeterson · 15h ago
Random question, how big is hacker news? It’s plain text so I’d imagine it’s reasonably compact?
brudgers · 14h 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 · 10h ago
Is the bel project still alive?
kosolam · 14h ago
Is this open source software that I can run my own hacker news as well?
krapp · 9h ago
Fraterkes · 15h 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 · 14h 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»?
krapp · 9h 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.
busymom0 · 9h 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.

quantadev · 6h 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 · 1h 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.
johnisgood · 15h 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 · 15h 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 · 15h 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.
kayodelycaon · 15h 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 · 14h ago
Is HN really that small, considering "HN hug of death"? If it really is small, then hey, we may have already talked! :)
kayodelycaon · 12h 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 · 10h ago
Oh, you meant small in that way. My bad.
qingcharles · 14h ago
There are forks of what I assume is the scrubbed HN codebase, e.g. https://github.com/jgrahamc/twostopbits
brudgers · 14h 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.

wvenable · 13h 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 · 16h 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.

tredre3 · 13h 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.

krior · 11h ago
it does not apply to the "real" world, but the digital one
quotemstr · 16h 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 · 15h 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 · 12h 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 · 11h ago
Incoherent.
AndrewKemendo · 16h 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 · 12h 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 · 9h ago
Is there data or otherwise that HN is growing stale? Or more of a general vibe
mdaniel · 11h 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 · 11h ago
We need a healthy influx of younger users in addition to retaining older ones.
walterbell · 8h ago
> staleness risk

Mortality.

packetlost · 14h 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 · 8h ago
Muscle memory belongs on a balance sheet.
exe34 · 15h 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%.
kristianp · 9h 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 · 8h 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 · 8h 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 · 8h 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 · 6h ago
Yeah. That’s my guess, too. The Germans I work with almost always phrase it like this.