What's the value of bringing Facebook/Instagram mechanics into HN? Wouldn't that skew social dynamics away from egalitarianism, giving rise to "influencers", social bubbles and rise in clickbait? I think that not having a 'follow your friends' mechanism is a feature of HN.
Some years ago I wanted to create LinkedOut. It was a privacy-conscious web site, where you couldn't spill any secrets because it wouldn't take any information. You got your page, which was blank, and stayed blank. A very anti-social network.
I'm pretty sure the domain name was taken already.
On slashdot you could mark people as friends and foes. You could then assign a penalty to posts by foes (and posts by foes of foes and posts of friends of foes, I think?) so they were unlikely to meet your 'show post' point threshold and would therefor be hidden.
Great idea! What about fade-away hnstyle with a color teint? Maybe updating à gist with Val Town and referencing that gist from a css file with Stylish? Or another way js only…
How about an app that shows a list of friends like below
pg(3)
cj(4)
stevekrouse(2)
Each of above name is hyperlinked and leads to a page where I can see all their updates. The count in bracket let's me know how many updates they have. This is not necessarily a suggestion for this app. I wish more social media apps adopted this approach instead of current time hogging feeds.
This is a cool idea too! The easiest thing to do here would be to schedule it to run daily or weekly instead of hourly. But you can also build this aggregation thing too on Val Town. Lmk if you want a hand with that!
Just some random feedback on the val.town interface. The concept is interesting but I have one gripe.
I want to know what the code I'm about to run will do and I notice the pretty unique `@stevekrouse.hnLatestPosts` type interface where it looks like you can reference functions. But this leads to a deep chain of reference. Like, that function leads to `@stevekrouse.hnSearch` which leads to `@stevekrouse.fetchJSON` which leads to `@stevekrouse.normalizeURL`, etc.
There is some kind of DAG of dependencies that is invisible to me. I'm wondering what could be done from a UI perspective here? Like, maybe a tree view where each node is expandable? Right now it just pops open a new browser tab and I end up with context spread across multiple tabs.
The concept of composable references is powerful but I think the UX could be improved.
Is there anything preventing you from adding an opt-out feature?
Yes, anyone can poll, but releasing a product that polls puts the onus on the product to honor the spirit of the site.
I come here because the site doesn’t have all of the usual social media features, which is arguably part of how/why the community is still an interesting place to visit.
I am sure there are bots/people that follow their enemies and downvote lol. Everytime I post something unpopular, I get my non-controversial posts downvoted predictably for some time. Or maybe that's just shadow moderation.
The val.town idea is very promising but I think it's not as social as it could be.
The val.town page is dedicated to developers and convinces with features. What I am missing is content. The explore page [1] has popular functions, which are the content of val.town, but they are not content in a social sense.
HN and reddit engage users before they make an account. It's very good that I can run code without making an account. But I have to interact and think before I am hooked. Could users be hooked on content? I could imagine a landing page on a second domain that would show the result of scripts that users vote to the top. (Of course the knowledge would lie in preventing dick pics.)
Adding votes should also be possible for the explore page itself. HN/newest is not as convincing as the ranked HN frontpage. A short Readme section and a result section would make the code more approachable.
The UX seems to be choosing precision over smoothness. Trying the HN Top Story in /explore, it's surprising that the result is just the title, without a link. To change that, I would prefer if a simple click on the function would directly allow me to edit the function. The ctrl-click with the new tab works, but it doesn't feel right.
I don't understand your comment; I have several real-life friends who have accounts here (and normally I discover it by accident, and we don't exchange our nicknames as everybody would try to pretend we enjoy some semi-anonimity here).
It includes both. I just made a forked version that takes an extra `tags` parameter that lets you customize which kinds of posts you want to subscribe to:
But in the general case, it's a hard, never-ending cat-and-mouse game, particularly with free and unauthenticated use. We will eventually probably need to restrict use severely unless you have somehow proved you're a real person (ie connect to your github account) or are a paying customer.
Ola from windmill.dev which has some overlap but is focused on enterprise and self-hosted infra.
We have exactly the same issues for the cloud and ended up securing everything through nsjail and the deno run sandboxing. I admire that you're willing to allow unauthentified users to run computations. Do you guys have timeout ? How do you ensure resource isolation? We use kubernetes for resource isolation, and we use both timeouts and quotas where each second a background process will kill the job if the user/job is over it. Let me know if you guys are up to chat at some point and congrats on the very nice UX.
Windmill is very cool! Reminds me a bit of pipedream.com too, but it's cool that you guys are open-source and self-hostable.
Yeah we have a timeout, but will likely need to continue to add restrictions as we scale and get more abuse. We are mostly relying on deno's workers to isolate user code, but will probably add additional process isolation soon, and dedicated private resources for serious customers one day.
Would love to chat & share tips! Email me? steve@val.town
Sounds like we need a support group for founders of companies that let users run any code in the cloud. We have our own bitcoin mining war stories. I am sure Amjad from Repl.it will join.
We go back and forth on what we should add to the platform vs encourage you to do for yourself. For example, you can do this yourself fairly easily with ntfy.sh: https://www.val.town/v/axelav.sendNotification
But wouldn't it be even nicer to have `console.push` in the platform and it'd then prompt you to accept notifications right from our desktop or mobile website? Maybe soon!
I am always hearing from people who'd like to know when somebody replies to one of their comments. It seems like a notification system for Hacker News could be interesting in general. It's not particularly hard to write a script that follows new posts and comments but I'm not so sure how you pick up edits other than just running slow enough that you fetch stuff after the edit window has expired.
Now, the really scary option would be to automatically correlate HN accounts with other accounts and pieces of text based on the previous work done in this area to find alternative HN accounts (that was already awkward enough).
Off topic, but I would love the opposite of this. The ability to block certain HN users, just hide their comments entirely. Certain people have shown again and again they are not willing to have good faith arguments, and I simply don't care to be subjected to their nonsense.
The downside to allowing blocking is that the site works best when you downvote that kind of content, because then everyone else doesn't have to be subjected to it. It's why we resisted a block feature on reddit for a long time. Because the site only works if bad stuff is downvoted.
While I understand that argument, I imagine most regular readers do not have the down vote privilege and may not for a long time, if ever. (I'm not sure in fact what the threshhold is, but it seems to be high.) To post enough and get upvoted enough to achieve it probably takes years on average.
That's a very interesting question. I always assumed most daily users do, by a wide margin, but I never actually had any data to base that off of. I even thought this before I had the 501 karma needed.
By absolute user count I'd definitely expect most to not have it but only because most accounts aren't regularly used (many even abandoned).
A little example: I’ve used the site for a little over 4 years but don’t usually post or comment. If I do comment, it’s something really specific or to try and help clear a misunderstanding so usually low karma amounts. I regularly participate through flagging and upvotes but only have ~50 karma so I still can’t downvote and will likely never be able to.
Not saying it shouldn’t be this way, but downvotes are heavily biased toward people who regularly post or comment.
It's only 500 karma, a handful of successful posts will get you there. If you want to farm points, just go to /new, look for threads with 1-2 other comments and post something that is likely to be upvoted. Don't forget to upvote the post.
Exactly, I just absorb whatever I read and comment in rare circumstances. In those rare circumstances, there's many times where people have said what I wanted.
So why not incorporate blocks as a signal for the ranking algorithm? The simple version is every person that blocks $USER causes a -n modifier on all of $USER's content; more complex versions could scale the modifier with the number of people (or the combined "reputation" of the people) blocking $USER or shadowban them once x% of posters block them.
Open to abuse? Potentially, but so are a lot of community voting features, and reliably muting serial trolls would be a useful feature for a lot of social sites.
One problem I immediately see with this is that it's difficult to define what a serial troll (excluding bot accounts) is vs someone a community doesn't like for whatever reason, using a downvoting system at least provides some leeway in discussion that is on the boundary of what is and isn't commonly accepted for a given comment at a given time within a conversation.
The main issue is that if a comment gets downvoted when newly created, it looses almost all visibility (gets shown further down), and it mostly dies, just from one downvote
This just creates and echo chamber where only the most accepted/mainstream opinions bubble up
It would be nice if we could “sort by controversial” or “sort by new”, so that we got more variety of opinions
Right, it would make more sense to have a plugin that makes your account automatically downvote any of those users' comments as you encounter them. Or even better, periodically pull up their latest comments and downvote them.
Not advocating that, of course, and it feels contrary to what the benevolent mod team would prefer. And I assume that the site has some countermeasure for that, like it does against upvoting a submission that you accessed via direct link instead from from the main site?
One of the problems for subreddits is people coming from the front page or from other subreddits, who are not part of the community of that subreddit, and begin to downvote things etc.
HN is lucky in this regard; there is just one HN, not uncountable “sub-HNs”.
Of course people can still come from other places to HN. But to earn downvote privileges here you first need some amount of karma. So hopefully this makes it so that downvote privileges on HN are mostly handed to people who are at least somewhat aligned with the broader community here.
Blocking downvoting hides gamed/promoted comments, so it's a situation that moderators would generally prefer. It's definitely the reason Youtube did it; because it was ditching individual creators without professional production values and trying to promote corporate traditional broadcast content.
50 inauthentic upvotes for something no one likes, while hundreds of frustrated potential downvoters fume. Then someone puts up a reply designed to be upvoted as a proxy for the lack of ability to downvote the inauthentically boosted comment, and that reply is quickly deleted as trolling or a personal attack.
Showing the total number of views like Twitter does now is a positively-vibed kludge for people who hate the whiff of negativity, although all of Twitter's stats seem wonky as hell under new leadership. Still, a low upvote/view ratio can also represent indifference or people not believing they're qualified to comment on something, rather than being a great signal for disapproval.
So you can still game that pretty well by Gish Galloping with a ton of broad references (entire papers or books rather than passages from them or reasonable summaries), and lots of people will disqualify themselves from downvoting because they aren't going to click through to the papers, while others will upvote just because it looks like the commenter is making an effort.
Is that actually possible now? I remember a few years ago, some moderators removed downvoting for people who aren't subscribed to their sub using custom css, but of course it was easy to circumvent and didn't affect mobile users.
A minor point, but the vernacular has shifted to this being called "muting" whereas blocking is the much more toxic, "and they can't see what you post either".
Platforms that implement blocking almost always see it weaponized by hate groups, not to mention how antithetical it is to allowing a user to control their feed, and the argument of "targeted harassment if people can see my content" doesn't hold water given how trivially easy it is to circumvent (if targeted harassment is the goal).
Such a system would fail at HN, if offered by the site itself. Many users have accounts registered for the sole purpose of bypassing “identity over time” recognition, whether by karma and flagging or simply by username recognition. Anyone who perceives themselves to be blocked would just keep registering new accounts to exempt themselves from it, or maintain a collection of accounts to circumvent it. The absence of blocks removes a key benefit of doing so, which helps keep the sockpuppet population down.
(Note that if you see users that are frequently breaking the guidelines, please consider emailing the site mods using the footer contact link, so that they can consider whether further review and/or action is necessary.)
I haven't particularly noticed this. I mean, sure there are times when I've felt a lack of good faith in the other party, but that tends to be individual discussions rather than seeing repeat offenders; its often been noted the quality of discussion here is higher than most other places - but perhaps I don't spend enough time on here to have noticed the really annoying types.
I'm pretty sure the domain name was taken already.
news.ycombinator.com##:xpath(//span[contains(@class, 'comhead')]/a[contains(@href, 'user?id=USERNAME')]/ancestor::td[contains(@class, 'default')])
Replace USERNAME with the user you don't want to see.
Edit: it only works on comments, but you can just as easily make one that hides their submissions as well.
Amazing! I had no idea uBlock could actually inject another style.
Edit: some can hack it to tint people they like.
pg(3)
cj(4)
stevekrouse(2)
Each of above name is hyperlinked and leads to a page where I can see all their updates. The count in bracket let's me know how many updates they have. This is not necessarily a suggestion for this app. I wish more social media apps adopted this approach instead of current time hogging feeds.
I want to know what the code I'm about to run will do and I notice the pretty unique `@stevekrouse.hnLatestPosts` type interface where it looks like you can reference functions. But this leads to a deep chain of reference. Like, that function leads to `@stevekrouse.hnSearch` which leads to `@stevekrouse.fetchJSON` which leads to `@stevekrouse.normalizeURL`, etc.
There is some kind of DAG of dependencies that is invisible to me. I'm wondering what could be done from a UI perspective here? Like, maybe a tree view where each node is expandable? Right now it just pops open a new browser tab and I end up with context spread across multiple tabs.
The concept of composable references is powerful but I think the UX could be improved.
You hover click on a method and a side panel shows up with source code of that method
https://github.com/taylr/linkedinsanity
Thanks for the callout!
Yes, anyone can poll, but releasing a product that polls puts the onus on the product to honor the spirit of the site.
I come here because the site doesn’t have all of the usual social media features, which is arguably part of how/why the community is still an interesting place to visit.
The val.town page is dedicated to developers and convinces with features. What I am missing is content. The explore page [1] has popular functions, which are the content of val.town, but they are not content in a social sense.
HN and reddit engage users before they make an account. It's very good that I can run code without making an account. But I have to interact and think before I am hooked. Could users be hooked on content? I could imagine a landing page on a second domain that would show the result of scripts that users vote to the top. (Of course the knowledge would lie in preventing dick pics.)
Adding votes should also be possible for the explore page itself. HN/newest is not as convincing as the ranked HN frontpage. A short Readme section and a result section would make the code more approachable.
The UX seems to be choosing precision over smoothness. Trying the HN Top Story in /explore, it's surprising that the result is just the title, without a link. To change that, I would prefer if a simple click on the function would directly allow me to edit the function. The ctrl-click with the new tab works, but it doesn't feel right.
[1] https://www.val.town/explore
I found out this the hard way after coming across someone who posted on hn.
One thing I wish was that other runtimes would be shipped aswell, like Ruby. But I understand that maintaing such runtime is a burden.
I know that Vercel supports Ruby as serverless runtime though, so I know it’s possible.
Other than that, I think val.town will boom in popularity soon. It’s a unique idea.
Does this include comments, or just posting submissions?
IMO the former would be overkill for email notifications, and the latter would be not terribly useful.
https://www.val.town/v/stevekrouse.hnFollowApp
You can see all the tag types (and other search options) here: https://hn.algolia.com/api
Happy to help you customize it however you'd like :)
Andrew Healey wrote a great blog post about sandboxing, particularly related to us: https://healeycodes.com/sandboxing-javascript-code
And we recently launched more secure semantics: https://blog.val.town/blog/restricted-library-mode
But in the general case, it's a hard, never-ending cat-and-mouse game, particularly with free and unauthenticated use. We will eventually probably need to restrict use severely unless you have somehow proved you're a real person (ie connect to your github account) or are a paying customer.
We have exactly the same issues for the cloud and ended up securing everything through nsjail and the deno run sandboxing. I admire that you're willing to allow unauthentified users to run computations. Do you guys have timeout ? How do you ensure resource isolation? We use kubernetes for resource isolation, and we use both timeouts and quotas where each second a background process will kill the job if the user/job is over it. Let me know if you guys are up to chat at some point and congrats on the very nice UX.
Yeah we have a timeout, but will likely need to continue to add restrictions as we scale and get more abuse. We are mostly relying on deno's workers to isolate user code, but will probably add additional process isolation soon, and dedicated private resources for serious customers one day.
Would love to chat & share tips! Email me? steve@val.town
One point of view is that in the general case this problem is solvable, has been solved, and the solution isn't well known.
But wouldn't it be even nicer to have `console.push` in the platform and it'd then prompt you to accept notifications right from our desktop or mobile website? Maybe soon!
By absolute user count I'd definitely expect most to not have it but only because most accounts aren't regularly used (many even abandoned).
Not saying it shouldn’t be this way, but downvotes are heavily biased toward people who regularly post or comment.
I think you underestimate how little some of us have to say.
Open to abuse? Potentially, but so are a lot of community voting features, and reliably muting serial trolls would be a useful feature for a lot of social sites.
The main issue is that if a comment gets downvoted when newly created, it looses almost all visibility (gets shown further down), and it mostly dies, just from one downvote
This just creates and echo chamber where only the most accepted/mainstream opinions bubble up
It would be nice if we could “sort by controversial” or “sort by new”, so that we got more variety of opinions
Not advocating that, of course, and it feels contrary to what the benevolent mod team would prefer. And I assume that the site has some countermeasure for that, like it does against upvoting a submission that you accessed via direct link instead from from the main site?
HN is lucky in this regard; there is just one HN, not uncountable “sub-HNs”.
Of course people can still come from other places to HN. But to earn downvote privileges here you first need some amount of karma. So hopefully this makes it so that downvote privileges on HN are mostly handed to people who are at least somewhat aligned with the broader community here.
50 inauthentic upvotes for something no one likes, while hundreds of frustrated potential downvoters fume. Then someone puts up a reply designed to be upvoted as a proxy for the lack of ability to downvote the inauthentically boosted comment, and that reply is quickly deleted as trolling or a personal attack.
Showing the total number of views like Twitter does now is a positively-vibed kludge for people who hate the whiff of negativity, although all of Twitter's stats seem wonky as hell under new leadership. Still, a low upvote/view ratio can also represent indifference or people not believing they're qualified to comment on something, rather than being a great signal for disapproval.
So you can still game that pretty well by Gish Galloping with a ton of broad references (entire papers or books rather than passages from them or reasonable summaries), and lots of people will disqualify themselves from downvoting because they aren't going to click through to the papers, while others will upvote just because it looks like the commenter is making an effort.
Platforms that implement blocking almost always see it weaponized by hate groups, not to mention how antithetical it is to allowing a user to control their feed, and the argument of "targeted harassment if people can see my content" doesn't hold water given how trivially easy it is to circumvent (if targeted harassment is the goal).
(Note that if you see users that are frequently breaking the guidelines, please consider emailing the site mods using the footer contact link, so that they can consider whether further review and/or action is necessary.)
Like delete the div where div > div > span=WirelessGigabit.
table:has(> tbody > tr > td > div > span > a[href="user?id=USERNAME"])