lonk's recent activity

  1. Comment on Tracing Paper - A brief history of the secret plan to track every printed page in ~tech

    lonk
    Link
    I would also recommend flipping through the Logic website. They have well written articles with authors from different perspectives. You can support them by subscribing to their paper edition....

    I would also recommend flipping through the Logic website. They have well written articles with authors from different perspectives. You can support them by subscribing to their paper edition.

    Looking for inspiration? Try this one on emoji: https://logicmag.io/commons/under-a-blood-red-flag/

  2. Comment on Tracing Paper - A brief history of the secret plan to track every printed page in ~tech

    lonk
    Link
    Found it in my feed on LinkLonk and two more users also liked it. So maybe more Tildes folks will find it useful. If you do, consider upvoting it on LinkLonk to connect to all 3 users that already...

    Found it in my feed on LinkLonk and two more users also liked it. So maybe more Tildes folks will find it useful. If you do, consider upvoting it on LinkLonk to connect to all 3 users that already upvoted it: https://linklonk.com/item/4996019215420096512

    1 vote
  3. Comment on A progress update on LinkLonk - a trust based news aggregator in ~tech

    lonk
    Link Parent
    Reviews definitely seem to fit the LinkLonk's trust model. Many review sites have "Was this review helpful?" ratings but they use it to aggregate general popularity of each review. With the trust...

    Reviews definitely seem to fit the LinkLonk's trust model. Many review sites have "Was this review helpful?" ratings but they use it to aggregate general popularity of each review. With the trust model, you could surface reviews that were rated by people who care about the same aspects of the product or service. For example, for resort reviews you may not care about the amenities for kids if you are not travelling with kids yourself.

    The algorithm is based on Personalize PageRank. To create recommendations for you, we start all possible walks on the bipartite graph of users and item (nodes) that are connected with ratings (edges). The walk is like this:

    • Step 1: Pick an item you liked
    • Step 2: Go to a user that liked the same item before you
    • Step 3: Go to an item that they rated around or after they rated the item from step 1. You have arrived!

    Now, look at how many branches each step had - this goes into the denominator for calculating the probability of taking each path. Aggregate probabilities of taking all paths that end in the same item and you get the ranking score of that item.

    Downvotes work the same way, but paths that start from an item that you downvoted subtract from the ranking score.

    There are more details, but that's the general idea.

    From the user's perspective here is what is happening:

    • When you upvote something - you distribute 1 point of your trust among everyone who upvoted the same item before you. These users become curators of content for you.
    • The users who have your trust distribute it evenly among other items they liked. They, in a way, bet on those other items with your trust that they earned.
    • When you see something that wasted your time and you downvote it - the curators that bet on that item lose your trust.

    Note that you need to know who rated what items. Usually this information is not public. For example, Tildes, Reddit, HackerNews don't make this information available. In a decentralized setting this could be a problem.

    3 votes
  4. A progress update on LinkLonk - a trust based news aggregator

    Hey everyone, I launched my little project LinkLonk here on Tildes back in December and wanted to tell you how it has been going and get your feedback/suggestions. New changes since the launch:...

    Hey everyone,

    I launched my little project LinkLonk here on Tildes back in December and wanted to tell you how it has been going and get your feedback/suggestions.

    New changes since the launch:

    • The temporary accounts now automatically get deleted after 30 days of inactivity. I didn't have the deletion logic at the time of the launch, but had it implemented about 30 days after launch. Automatic account deletion is quite destructive - removes the account from the database (thank goodness for foreign keys and cascade deletes) and from Firebase Authentication. I'm happy that there were nobugs when I ran it the first time.
    • In addition to submitting external links you can now create text posts. The posts are Markdown-formatted (similar to Tildes). One novel thing is that you can post "anonymously". The database has a record of who the author is so the author can delete/edit their post, it's just the name is not show next to the post.
    • Comments - each item has a comment section. The comments are ranked based on how much you trust the people who upvoted each comment (as opposed to being pure popularity). This is the same ranking system that is used to rank the "For you" page, but now applied to comments.
      • Unlike Tildes, the comments have a downvote button. The downvote does not bury the comment for everyone else. Instead, it makes your trust in upvotes of people who upvoted that comment go lower. So the downvote button effects what you see, not what others see. It is much harder to abuse that button that way. For that reason I feel much more comfortable putting it there. However, there is a second order effect. If you downvote a comment that someone else already downvoted - then you will trust the downvotes of that person. When they downvote some other comment - then it will rank lower for you. In a sense they earn your trust to moderate content for you by identifying comments you don't want to see.

    In terms of users, there have been 260 user records created (some from my shameless plug comments on HackerNews). Of those, ~45 rated something - excluding those that were temporary accounts and were deleted. And I think we have 2 regularly active users (excluding myself). In my mind I had 10 as the number of active users that I was hoping to get by the end of 2021. At this rate we may reach it.

    I was pleasantly surprised that there have been no misbehaving users. I didn't need to remove any content even once. This lead me to constantly postpone the implementation of a content reporting system. I hope it stays this way for a long time.

    The whole idea of a trust based recommendation system is based on having someone to trust. Right now it is the RSS feeds that are generating most of the content recommendations for the active users. But ideally it would be mostly users recommending content to users. I have two priorities for the near future:

    • Make the "single-player" experience better so the active users find value already. As an example, I added full-text search through items you liked
    • Find more users to improve the "multi-player" experience. One option is to submit a "Show HN:" post on HackerNews. But you can only do it once and I'm not sure I'm ready to use that shot yet.

    What do you think I should do next on these two fronts?

    If you would like to give LinkLonk a try register with code "tildes" at https://linklonk.com/register. Feel free to comment on this post: https://linklonk.com/item/6347369602224750592

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

    lonk
    Link
    Added commenting to https://linklonk.com Done so far: tree-structure, Markdown formatting, sorting by user ratings, post anonymously or with your name. Next step will be to change the sorting to...

    Added commenting to https://linklonk.com

    Done so far: tree-structure, Markdown formatting, sorting by user ratings, post anonymously or with your name.

    Next step will be to change the sorting to be based on how much you trust people who upvoted each comment. This is the trust based system that is used to rank the top level items (and discussed in https://tildes.net/~tech/u7f/linklonk_a_link_aggregator_with_a_trust_system) but now applied to comment. I hope to finish it in a week.

    More details in this post: https://linklonk.com/item/7034545119553585152

    Give it a try. Register with invitation code "tildes" to create a temporary account (no email address necessary).

    Would love to know what Tildes commenting features you like the most so I could prioritize it for LinkLonk :) Personally, I like the "new" comment indicators in the list of posts and in the thread view (the orange highlighting).

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

    lonk
    Link Parent
    First post is now live: https://linklonk.com/item/3672932074643849216 It is far from the functionality of Tildes, but it's a start.

    First post is now live: https://linklonk.com/item/3672932074643849216

    It is far from the functionality of Tildes, but it's a start.

    1 vote
  7. Comment on What programming/technical projects have you been working on? in ~comp

    lonk
    Link
    Working on https://linklonk.com/ in spare time (announced on Tildes two months ago, code "tildes" still works, if you'd like to try it). Adding support for text posts (right now you can only...

    Working on https://linklonk.com/ in spare time (announced on Tildes two months ago, code "tildes" still works, if you'd like to try it).

    Adding support for text posts (right now you can only submit links). I don't expect it being used a lot right now since there are few regular users, but I'd like a way to post announcements and respond to the feedback form submissions.

    This brought the need to implement user names, something I didn't need before. Getting some inspirations from the way Tildes validates user names.

    I was originally thinking of implementing comments as a separate kind of thing. That is: store them in a new "comments" table in Postgres, track votes on comments separately from top-level items (ie, links and posts). But now I'm planning to implement them as a text post that just has a parent item id. It would be similar to how:

    I might regret this later, once I find that comments and top-level items differ in some profound way. But for now I see lots of benefits:

    • The code for ranking comments would be largely shared with how LinkLonk ranks top-level items. So the comments will be prioritized if they were upvoted by people you trust (ie, people who previously upvoted comments you liked).
    • We could rank comments across all discussions in a special view.
    • UI and logic for submitting/editing text posts and comments will be shared.

    The reason I'm excited to implement comments on LinkLonk is that I'm curious to see if the personalized ranking of the discussion could help with some of the issues discussed in Tildes is pushing out the minority voice.
    I think part of the issue is that the "volume" of commenters is a fixed thing. No matter how knowledgeable they are. And thanks to the Dunning–Kruger effect we often find clueless people (even if well intentioned) taking up the medium. But what if we can tune the volume of the commenter for ourselves by downvoting useless comments and upvoting the useful ones? Would knowledgeable people be more likely to post their perspective if they knew that they could be heard by people who appreciate their perspective?

    You may say this sounds like a perfect "echo chamber". But there is only one way to find out!

    2 votes
  8. 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
  9. 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
  10. Comment on Tips to use NixOS on a server? in ~comp

  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. Comment on Statistics on bans and transparency in ~tildes