Live data from Hacker News

So what happened to the HN server?

news.ycombinator.com

111–120 of 133 posts

Re: So what happened to the HN server?

#111
post #93

Earlier quoted context omitted.

"The problem used to be much worse, but then PG did this transformation manually for the important subset of the site (most importantly for links to the comments section -- these links no longer expire)." I don't think this is strictly true. The comments and reply links simply link to a normal (non-closure) URL on the site and the page is generated from that URL in the normal manner.

I don't understand the disagreement...isn't that the same thing I said? IIRC it used to be the case that all links could expire, then he did this transformation from closures stored on the server to closures manually serialized in the URLs (which results in a normal URL as you say). What I'm describing is how a web framework could do that automatically, which means you get the behavior and expressiveness of closures…

> then he did this transformation from closures stored on the server to closures manually serialized in the URLs (which results in a normal URL as you say).

The reply links have a parameter 'id' - the id of the comment to which the reply is being posted. I would guess it's just passed to a normal function which adds the reply to the post.

May be you mean the same thing, but "serializing closures in the url"(where? all I see is the id of the post being replied to) isn't the same as params in the url which are then passed to a function.

Re: So what happened to the HN server?

#112
post #103
post #99

Earlier quoted context omitted.

I didn't choose your words.

No, but you did choose to interpret them in a totally different context, deliberately giving them a meaning that was clearly not part of my statement. Then you ignored, yet still replied to, my clarification. From my perspective this looks like either a huge misunderstanding or the definition of straw man rhetorics. And I have to say I don't get where your hostility comes from, but I neither recognize my message as i…

I brought the label of "normal" in a discussion with some friends. I have come to the conclusion that how someone interprets "normal" has a lot to do with their background. My friends with a strictly technical background (or those without some background in social sciences or the arts) did not seem differentiate between normal and average. In the social sciences normal has additional connotations/ramifications.

https://en.wikipedia.org/wiki/Normality_%28behavior%29

Re: So what happened to the HN server?

#113
post #112
post #103

Earlier quoted context omitted.

No, but you did choose to interpret them in a totally different context, deliberately giving them a meaning that was clearly not part of my statement. Then you ignored, yet still replied to, my clarification. From my perspective this looks like either a huge misunderstanding or the definition of straw man rhetorics. And I have to say I don't get where your hostility comes from, but I neither recognize my message as i…

I brought the label of "normal" in a discussion with some friends. I have come to the conclusion that how someone interprets "normal" has a lot to do with their background. My friends with a strictly technical background (or those without some background in social sciences or the arts) did not seem differentiate between normal and average. In the social sciences normal has additional connotations/ramifications. https…

Instantly all kinds of connotations can be applied to pretty much any word, as long as someone is willing to completely ignore the context and the intent of the message. Which, I'm sorry to say, I think happened here. Of course we all have "trigger words" that we associate with our little linguistic traumas, but there is a line after the crossing of which you simply attack the wrong people for things they didn't even say. I know, because I've done that occasionally as well and it took someone external to tell and make me realize what was happening. So in this spirit I'm trying to tell you: this is what's happening.

Regarding the actual subject of normalcy I'm finding it difficult to add anything else without repeating myself. From personal experience, there is always "good normal" and "bad normal", as there is "good not normal" and "bad not normal", but even more often it just means "different from the other 80%". In this case, I chose the word normal because it instantly conveys the fact that most hackers use the web in different ways from most of the other people. That's all. It did its job.

It's unfortunate that this triggered something in you, but I encourage you to take a step back and recognize that you saw some things in my message that were simply not there.

Re: So what happened to the HN server?

#114
post #96
post #94

Earlier quoted context omitted.

You're very welcome. And I allege you know that's not how I meant it. Do you really want to assert that the subject matters at HN are part of mainstream culture? I do believe that IT people tend to use the internet differently, this is not an elitist observation in case it came across as such. It's just different.

I have a friend who is big into fantasy sports (blue collar job: construction). The first thing he does when he sits down in front of the computer is that he checks whatever roster he is managing at the time. Is he not "normal"?

I bet if he were talking about fantasy sports on a forum full of fantasy players, he'd neither be surprised nor upset at someone in the forum dividing the world into groups of fantasy players/normal people.

Re: So what happened to the HN server?

#115
post #83

Earlier quoted context omitted.

Because the functions which generate pages get garbage collected. Once the function is gone, there is no reference point. I suspect hindering spam and vote manipulation plays a part in the architectural decisions. It also makes it possible to create different HN's for different users - e.g. the hellbanned, royals, and plebeians.

I know about hellbanned, but what are the royals and the plebians?

Royals and plebeians might be a little strong. YC folks have a slightly different interface. I think the main differences are that YC usernames show up in orange and there is a link along the top that displays the most recent submissions from YC folks/alumni.

Re: So what happened to the HN server?

#117
post #72
post #47

PG wasn't aware that PetSmart closes an hour earlier on Sundays, so he was forced to wait till opening this morning to get the additional hamsters needed to keep this place running.

