Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: HN Follow – Follow Your Friends on HN (val.town)
133 points by stevekrouse on May 25, 2023 | hide | past | favorite | 81 comments
HN Follow lets you follow authors on Hacker News, and get email notifications when they post. It was inspired by alerthn.com and hnreplies.com.

The app was built in an experimental style on Val Town. We’re trying to create a new web primitive that you can:

1. write like a function 2. run like a script 3. fork like a repo 4. install like an app

This is our 5th iteration of this same “HN Follow” app. We launched the 3rd version here on Hacker News six months ago[1], but it was very kindly removed from the front page by dang in favor of us launching Val Town itself first, which we did in January[2].

We’re trying to strike the right balance between something you can use and install with one click, and something you can infinitely customize. For example, you could fork `@rodrigoTello.hnFollowApp`[3] and change the input parameter from authors to a generic query, like I do here[4] to get notifications whenever “val town” is mentioned on HN. In addition to emailing myself (via `console.email`), I also send a message to our team’s Discord. The possibilities are endless, but it can also be overwhelming. We’re trying to find the balance where we help you navigate the space of possible integrations, without limiting you the way a no-code tool would. We would really appreciate your guys’ feedback and suggestions!

[1] - HN Follow, first launch: https://news.ycombinator.com/item?id=33533830

[2] - Val Town launch: https://news.ycombinator.com/item?id=34343122

[3] - `@rodrigotello.hnFollowApp`: https://www.val.town/v/rodrigotello.hnFollowApp

[4] - My fork of hnFollow: https://www.val.town/v/stevekrouse.hnValTown




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.


I want the opposite of that: "This guy is an asshole and I just don't want to see him ever again."


I have this half-baked idea for an anti-social media website where the only way to "engage" is by blocking people.


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.


I mean, reddit is half way there, they just need to increase the pathetic limit of 1000 blocked users.


3-minute uBlock script:

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.


Shorter version:

    news.ycombinator.com##.default:has(.hnuser[href$="=USERNAME"])
Alternative version that just makes the text invisible so that you can still highlight it to read it if you really want to:

    news.ycombinator.com##.default:has(.hnuser[href$="=USERNAME"]) .comment > .commtext:style(color: #f6f6ef !important)


> Alternative version that just makes the text invisible so that you can still highlight it to read it if you really want to

Amazing! I had no idea uBlock could actually inject another style.


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…

Edit: some can hack it to tint people they like.


This is HN. The corpo minimal social news site of the most successful VC incubator. Egalitarianism and HN barely overlap.


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.


You mean like how github does in their search page?

You hover click on a method and a side panel shows up with source code of that method


I like the idea. I worry it will result in skewed incentives affecting content if widely adopted (i.e. LinkedInSanity)


What do you mean by LinkedInSanity?


> Remove filler, upsells, click bait and other low or negative-value annoyances.

https://github.com/taylr/linkedinsanity


Mis-remembered the phrase, it's /r/LinkedInLunatics.

Thanks for the callout!


I still prefer your instinctive recollection; “LinkedInSanity” is a much better name.


Do you have an option to opt out of being followed?


No, sorry. It's just polling HN via the Agolia API, so if you post on HN publicly, anyone can poll for that data.


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.

[1] https://www.val.town/explore


I could never be friends with someone who posts on HN.


Right. They would have nothing different to offer other than what you have already gained from here.

I found out this the hard way after coming across someone who posted on hn.


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


They are paraphrasing " I don’t want to belong to any club that would have me as a member!"



GP was being sardonic


Got to say, the H1 on the main landing page is amazing.


thanks!


I like the idea of val.town, each snippet is isolated and can reference to other snippets & packages.

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.


“When they post”

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.


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:

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


Just curious, how do you prevent/mitigate abuse or spam in a cloud scripting environment like this?


Great question!

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.


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.


> But in the general case, it's a hard, never-ending cat-and-mouse game

One point of view is that in the general case this problem is solvable, has been solved, and the solution isn't well known.


… that’s a lot of email isn’t it?


Speaking as a heavy user and inbox 0 person, the rule I use for these emails is "skim then delete".


Depends who you follow, right?


Out of curiosity, any plans on adding push notification primitives?


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.


You can use https://www.hnreplies.com to get notified when someone replies to your comments.


God bless Dan Grossman keeping this open and running wherever he is: hnreplies.com


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


Why did you choose to build this on Val.town?


We're the creators of Val Town ;)


Orange Reddit is real.


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.


Another example: I have this account since 2015 and I started reading HN years before. I still can't downvote.


That's fair; I am also only using supposition.


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.


> only 500 karma

I think you underestimate how little some of us have to say.


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.


Downvoting doesn’t work that well

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?


That is kinda shifting more of the moderation burden onto the people most likely to receive negative interaction and harassment yeah?


Interesting that many subreddits have removed downvoting, for a variety of reasons.


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.


MY understanding of this community is that we strive to not be Reddit, especially from the discourse and moderation perspectives.


My understanding is that HN exists without reference to reddit, other than to ask people not to compare it to reddit again.


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 wonder if this can be achieved with uBlock Origin.

Like delete the div where div > div > span=WirelessGigabit.


This seems to work.

table:has(> tbody > tr > td > div > span > a[href="user?id=USERNAME"])


There are browser plugins that will do this. I use one, it does wonders for my mental health.




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

Search: