[HN Gopher] Hacker News now runs on top of Common Lisp
       ___________________________________________________________________
        
       Hacker News now runs on top of Common Lisp
        
       Author : Tomte
       Score  : 618 points
       Date   : 2025-05-26 16:37 UTC (1 days ago)
        
 (HTM) web link (lisp-journey.gitlab.io)
 (TXT) w3m dump (lisp-journey.gitlab.io)
        
       | rcarmo wrote:
       | Hmmm. Does that mean we'll get dark mode now?
        
         | rwmj wrote:
         | Can't you use tampermonkey or a similar tool that lets you
         | apply your own stylesheet?
        
           | quotemstr wrote:
           | 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 wrote:
             | 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.
        
               | johnisgood wrote:
               | It is possible to have this feature built-in to the
               | browser. I am surprised it has not been implemented yet
               | (?).
        
               | altairprime wrote:
               | 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.
        
               | randallsquared wrote:
               | 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 wrote:
               | 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 wrote:
               | 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 wrote:
               | It does support the userContent.css file in the profile,
               | there's just no UI for it.
        
               | shwouchk wrote:
               | safari still supports it on mac
        
               | vinceguidry wrote:
               | > 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.
        
               | galaxyLogic wrote:
               | 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 wrote:
               | > 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 wrote:
               | > 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 wrote:
               | 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 wrote:
               | > 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.
        
             | rcarmo wrote:
             | None of those extensions work in app-embedded browsers.
        
           | rcarmo wrote:
           | 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 wrote:
             | Which RSS reader do you use?
        
               | rcarmo wrote:
               | 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 wrote:
               | 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 wrote:
               | For HN? Why would I need that?
        
               | jaoane wrote:
               | I assume you use an RSS reader to read multiple feeds,
               | not only HN.
        
         | dang wrote:
         | https://news.ycombinator.com/item?id=23199062
        
           | rcarmo wrote:
           | 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 wrote:
             | _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 wrote:
               | I'm all for stability and all (heck, I still use vanilla
               | vim), but some things are... necessary.
        
         | yyx wrote:
         | 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 wrote:
           | Does not work in embedded browsers in RSS readers. We need a
           | proper site CSS, not client-side patches.
        
             | wvenable wrote:
             | Sounds like you need to write a CSS translating proxy
             | server.
        
               | rcarmo wrote:
               | ...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...
        
         | cess11 wrote:
         | There is an API somewhere, could wrap that with whatever you
         | feel like.
        
           | rcarmo wrote:
           | That's not really the point, my RSS reader's in-app browser
           | couldn't deal with that.
        
         | satiric wrote:
         | Considering Hacker News thinks font-size:9pt is acceptable for
         | body text in 2025, don't hold your breath.
        
           | krior wrote:
           | whats wrong with that?
        
             | satiric wrote:
             | 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 wrote:
               | > 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.
        
               | simoncion wrote:
               | > ...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.".
        
               | satiric wrote:
               | Yup meant to say 12pt, sorry.
        
               | simoncion wrote:
               | 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.
        
               | chuckadams wrote:
               | 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 wrote:
               | 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 wrote:
               | 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.
        
           | ashwinsundar wrote:
           | This is what cmd +/- is for
        
           | 1718627440 wrote:
           | 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.
        
         | Tijdreiziger wrote:
         | I use the awesome "Dark Reader" browser extension, which gives
         | you dark mode on any website.
        
           | rcarmo wrote:
           | Does not work in in-app browsers.
        
         | justsomehnguy wrote:
         | Ask your browser for the reading mode
        
           | rcarmo wrote:
           | That does not prevent a big white flash in the middle of the
           | night, and does not work inside all in-app browsers.
        
       | mdaniel wrote:
       | 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 wrote:
         | The Racket folks have always been most helpful and never turned
         | down a request to fix anything.
        
           | mdaniel wrote:
           | 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 wrote:
             | 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 wrote:
               | Isn't Racket using the (also) very fast Chez Scheme
               | underneath?
        
               | cess11 wrote:
               | 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.
        
               | lemming wrote:
               | Chez compiles, I think, its not a VM. It's not as fast as
               | SBCL of course, but it's not interpreted.
        
               | cess11 wrote:
               | 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 wrote:
               | >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 wrote:
               | 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 wrote:
               | thanks, good info.
        
               | int_19h wrote:
               | 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._...
        
               | reikonomusha wrote:
               | 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.
        
             | samth wrote:
             | 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.)
        
         | tejtm wrote:
         | 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....
        
       | varbhat wrote:
       | So, Hacker News was not rewritten in Common Lisp. Instead they
       | reimplemented the Arc Runtime in Common Lisp.
        
         | quotemstr wrote:
         | And that's the sort of thing Lisp excels in
        
           | westurner wrote:
           | There are probably Markdown libraries for Arc by now?
           | 
           | Though, Reddit eventually realized that javascript: URLs - in
           | Markdown - were an XSS risk.
        
       | Aurornis wrote:
       | > 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 wrote:
         | 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 wrote:
           | 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 wrote:
             | 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 wrote:
               | Incoherent.
        
               | DonHopkins wrote:
               | "Security Through Pedantry"
        
         | tredre3 wrote:
         | > 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 wrote:
           | it does not apply to the "real" world, but the digital one
        
           | Shorel wrote:
           | 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.
        
       | codr7 wrote:
       | Definitely makes more sense than Racket imo, Common Lisp is a lot
       | more pragmatic and SBCL is like magic.
        
       | anthk wrote:
       | 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 wrote:
         | Is QuickLisp entering the 1990s and enabling TLS yet?
        
           | atgreen wrote:
           | Check out ocicl! https://github.com/ocicl/ocicl
        
             | quotemstr wrote:
             | That looks awesome. Hope it gets traction!
        
       | dhqgekt wrote:
       | 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 wrote:
         | 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.
        
           | dhqgekt wrote:
           | 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 wrote:
             | 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.
        
           | dang wrote:
           | 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 wrote:
             | > 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 wrote:
             | I edited the post to add this clarification, thank you.
             | 
             | Vincent (my full name appears in linked projects ;) )
        
               | dang wrote:
               | Ah thanks! I was impressed with how you reconstructed the
               | history there.
        
       | AndrewKemendo wrote:
       | > 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
        
         | exe34 wrote:
         | 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%.
        
         | packetlost wrote:
         | 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 wrote:
           | Muscle memory belongs on a balance sheet.
        
         | dang wrote:
         | It's trying to grow in the sense that we want new users.
         | Otherwise it will get stale. I fear that's already happening.
        
           | mdaniel wrote:
           | 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 wrote:
             | We need a healthy influx of younger users in addition to
             | retaining older ones.
        
               | jaza wrote:
               | It remains an unsolved problem! For example, Facebook's
               | "solution" was to buy Instagram.
        
             | walterbell wrote:
             | _> staleness risk_
             | 
             | Mortality.
        
               | dang wrote:
               | Indeed.
        
           | ashwinsundar wrote:
           | Is there data or otherwise that HN is growing stale? Or more
           | of a general vibe
        
       | jgrahamc wrote:
       | 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 wrote:
         | what is the site?
        
           | jgrahamc wrote:
           | https://twostopbits.com
           | 
           | I use the HN Arc code, but the site is about retro computing
           | and gaming.
        
             | justsomehnguy wrote:
             | Damn you, you reminded me [again] of the delightful days of
             | FeedDemon _ing_
             | 
             | Maybe I should find a way to have APOD every day again.
        
       | zoogeny wrote:
       | 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 wrote:
         | Finally a Lisp system wins the worse-is-better crown!
        
           | keeganpoppen wrote:
           | oh man... this comment is just so, so incredibly apt.
        
             | dotancohen wrote:
             | It's also by the guy who mods here.
        
           | 90s_dev wrote:
           | "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 wrote:
             | 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.
        
               | owl57 wrote:
               | 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.
        
               | c22 wrote:
               | How do you know how many points the other comments got?
        
           | oblio wrote:
           | Well, Facebook is PHP so...
        
             | dx4100 wrote:
             | Any idea of how much of their code is still primarily PHP?
             | Curious myself.
        
               | lokar wrote:
               | Well "hack", but the same idea
        
               | loeg wrote:
               | The entire website is still a PHP-like derivative
               | language (with an optimizing compiler, etc). Backend
               | services are largely C++.
        
               | umanwizard wrote:
               | 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 wrote:
               | 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?
        
             | dartharva wrote:
             | Is it still? I thought it has been ported
        
           | kqr wrote:
           | 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 wrote:
             | I think Richard Gabriel attributes it to Jamie Zawinski?
        
               | amiga386 wrote:
               | 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 wrote:
             | Now the 'God wrote in lisp' song makes even more sense.
             | 
             | https://m.youtube.com/watch?v=5-OjTPj7K54
        
               | bbarnett wrote:
               | 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 wrote:
               | https://xkcd.com/224/
        
               | neom wrote:
               | 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."
        
           | paxcoder wrote:
           | Yay
        
             | 90s_dev wrote:
             | You're the outlier and for good reason.
        
         | nickpeterson wrote:
         | Also the lack of needing to make money helps a lot.
        
           | mike_hearn wrote:
           | 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.
        
             | oblio wrote:
             | > "super down" button
             | 
             | The flag button?
        
             | palmotea wrote:
             | > 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?
        
               | philwelch wrote:
               | Most of that was downmodded and hidden by default though.
        
               | pram wrote:
               | You just reminded me of the beautifully rendered, colored
               | penisbird ascii art dipshits would spam on IRC lol
        
               | zoklet-enjoyer wrote:
               | Turns out those GNAA guys are actually white supremacists
               | https://en.m.wikipedia.org/wiki/Weev
        
               | mike_hearn wrote:
               | 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.
        
             | mousethatroared wrote:
             | "HN uses unobtrusive text ads"
             | 
             | HN has ads? I've been on some 2011 and I have never seen
             | them...
        
               | dang wrote:
               | https://news.ycombinator.com/newsfaq.html#jobads
               | 
               | https://news.ycombinator.com/newsfaq.html#yc
        
               | aziaziazi wrote:
               | 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 wrote:
               | 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 wrote:
               | 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.
        
               | freedomben wrote:
               | 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.
        
               | tim333 wrote:
               | 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.
        
               | tedunangst wrote:
               | You didn't notice they were ads.
        
               | mousethatroared wrote:
               | 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 wrote:
               | 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 wrote:
               | They're the ones you can't comment on.
        
         | johnisgood wrote:
         | 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".
        
           | dotancohen wrote:
           | I think that the classical phrasing is "less is more".
           | 
           | At least, that's how my bash pager has it in the manpage.
        
             | johnisgood wrote:
             | You are right!
        
           | jrockway wrote:
           | 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?
        
             | KerrAvon wrote:
             | 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 wrote:
               | Because people agreed with you? Why is that a problem?
        
               | fragmede wrote:
               | 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.
        
               | jachee wrote:
               | Where'd this approach to "groupthink" come from? Did you
               | formulate this all on your own?
               | 
               | ETA: obligatory: /s
        
               | wredcoll wrote:
               | 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 wrote:
               | 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 wrote:
               | > 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 wrote:
               | 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 wrote:
               | > 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 wrote:
               | 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 wrote:
               | Yes, the point of moderation, community or otherwise, is
               | to be a mechanism for promoting group norms.
        
               | firesteelrain wrote:
               | That reinforces my point that sites like this lead to
               | groupthink and coalescence around acceptable thought
        
               | dragonwriter wrote:
               | 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 wrote:
               | > (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
        
               | freedomben wrote:
               | 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
        
               | Shorel wrote:
               | 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.
        
             | AtlasBarfed wrote:
             | Score 5 funnies absolutely ruined /dots discussions
        
               | Thiez wrote:
               | Slashdot allowed you to configure scoring, so you could
               | assign 0 or even negative points to 'funny'.
        
             | 0xDEAFBEAD wrote:
             | 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 wrote:
               | You talk about it as if doesn't exist anymore. If you're
               | not aware, it still exists.
        
               | ChoGGi wrote:
               | In some sense it doesn't exist anymore. At the very
               | least, the withered corpse is a far cry from what it once
               | was.
        
               | thijson wrote:
               | 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.
        
           | ksec wrote:
           | Dark Mode. And Follow User would be two feature I have been
           | using for years with other tools.
        
             | jedberg wrote:
             | 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 wrote:
               | I believe HN's HTML structure is simple enough to
               | overwrite with custom CSS on the browser end.
        
               | jedberg wrote:
               | 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 wrote:
               | Genuinely curious, why do you use so many different
               | browsers for HN?
        
               | jedberg wrote:
               | 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 wrote:
               | 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 wrote:
               | Comments have never been ranked differently on HN based
               | on karma.
        
             | quantadev wrote:
             | 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.
        
             | bloopernova wrote:
             | https://gist.github.com/aclarknexient/c39c83f2f97c3c6b1c307
             | c...
             | 
             | These go in your ublock origin "my filters" section.
             | Enables Dark Mode through CSS, and another filter restricts
             | the width of comments.
        
           | lo_zamoyski wrote:
           | 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 wrote:
             | Hmm, I have an idea for HN on the next April 1st.
        
             | freedomben wrote:
             | 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.
        
           | EasyMark wrote:
           | I want a pickup truck that is designed like HN. The slate may
           | be the answer
        
             | cgio wrote:
             | A minimalist pickup truck could be a bicycle. Depends on
             | whether you really need a truck at all.
        
               | quantadev wrote:
               | 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 wrote:
               | 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...
        
               | xarope wrote:
               | 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 wrote:
               | 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
        
               | freedomben wrote:
               | 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.
        
           | killerstorm wrote:
           | I'd like some markdown support:                 * Triple
           | ticks for code ```            * Bullet lists
           | 
           | Two spaces to mono space is somewhat offensive
        
             | int_19h wrote:
             | 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 wrote:
             | 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 wrote:
           | 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.
        
             | throwaway2037 wrote:
             | If only colour swap is required, can you use a Greasemonkey
             | script?
        
               | jorvi wrote:
               | And how would you propose running Greasemonkey on a
               | mobile browser?
        
             | exitb wrote:
             | 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 wrote:
               | 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 wrote:
               | > 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.
        
         | raverbashing wrote:
         | 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 ;)
        
         | throwawaymaths wrote:
         | 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 wrote:
           | 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 wrote:
             | 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 wrote:
               | 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 wrote:
             | 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 wrote:
           | 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 wrote:
             | 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 wrote:
               | 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.
        
               | 9dev wrote:
               | 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 wrote:
               | 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 wrote:
               | 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 wrote:
               | 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.
        
               | greiskul wrote:
               | > 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 wrote:
               | dynamic variables (esp default) when you are
               | collaborating with many people. when you you know the
               | code well they are incredibly useful
        
               | dannymi wrote:
               | >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.
        
               | dragonwriter wrote:
               | > 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 wrote:
             | > 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 wrote:
               | 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 wrote:
               | 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.
        
             | 59nadir wrote:
             | 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.
        
           | Spivak wrote:
           | 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 wrote:
             | >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 wrote:
               | 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.
        
               | int_19h wrote:
               | 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 wrote:
               | 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.
        
           | jaza wrote:
           | 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
           | []
        
         | smokel wrote:
         | The ugliness scares most people away, or at least it doesn't
         | accidentally lure them in.
        
           | encom wrote:
           | HN is like 4chan, but house-broken.
        
           | drweevil wrote:
           | I find aesthetically pleasing, tbh.
        
           | marssaxman wrote:
           | Some of us genuinely like the way it looks.
        
             | froh wrote:
             | indeed. I love it. no frills, just contents.
        
           | jt_b wrote:
           | HN's aesthetic has grown on me honestly!
        
           | 7bit wrote:
           | 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.
        
             | DaSHacka wrote:
             | > 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.
        
             | jaoane wrote:
             | There is absolutely nothing wrong with gatekeeping. There
             | are people who you definitely want to keep away.
        
               | b00ty4breakfast wrote:
               | 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"
        
             | dang wrote:
             | 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
        
           | krapp wrote:
           | 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.
        
         | Aurornis wrote:
         | > 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 wrote:
           | > 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 wrote:
             | > (mostly by dang but he has more help now)
             | 
             | https://news.ycombinator.com/item?id=43558671 for those who
             | missed it
        
               | 90s_dev wrote:
               | Matt's right, guys.
        
             | 90s_dev wrote:
             | 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 N _10 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 wrote:
               | How do people with experience that predates the internet
               | prove that?
        
               | 90s_dev wrote:
               | They'll find a way.
        
               | marssaxman wrote:
               | 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 wrote:
           | HN is heavily moderated by humans. They've discussed it
           | before. They're machine-assisted, but heavily involved day-
           | to-day.
        
         | baq wrote:
         | 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 wrote:
           | 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 wrote:
             | 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 wrote:
             | Can you explain how that works? I visited the site but
             | don't understand their language.
        
           | AStonesThrow wrote:
           | https://m.xkcd.com/810/
           | 
           | https://m.xkcd.com/1019/
           | 
           | https://m.xkcd.com/2159/
        
         | andai wrote:
         | _Perfection is achieved, not when there is nothing more to add,
         | but when there is nothing left to take away._ --Antoine de
         | Saint-Exupery
        
         | donnachangstein wrote:
         | 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.
        
           | perching_aix wrote:
           | How are you determining the causative relationship?
        
           | bawolff wrote:
           | 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 wrote:
             | 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 wrote:
               | > 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 wrote:
               | 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 wrote:
               | 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 wrote:
               | > 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 wrote:
             | 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.
        
           | emeril wrote:
           | 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
        
         | andsoitis wrote:
         | To lakonizein esti philosophein
         | 
         | To be spartan is to philosophize.
        
           | thaumasiotes wrote:
           | I'm curious why lakonizein needs to be nominalized and
           | philosophein doesn't.
        
         | whyowhy3484939 wrote:
         | 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 wrote:
           | There's a less cynical interpretation of that which is not so
           | far from the case.
        
           | chipsrafferty wrote:
           | It's not ironic whatsoever.
        
           | hbsbsbsndk wrote:
           | 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
        
         | akomtu wrote:
         | HN's dry text-only design is what repels most of the problems.
         | Mods only polish it a bit.
        
         | gchamonlive wrote:
         | Maybe it's an effect of not having to compete with other
         | outlets.
        
         | chairmansteve wrote:
         | Slashdot sold out to Conde Nast. That killed it. It was very
         | well designed.
        
         | jgalt212 wrote:
         | 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.
        
         | quantadev wrote:
         | "Worst and First beats Perfect and Last"                    -
         | Every Venture Capitalist Ever.
        
           | rmason wrote:
           | The exception to that rule was Google. Which coincidentally
           | might have been one of the best VC investments of all time.
        
             | quantadev wrote:
             | 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 wrote:
         | What makes HN work is being popular. Nothing more. Stop
         | praising mediocrity.
        
         | soapdog wrote:
         | 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.
        
           | udev4096 wrote:
           | A lot of people on HN do infact hate YC and pretty much
           | everything VC
        
           | jaza wrote:
           | 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".
        
         | -__---____-ZXyw wrote:
         | 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".
        
       | brundolf wrote:
       | > [Clarc] is much faster and also will easily let HN run on
       | multiple cores
       | 
       | This was all running on a single core??
        
         | quotemstr wrote:
         | 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 wrote:
           | 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 wrote:
             | 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.
        
             | bawolff wrote:
             | Servers can also serve small text files out of memory
             | incredibly fast.
        
             | sgarland wrote:
             | 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 wrote:
               | > 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
        
           | whalesalad wrote:
           | Most apps aren't suffering from computation. They suffer from
           | I/O
        
         | toomuchtodo wrote:
         | https://news.ycombinator.com/item?id=30067997
         | 
         | https://news.ycombinator.com/item?id=5229548
         | 
         | https://news.ycombinator.com/item?id=28478379
         | 
         | https://news.ycombinator.com/item?id=27452276
        
         | haiku2077 wrote:
         | 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.
        
           | bakugo wrote:
           | 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.
        
             | mschuster91 wrote:
             | ... 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.
        
             | agumonkey wrote:
             | Here goes all your software engineering classes. So bare
             | it's hilarious
        
             | donnachangstein wrote:
             | 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 wrote:
               | 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 wrote:
               | 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 wrote:
               | 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 wrote:
               | Or get a hundred Hetzner dedis
        
               | DrillShopper wrote:
               | Sounds like the real web scale was all of the AWS bills
               | we paid along the way
        
               | actuallyalys wrote:
               | 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.
        
             | bawolff wrote:
             | I wouldn't call that a special case, just using a good tool
             | for the job.
        
             | haiku2077 wrote:
             | 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.
        
           | Tabular-Iceberg wrote:
           | 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 wrote:
             | Yo dawg, I hear you want to cache your cache of shards.
        
         | JW_00000 wrote:
         | 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 wrote:
           | 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 wrote:
             | 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 wrote:
             | > 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.
        
         | sgarland wrote:
         | Every time a dev discovers how tremendously bloated and slow
         | modern software is, an angel gets its wings.
        
         | xnx wrote:
         | It's amazing what's possible when you don't use microservices
        
         | kevincox wrote:
         | 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 wrote:
           | 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 wrote:
             | 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.
        
         | EasyMark wrote:
         | Text only processing is amazingly fast, as are static websites.
         | Javascript is heavy, man.
        
       | dang wrote:
       | > Arc was implemented on top of Racket
       | 
       | Originally on MzScheme, then later PLT Scheme. It was ported to
       | Racket by the great kogir, IIRC.
        
         | kragen wrote:
         | Aren't MzScheme, PLT Scheme, and Racket the same thing?
        
           | dang wrote:
           | Yes, but for me each name denotes the thing as it was when it
           | was called that.
           | 
           | (This conversation has turned unexpectedly ontological!)
        
             | altairprime wrote:
             | Welcome to HN :)
        
             | kragen wrote:
             | I always wonder whether it's really the same conversation
             | anymore when that happens.
        
           | rurban wrote:
           | 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.
        
         | sctb wrote:
         | 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 wrote:
           | 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 wrote:
         | Are we iterating over all lisp implementations ? A strange
         | variant of the ship of Theseus
        
           | oblio wrote:
           | Next up, the end goal: Emacs Lisp.
        
             | dang wrote:
             | Yes and dynamically scoped.
        
               | kragen wrote:
               | 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.
        
               | agumonkey wrote:
               | yeah that would be a fun thing to do, even though yeah
               | SBCL compiled code will probably be an order of magnitude
               | faster
        
               | dang wrote:
               | 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 wrote:
               | 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).
        
           | pdpi wrote:
           | Lisp of Theseus does have a certain ring to it.
        
       | nickpeterson wrote:
       | Random question, how big is hacker news? It's plain text so I'd
       | imagine it's reasonably compact?
        
         | brudgers wrote:
         | <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.
        
       | johnisgood wrote:
       | > 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!
        
         | electroly wrote:
         | 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.
        
         | dang wrote:
         | 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.
        
         | kayodelycaon wrote:
         | 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 wrote:
           | Is HN really that small, considering "HN hug of death"? If it
           | really is small, then hey, we may have already talked! :)
        
             | kayodelycaon wrote:
             | 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 wrote:
               | Oh, you meant small in that way. My bad.
        
         | qingcharles wrote:
         | There are forks of what I assume is the scrubbed HN codebase,
         | e.g. https://github.com/jgrahamc/twostopbits
        
           | omgmajk wrote:
           | Read earlier in the thread that they run the open sourced
           | version https://news.ycombinator.com/item?id=44099315
        
         | brudgers wrote:
         | _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 wrote:
         | 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.
        
         | Shorel wrote:
         | 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.
        
       | Fraterkes wrote:
       | 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 wrote:
         | 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 wrote:
           | 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.
        
           | krapp wrote:
           | 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.
        
       | gtirloni wrote:
       | I assume it's worth it to keep it in Arc and not rewrite in
       | something more widely available, is that so?
        
         | dang wrote:
         | https://news.ycombinator.com/item?id=23483715
        
           | gtirloni wrote:
           | Thanks for clarifying
        
       | Xeoncross wrote:
       | 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 wrote:
         | 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 wrote:
           | > 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 wrote:
             | https://news.ycombinator.com/hackernews.html
        
               | bwilliams18 wrote:
               | 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.
        
               | SonOfLilit wrote:
               | Look in the hacker jargon file
        
               | cheshire_cat wrote:
               | Link: http://www.catb.org/jargon/html/H/hacker.html
        
               | cheshire_cat wrote:
               | 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 wrote:
               | 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.
        
               | dang wrote:
               | 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://lis
               | tserv.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/
        
       | kosolam wrote:
       | Is this open source software that I can run my own hacker news as
       | well?
        
         | krapp wrote:
         | http://arclanguage.org/
        
       | Tistel wrote:
       | 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 wrote:
         | Alas, they moved on long ago.
        
       | monkeyelite wrote:
       | Is the bel project still alive?
        
       | kristianp wrote:
       | 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 wrote:
         | 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 wrote:
           | 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 wrote:
             | 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 wrote:
               | Yeah. That's my guess, too. The Germans I work with
               | almost always phrase it like this.
        
         | vindarel wrote:
         | 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.
        
       | cadamsdotcom wrote:
       | 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 wrote:
         | But they didn't rewrite HN; they created a different
         | implementation of the language it's written in.
        
       | quantadev wrote:
       | 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 wrote:
         | 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 wrote:
           | 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 wrote:
             | The question would be how many security exploits and other
             | edge cases would be included in that.
        
         | EasyMark wrote:
         | 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.
        
       | ggm wrote:
       | 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)
        
       | hyperman1 wrote:
       | 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.
        
       | alexpham14 wrote:
       | 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.
        
       | DonHopkins wrote:
       | 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!
        
       | lynx97 wrote:
       | 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 wrote:
         | 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 wrote:
           | 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.
        
       | udev4096 wrote:
       | 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
        
         | krapp wrote:
         | Lemmy or Mastodon, depending on how you want to do it.
        
         | jaza wrote:
         | 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 wrote:
           | 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.
        
       | miki123211 wrote:
       | 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.
        
       | -__---____-ZXyw wrote:
       | 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 wrote:
         | 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 wrote:
         | 68k assembly is like that.
        
       | ChoGGi wrote:
       | Dang! Thanks dang!
        
       | mandeepj wrote:
       | > 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 wrote:
         | > 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.
        
       | netdevphoenix wrote:
       | 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 wrote:
         | 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 wrote:
       | > 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.
        
       | cmod wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2025-05-27 23:02 UTC)