amazing... Just amazing... Would you happen to know what breed of hamsters he is using?

All I know is that you never have to clean the cage. I'm told that when they run, they don't have side-effects.

Re: So what happened to the HN server?

#118
post #100
post #47

PG wasn't aware that PetSmart closes an hour earlier on Sundays, so he was forced to wait till opening this morning to get the additional hamsters needed to keep this place running.

I remember when this would have been considered noise here; now it's the top comment.

We three have all been hell banned, you see.

EDIT: More proof -- downvoted -- what could be more hellish than to ban humor?

Re: So what happened to the HN server?

#119
post #79

Earlier quoted context omitted.

The superior results from my browser's back button far outweigh the inconvenience of the expired link. I click on a link from the "Ask" front page, reply to the top comment, and my comment appears in the thread. Next I click "back" on my browser and I'm back at the front page of "ask". I do that much more often than I hit an expired link.

That doesn't really have much to do with the expired link issue. That issue exists because the targets of links are stored as closures on the server. What you want is to serialize those closures into the URL itself, instead of letting the URL be a pointer to a closure stored on the server. In traditional web applications, you'd have to do that serialization manually (although if you've never used such a closure based…

What I would love would be if the "More ..." link at the bottom of any given page would link to Page N+1 of whatever the current ordering of pages is, rather than page N+1 of a listing of articles that is now out of date and gives me an error message.

Great explanation of what's causing that - thank you!

Re: So what happened to the HN server?

#120
post #111
post #93

Earlier quoted context omitted.

I don't understand the disagreement...isn't that the same thing I said? IIRC it used to be the case that all links could expire, then he did this transformation from closures stored on the server to closures manually serialized in the URLs (which results in a normal URL as you say). What I'm describing is how a web framework could do that automatically, which means you get the behavior and expressiveness of closures…

> then he did this transformation from closures stored on the server to closures manually serialized in the URLs (which results in a normal URL as you say). The reply links have a parameter 'id' - the id of the comment to which the reply is being posted. I would guess it's just passed to a normal function which adds the reply to the post. May be you mean the same thing, but "serializing closures in the url"(where? al…

Yes, my point is that it is the same thing. What's happening is just manual closure conversion (http://en.wikipedia.org/wiki/Lambda_lifting), except the resulting data gets saved in the URL rather than the server. On the server, closures saved in the hash table, also have "params which are then passed to a function", except that the params (i.e. the free variables) are saved on the server inside the closure rather than in the URL.

If you have a lambda expression like `(lambda () (show-list-of-posts (+ 1 page-number)))`, the Scheme implementation does these things:

1. Introduce a global function definition with the same body as the lambda expression but with an extra parameter for the free variables. The free variables in the body of the function get replaced with expressions that extract their value from the extra parameter that has the free variables.

2. Convert the lambda expression to an expression that builds a pair of a function pointer to that global function, plus the values of the free variables.

For example the code:

    (define (show-list-of-posts page-number)
       ... display the rest of the homepage ...
       (link "More" (lambda () (show-list-of-posts (+ 1 page-number))))
Will get converted to something like this:

    ;; this is the extra global function that has the body of the lambda expression
    ;; note that the reference to `page-number` got 
    ;; replaced by `(extract-value "page-number" params)`
    (define (closure-324 params)
       (show-list-of-posts (+ 1 (extract-value "page-number" params))))

    ;; note that the lambda expression gets replaced by a create-closure expression
    (define (show-list-of-posts page-number)
       ... display the rest of the homepage ...
       (link "More" (create-closure closure-324 "page-number" page-number)))
create-closure creates a closure data structure where the first argument is the function pointer, and the rest of the arguments are the free variables.

Now, what happens if you want to remove this closure business in a web application, and instead use normal URLs?

First, you introduce a global request handler for the body of the lambda:

    (define-handler (post-list-handler params)
       (show-list-of-posts (+ 1 (extract-value "page-number" params))))
This would define the handler for news.ycombinator.com/post-list-handler?page-number=12.

Then, instead of the (link ...) with a closure, you just link to that url in the show-list-of-posts function:

    (define (show-list-of-posts page-number)
       ... display the rest of the homepage ...
       (link "More" (create-url post-list-handler "page-number" page-number)))
Compare these code snippets to the one above. Do you see the similarity to closure conversion? In both cases we:

1. Introduce a global function/handler for the body of the lambda.

2. That function/handler gets a `params` argument that has the free variables.

3. Everywhere a free variable is referenced in the body, it gets replaced by an expression that extracts the value from the params argument.

4. In place of the lambda expression, we have respectively a (create-closure func free-vars...) or a (create-url handler free-vars...)

So it's really completely analogous. That's why I say that we are just serializing the closure here, and this could be done automatically. Hopefully this makes it more clear what I mean, but maybe these details just make it less clear if you're not familiar with how closures are implemented (closure conversion)...

Post reply on HN