[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)