If the author is making their point in a civil way, then we should be up-voting it. Whether we agree or disagree with their point should not matter since the aim is to maintain civil discourse rather than to create an echo chamber.
If the author is taking away from civil discourse we should be down-voting grey posts. Whether we agree or disagree with their perspective should not play a role since it is far more important to create an environment where everyone is comfortable with expressing themselves.
We will only be able to maintain the freedom of speech if civility is at the core of our discourse. Once civility is dropped, we run the risk of speech being used as a tool to suppress speech.
Of course, it's cheap to create a new account, because we want HN to be open to newcomers. But why abuse that, when you could contribute to not destroying the ecosystem instead? I'm sure you wouldn't drop lit matches in a dry forest, or litter in a city park, or dump motor oil in a mountain lake. Please stop being that sort of person here.
No, I will not.
> Of course, it's cheap to create a new account, because we want HN to be open to newcomers
Of course you don't, especially if the newcomer don't follow your groupthink.
> I'm sure you wouldn't drop lit matches in a dry forest or litter in a city park or dump motor oil in a mountain lake. Please don't be that sort of person here.
Quite the contrary, I will love to. The ecosystem is rotten to the core. Stop being a coward and own who you really are. You are not "open". You are just as close minded as the people you claim to fight against. I've been banned from many forums, from HN to right wing ones, developed a thick skin in the process against mere splinters.
This is a bit unusual, but I wanted to let you know about a very strange Racket issue. I'm not sure if HN is still running on Racket or not, or if the CL port has finished. But...
For many years, HN has been running just fine with ac.scm looking like this:
(define x-set-car!
(let ((fn (namespace-variable-value 'set-car! #t (lambda () #f))))
(if (procedure? fn)
fn
(lambda (p x)
(if (pair? p)
(unsafe-set-mcar! p x)
(raise-type-error 'set-car! "pair" p))))))
(define x-set-cdr!
(let ((fn (namespace-variable-value 'set-cdr! #t (lambda () #f))))
(if (procedure? fn)
fn
(lambda (p x)
(if (pair? p)
(unsafe-set-mcdr! p x)
(raise-type-error 'set-cdr! "pair" p))))))
The only reason I know that, is thanks to Scott. It was one of the first tips he shared with me. Vanilla arc3.1 looks like this: (xdef scar (lambda (x val)
(if (string? x)
(string-set! x 0 val)
(x-set-car! x val))
val))
(xdef scdr (lambda (x val)
(if (string? x)
(err "Can't set cdr of a string" x)
(x-set-cdr! x val))
val))
which became unreliable years ago.Scott explained that unsafe-set-mcar! was a bit of a hack, but that it worked due to a few assumptions about the code. I upgraded to this and never gave it a second thought.
Fast forward to a week or two ago. Arc kept throwing very strange errors. As far as I could tell, nothing whatsoever had changed.
But Racket had changed. The latest shipped version, for whatever reason, causes #<garbage> to be inserted to the `car` if you try to do (scar '(x y) '(a b))
(It took a long time to track that down...)
After poking around the racket source code, I noticed there was a function called unsafe-set-immutable-car!
On a whim, I tried switching unsafe-set-mcar! to unsafe-set-immutable-car! and everything worked perfectly.
I don't know why, or whether it's stable long term. But I wanted to let you know, in case someone on your team is running into strange Racket errors, that this is the fix:
(define x-set-car!
(let ((fn (namespace-variable-value 'set-car! #t (lambda () #f))))
(if (procedure? fn)
fn
(lambda (p x)
(if (pair? p)
(unsafe-set-immutable-car! p x)
(raise-type-error 'set-car! "pair" p))))))
(define x-set-cdr!
(let ((fn (namespace-variable-value 'set-cdr! #t (lambda () #f))))
(if (procedure? fn)
fn
(lambda (p x)
(if (pair? p)
(unsafe-set-immutable-cdr! p x)
(raise-type-error 'set-cdr! "pair" p))))))
I hope that saves someone a little bit of time.Thanks for taking care of the troll. (And the HN API, and a thousand other things.) Best of luck.
ycombinator.com##.c00:style(color: #000 !important; )
ycombinator.com##.c5a:style(color: #000 !important; )
ycombinator.com##.c73:style(color: #000 !important; )
ycombinator.com##.c82:style(color: #000 !important; )
ycombinator.com##.c88:style(color: #000 !important; )
ycombinator.com##.c9c:style(color: #000 !important; )
ycombinator.com##.cae:style(color: #000 !important; )
ycombinator.com##.cbe:style(color: #000 !important; )
ycombinator.com##.cce:style(color: #000 !important; )
ycombinator.com##.cdd:style(color: #000 !important; )
Change the color to match your preference.It's one of the strongest methodologies for making a discussion board addictive.
I think an interesting feature to add would be to have peoples' user areas show how many downvotes they have spewed forth.
Because reading a text thread where the color of the text constantly changes is rather annoying.
Please go on.