lonk's recent activity

  1. Comment on Many people here believe that social media can't be both large and have good discussion because the human brain isn't made to interact with large numbers of people. What do you think of this? in ~talk

    lonk
    Link
    Instead of phrasing "moderation is impossible to do at scale" I would put it like this: Today's social software is easy to manipulate. Small systems are not worth manipulating. Bigger systems...
    • Exemplary

    Instead of phrasing "moderation is impossible to do at scale" I would put it like this:

    • Today's social software is easy to manipulate.
    • Small systems are not worth manipulating. Bigger systems command more attention and that makes them much more valuable targets. It is like Linux having less malware in big part because it is not as popular as Windows.
    • To solve the root problem we don't need to keep social systems small. We need to fix the vulnerabilities.

    The problem is in the incentive structure.

    Just think: What does the action of voting/retweeting/liking/commenting do on Reddit/Twitter/Facebook/Tildes? Who is this action directed at? Whose experience is changed as a result? In all cases these actions are directed at the reader. The lurker.

    Who is incentivized to vote/retweet/like/comment then? Those who want to influence the experience of the reader.

    It is not a problem at a smaller scale (Tildes) when your user base consists of people with good intentions. They vote/comment to help other users.

    As the system grows, this mechanic attracts bad actors who will game your system to death. And the interesting thing here is that moderation is not going to solve this completely. The goal of a bad actor is often to silence a productive discussion. And to do that they don't need to outright violate any content policy. They can simply derail the discussion, sow "fear uncertainty and doubt". In other words, create enough noise that would bury the signal. Conspiracy theories are an effective tool in that regard.

    How do we solve that?

    My attempt to solve this is through a different incentive structure. Instead of the vote being directed at other users, it is directed at yourself. That is, when you "like" something you say that you want more from other users who liked it. See more details in this post: https://tildes.net/~tech/u7f/linklonk_a_link_aggregator_with_a_trust_system

    9 votes
  2. Comment on What programming/technical projects have you been working on? in ~comp

    lonk
    Link
    I continue working on https://linklonk.com (the invitation code "tildes" is still active) I was very happy with the reception of the Show Tildes post from ~10 days ago. Since then I added: An...

    I continue working on https://linklonk.com (the invitation code "tildes" is still active)

    I was very happy with the reception of the Show Tildes post from ~10 days ago. Since then I added:

    • An invitation system so existing users can invite new users (in /profile). It is modelled very much after the invitation system of Tildes - each user has a number of invitation links they can generate (10) and I will be able to top it up periodically.
    • The profile page now shows you some stats like: "Based on your 5 ratings: you are subscribed to 3 users and 2 feeds; 2 users are subscribed to you" The idea is to help users understand how the system works by being more transparent.

    Next, I want to implement text search functionality for the /ratings page so you can easily look up links that you liked in the past based on the page's title/description/url. The data is stored in PostgreSQL, so I'm hoping a simple SQL query will work well enough. I remember reading http://rachbelaid.com/postgres-full-text-search-is-good-enough/ and I might get some ideas from there.

    3 votes
  3. Comment on Tips to use NixOS on a server? in ~comp

  4. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    I think you are referring to this: https://www.theverge.com/good-deals/2020/12/30/22206586/metro-last-light-redux-free-on-gog-steam-sale I don't have a solution for this. Ideally, the expiration...

    I think you are referring to this: https://www.theverge.com/good-deals/2020/12/30/22206586/metro-last-light-redux-free-on-gog-steam-sale

    I don't have a solution for this. Ideally, the expiration time would be part of the <meta> tags in the source page so we could automatically determine if a link has "expired". Without a source of truth, we could only rely on the users to provide that information. That would require a mechanism to come to a consensus and to resist abuse. This is where a trust-based system could, again, be helpful. For example, you would vote on user-provided metadata (upvote if it was helpful and correct, downvote if it was misleading) and that would affect who you trust to get metadata from.

    Such system could be useful for user-submitted titles. For example, for some pages we cannot extract the title, or the original title is bad. The users could suggest their own title and vote on the existing suggestions.

    To be clear, these are only ideas for the future, not something I would add in the near future. I would like to see sustainable usage of the existing system before introducing more complexity.

    For now, it's up to you to decide if you want more content recommendations from people who upvoted that - now expired - link or less and vote accordingly.

    1 vote
  5. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Happy New Year! Your comment has a lot packed into it. Let me try to address these questions/concerns separately. Is LinkLonk a filter bubble? From the FAQ part of https://linklonk.com/about: When...

    Happy New Year!

    Your comment has a lot packed into it. Let me try to address these questions/concerns separately.

    Is LinkLonk a filter bubble?

    From the FAQ part of https://linklonk.com/about:

    On LinkLonk you pay attention to those who you chose to pay attention to. In a sense, LinkLonk is a filter bubble.

    A filter bubble is a problem when a system chooses content to show to you without giving you clear control or an explanation of how it came up with these recommendations.

    On LinkLonk the ranking mechanism is transparent and is easy to understand. LinkLonk does not try to guess what you would like. What you see is controlled by your explicit ratings. For example, when you see a recommendation from users, LinkLonk explains what links you have in common with these users.

    When I wrote that I had in mind a system that is powered by a machine learning model trained to optimize for "engagement".

    I think it applies to your Reddit example as well. Only it is not some black box automated system that determines what you see. It is the members of the group that determine what you see.

    Group dynamics are a challenge

    See:

    The problem is that the group is a shared resource. You either take it or leave it as a whole. You cannot take just the good parts and leave the bad parts. You either try to control who is in the group and who is out to keep the signal to noise ratio high enough for you, or you just leave.

    LinkLonk sidesteps these problems by not having the concept of a group. The experience of every user is unique and is primarily determined by the user themself. Instead of a shared group, each user has their own group of users that they decided to pay attention to. Without a shared group, a lot of these problems go away.

    Outsized effect of early votes

    Both Reddit (details) and HackerNews (details) use exponential time decay when converting the number of votes to the ranking score. This results in votes that are cast right after the item is submitted to have much more weight than votes cast an hour after the submission. This makes people who spend time voting on new submissions have a huge effect on what makes it to the frontpage and what doesn't.

    On LinkLonk it does not matter how long ago the item was first submitted. What matters is who upvoted/downvoted the item and how much you trust them.

    No user can assume the role of a gatekeeper simply by voting on items early on. They need to earn your trust first.

    Finally, I do agree that there is a place for discovery outside of your filter bubble. Please see the vord's comment above (or below) for some ideas.

    3 votes
  6. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Thanks for mentioning the font size! I updated the main font size from 14px to 16px and the secondary from 13px to 14px. Now it is in accordance with the Material spec:...

    Thanks for mentioning the font size! I updated the main font size from 14px to 16px and the secondary from 13px to 14px. Now it is in accordance with the Material spec: https://material.io/design/typography/the-type-system.html#type-scale

    2 votes
  7. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Thanks for such a detailed comment! I think we need to get a critical mass of users in order to tell how effective the algorithm is. Right now there are simply too few users and ratings for you to...

    Thanks for such a detailed comment!

    I think we need to get a critical mass of users in order to tell how effective the algorithm is. Right now there are simply too few users and ratings for you to strongly connect to a specific topic. I would love to see people start using collections and curating lists of links for their specific interests. It's a chicken and egg problem - for people to start curating collections of links there need to be enough users to benefit from this work.

    Why I believe it could be effective:

    • Prior to the launch, I've been using it in the "single player" mode where the content would come only from RSS feeds. The feeds that have a higher signal-to-noise ratio were prioritized and it worked well from my (biased) perspective.
    • I tested the algorithm on the Movielens.org dataset. I replayed the movie rating history (4+ stars) and before each rating I would calculate recommendations based on the algorithm and based on pure popularity. Then I would compare the rank of the ground truth item between the two algorithms. The LinkLonk's rank of the next item was higher than the popularity based rank. Of course, popularity based ranking is a weak baseline, but it is very commonly used: Tildes/HackerNews/Reddit.
    • Pinterest successfully uses Personalized PageRank at scale: https://blog.acolyer.org/2018/05/23/pixie-a-system-for-recommending-3-billion-items-to-200-million-users-in-real-time/
    3 votes
  8. Comment on What programming/technical projects have you been working on? in ~comp

    lonk
    Link Parent
    Yes, it is very much like PageRank. More concretely - Personalized PageRank where each random walk starts from you. In the graph the users and the items are the nodes and the votes are the edges....

    Yes, it is very much like PageRank. More concretely - Personalized PageRank where each random walk starts from you. In the graph the users and the items are the nodes and the votes are the edges. My random walk is always of length 3: you -> item you liked -> someone else who liked that item -> some other item they liked. This makes it easy to compute and easy to explain to the users why they get something recommended.

    Another modification is that there are negative edges - your downvotes. A walk that goes through a downvote lowers the score of the destination item.

    I did end up announcing it on Tildes: https://tildes.net/~tech/u7f/linklonk_a_link_aggregator_with_a_trust_system

    Please give it a try!

    1 vote
  9. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    I think I have fixed most of the problems with the registration flow (the updated title should say "Register a new account (fixed, take 2)"): I fixed the bad error message "[Object] Object"....

    I think I have fixed most of the problems with the registration flow (the updated title should say "Register a new account (fixed, take 2)"):

    • I fixed the bad error message "[Object] Object". Initially, I called "alert(error)", but the correct way to show the error message is "alert(error.error)".
    • The code didn't handle the case if you pressed "Register with a temporary account" multiple times (e.g., press enter in the invitation code input field and then press the registration button). Now the button becomes disabled while the first request is being handled.
    • I saw in the server logs that there were repeated registration requests (within the same second). The server used to return an error (412 PreconditionFailed) when the user was already registered. I changed it to not be considered an error.
    • The web UI code was trying to load the list of the user's collections from the API as soon as the user is signed in. But I think it was firing before the registration request was complete and the collections request would fail with "401 Unauthorized", which would cause you to be redirected back to the registration page. I moved the code to fetch the list of collections after the registration is done.
    • The server used to check for the exact code match. But on a phone with auto-capitalization of the first letter you would enter "Tildes" which to be an invalid code. Now the matching is case-insensitive.

    Thanks for bearing with me!

    I like the "break out of bubble" idea. How about a version of the popular page where you see links from users that you are not connected to already?

    2 votes
  10. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Could you please help me debug the registration problem you are facing? I tried to register a new account and couldn't reproduce the problem (in Chrome on desktop). How is it broken for you? Any...

    Could you please help me debug the registration problem you are facing? I tried to register a new account and couldn't reproduce the problem (in Chrome on desktop).

    How is it broken for you? Any chance you could share error messages from the JavaScript console? To open the console: Ctrl+Shift+J in Chrome or Ctrl+Shift+K in Firefox.

    Does the registration page have this title "Register a new account (fixed)"? If it does not have "(fixed)" in the end then you are seeing the old version from the browser's cache. Please try to clear the cache and reload the page.

    I used StumbleUpon back in the day and my impression of it was that my thumb up/down ratings did not play a role in what content I would see. Rather it would use the aggregate ratings to determine if a link was generally good or not. I didn’t feel motivated to rate links.

    With LinkLonk I would like to create a feedback loop where you would clearly see a benefit for yourself in rating content. That’s why when you upvote something you see a message like: “you will see more content from 3 other people who also liked this”. Or when you get a recommendation, you see an explanation of why it was recommended to you - because it was liked by 4 people who liked X and Y, which you also liked.

    I also had a sense that StumbleUpon was specifically for serendipitous discovery. It means going broad but not necessarily deep. With LinkLonk I hope to support both use cases depending on what content you upvote.

    Regarding asynchronicity, I tried to make the recommendations wait for you so you don’t feel the pressure to check updates before they are gone. The top recommendations stay on top for a week (by default) until you explicitly mark them as read.

    3 votes
  11. Comment on Statistics on bans and transparency in ~tildes

  12. Comment on Statistics on bans and transparency in ~tildes

  13. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link
    Thanks, everyone, who gave LinkLonk a try! Some stats: 25 people registered, of which 10 made their accounts permanent out of 10 permanent accounts, 8 upvoted at least one item (42 upvotes) out of...

    Thanks, everyone, who gave LinkLonk a try!

    Some stats:

    • 25 people registered, of which 10 made their accounts permanent
    • out of 10 permanent accounts, 8 upvoted at least one item (42 upvotes)
    • out of 15 temporary accounts, 3 upvoted something (10 upvotes)
    • 1 downvote
    • 1 feedback report submitted through the anonymous feedback form

    Please let me know (using the above form or DM) what would improve your experience most. I would greatly appreciate that!

    7 votes
  14. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    The primary use case is to find useful content. This is what I implemented first. Similar to how Reddit started with just links to content. Self posts and comments were added later. With LinkLonk...

    The primary use case is to find useful content. This is what I implemented first. Similar to how Reddit started with just links to content. Self posts and comments were added later.

    With LinkLonk I want to see if it solves the primary use case well enough to be useful to enough people. If it does, then we can add text posts and comments and usernames.

    Regarding comments, I think it would be super useful to apply the same ranking mechanism to comments.

    5 votes
  15. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Switched the icons to svg (tutorial). Please give it a try!

    Switched the icons to svg (tutorial). Please give it a try!

    6 votes
  16. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    The issue is fixed now. Please clear the cache and reload the page. You can tell if the cache was cleared if the title of the registration screen says: "Register a new account (fixed)". I'm amazed...

    The issue is fixed now. Please clear the cache and reload the page. You can tell if the cache was cleared if the title of the registration screen says: "Register a new account (fixed)".

    I'm amazed 2-3 people managed to register at all!

    The registration flow was supposed to create a new anonymous Firebase account as the first step, but I had that step deleted. So the registration would fail.

    Only users who went to linklonk.com/login first and signed in with an email account would have been able to then go to linklonk.com/register and complete the registration process.

    Way to announce your hobby project!

    3 votes
  17. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Thank you for the detailed report of the problem. I have reproduced it locally. Will try to fix it asap. Sorry!

    Thank you for the detailed report of the problem. I have reproduced it locally. Will try to fix it asap. Sorry!

    3 votes
  18. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    There is definitely more computing power necessary compared to popularity based systems (Reddit) or explicit follow systems (Twitter). And it grows with the square of users if implemented naively....

    There is definitely more computing power necessary compared to popularity based systems (Reddit) or explicit follow systems (Twitter). And it grows with the square of users if implemented naively.

    But there are ways to make the calculations approximate and much more efficient. For example, at serving time we could limit the number of source users to top 10K by your connection weight to them.

    I look at this from the other perspective - if the computer does not do this tracking of how useful other users are to you then you have to do this. And from that perspective I think all that computation is justified.

    3 votes
  19. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Thanks for giving it a try and sorry for the frustrating experience! I think I made a last minute change that created this redirect loop from /register to /login. I disabled the redirect to...

    Thanks for giving it a try and sorry for the frustrating experience! I think I made a last minute change that created this redirect loop from /register to /login. I disabled the redirect to /login. Could you please reload the website to see if you can register now?

    It may require clearing cache. On Firefox please hold Shift when you press the reload button (https://support.mozilla.org/en-US/questions/1073264).

    To answer your questions:

    1. It is not open-source. I don't have plans to open-source it at the moment.
    2. Your votes do not get deleted as time passes. Is this a concern? Would you like an option of your votes being deleted after some time?
    3. When you delete your account all your data is deleted including your votes. I'll update the /privacy page to reflect that.
    4. Yes, I will need to work on this. linklonk.com/terms currently says: "Please do not submit content that does not advance that goal. This includes content that is meant to misinform, shock, harass or harm people." I would like to keep the website "safe for work". I absolutely do not intend it to become a cesspool. That's why it is limited to invite only. In the future I will add functionality for existing users to invite new users like Tildes does it.
    7 votes
  20. Comment on LinkLonk - A link aggregator with a trust system in ~tech

    lonk
    Link Parent
    Thanks for the feedback! I will look into it.

    Thanks for the feedback! I will look into it.

    5 votes