Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Original Hacker News Source Code (2009) (github.com/wting)
119 points by Maksadbek on June 9, 2021 | hide | past | favorite | 34 comments


Related old threads:

The earliest version of HN I can find; 166 LOC - https://news.ycombinator.com/item?id=723767 - July 2009 (19 comments)

Preliminary release of new Arc version, including latest HN source - https://news.ycombinator.com/item?id=634113 - May 2009 (9 comments)

News.YC open-sourced - https://news.ycombinator.com/item?id=122829 - Feb 2008 (20 comments)

Arc's Out - https://news.ycombinator.com/item?id=106398 - Jan 2008 (124 comments)

Others?


> The earliest version of HN I can find; 166 LOC - https://news.ycombinator.com/item?id=723767 - July 2009 (19 comments)

Unfortunately the original file (news.6sep06.arc) seems to be missing, anyone has a copy?



Thanks! There's something beautiful about early versions of popular projects that expanded later: you can basically grasp the concept of how everything works together and what the basic ideas were, simplicity at its best.


Is there a particular reason the current HN source code isn't public? Is it security-related (people might find and exploit bugs), privacy/secrecy-related (YC-internal features that aren't publicly disclosed), or just tradition?


More privacy than security related, in the way you're using those terms. 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. Actually pg used to use a clever 'hooks' design to keep those things separate, but inevitably they bleed into each other.


I always loved working in LISP, it was just so concise and really made you focus on code structure and hierachy. Need to get back into it again sometime.


Agreed, there's something special about LISPs I can't quite put my finger on. Which is kind of funny, because I've never used any lisp professionally and I don't think there are very many use cases I'd use one for.

Maybe SICP is just an unreasonably excellent book?


To me, the specialness of LISPs comes from the uniformity of the syntax (which in turn makes code easier to understand and reason about). This is probably highly subjective!

That said, SICP is unreasonably excellent :)


I've enjoyed messing around with Lisp, but for me the uniformity of the syntax makes it harder to reason about - everything looks the same, big blobs of parenthesis.

That's part of its appeal, but also a big part of its downfall I think - other languages can utilize a wider "Ascii spectrum" and represent different things in lexically different ways, making it easier to distinguish at a glance.


I think this makes sense. Double-edged swords make for powerful tools.

I like to think you can make a DSL for any situation, but it's not like I've actually done that in practice hah.


Just adding on to this thread as a fairly new lisp enthusiast. I picked up SICP during the pandemic and have really fallen in the lisp rabbit hole and it has been super fun.

I’ve mostly been toying with scheme (guile) and a bit of clojure.


Keep going! Clojure is a joy. Strong thinkers in the community!


The syntax for me is a drag on the language. Make me spend more than a 2 seconds trying to untangle parameters from function name and you lost me.

What I think made the language special is its level of abstractness. Unless I am mistaken, it is the first language where you could manipulate function as a first-class citizen. This and the ability to use closure. 60 years ago, it was really innovative.

Now, javascript does it...


Definitely first-order functions made LISP powerful compared to its contemporaries-- but also you can't mention abstraction without mentioning macros. Macros are first-class metaprogramming, and very much enabled by the uniformity of s-expressions.

That said, people can do awesome stuff with any language, so all this is very subjective IMO.


The function name is the first item; the parameters are the others: (fun x y z).

Some Lisp dialects separate the two further in definitions:

  (defun fun (x y z) ...)
The Scheme style is "definition follows use": the definition looks like the call:

  (define (fun x y z) ...)
Now if the function name above were actually y and not fun, I'd have to spend more than two seconds separating it from the arguments fun, x and z.


It's worth noting that this is a very old distribution of it; Arc now runs on Racket.


I don't know anything about Paul Graham, but I wish more sites were coded like this site.

It will probally take me forever, but one of my goals is to understand Lisp, and how this website works.


Not that this is the best way to learn Lisp, but this book by PG might help you understand Lisp: http://www.paulgraham.com/onlisptext.html


thanks


Are there any more current versions of HN code available?


@dang is Hacker News still running on Lisp?



Thanks!


I doubt very much that this is the actual code, not being modified in 8 years is a huge stretch.


It has indeed been modified.


what about the current source?


The current source of Hacker News is proprietary, because this forum is attached to a billion-dollar startup incubator and there's apparently real money to be had for wantrepreneurs trying to game the algorithm, and plenty of "business logic" they would have to remove and whatnot.

The current source of Arc Lisp is at https://arclanguage.org. It isn't open source in that there is any way to contribute or make pull requests that I'm aware of (I may simply be too much of a pleb to know,) rather now and then new versions simply descend from the Lisp gods and are posted. So it's more 'source available.'

The current public fork of Arc Lisp is Anarki at https://github.com/arclanguage/anarki. It has deviated a great deal from Arc and its version of the forum is not in any way in feature parity with Hacker News. But anyone is welcome to make a PR and contribute.

The Arc language forum is at https://arclanguage.org/forum.


Arc is most definitely "open source", not "proprietary, source available". It's provided under the Artistic License (https://en.wikipedia.org/wiki/Artistic_License). That license is GPL compatible, upholds the "spirit" of FOSS, and is OSI certified.

A bazaar development model is one that takes place in the open with contributions by strangers actively welcomed. A cathedral model involves development behind closed doors with periodic releases. (https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar)


By "proprietary" I meant HN specifically.


Are you still using Arc these days?

What are the top three things where Anarki deviates from Arc?


I just work on the forum from time to time so I can't speak much on the language - others have made a lot of changes, the biggest I can think of being using curly braces to create tables. Arc is the first Lisp I've used, and it turns out I'm not a Lisp-1 person. I like proper namespaces and hygienic macros. If I could only change three things about Arc, it would be those and improving error messages.

As far as the forum is concerned - I moved it into a separate folder to create a distinction between "applications" and "library" code. That was controversial. Also related, there's the skeleton of an app manager in progress that will allow creating web app skeletons, and I'm trying to get a plugin manager to work through Arc's hook system.

The end goal (in my head, at least) is that one could install Arc and Arc library code (and possibly language extensions) separately from applications (like the forum, a blog, or whatever you've created for yourself) and from application specific plugins.

The forum page templates have been consolidated so now there's a single page layout with a common UI, which uses HTML lists rather than tables, making page rendering a lot faster. I suspect there's still a lot of work that could be done along those lines - there's just no rational reason why rendering HTML should be as slow as it seems to be sometimes.

And I added some of the user-side features people keep complaining about on HN such as a dark mode, archival links and adjustable font size.


Maybe this should read "Original Hacker News Source Code" as this doesn't look like it's been updated since 2015.


Yes, I've added that and added the date now- I assume it's from 2009 since that's the last announcement I could find.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: