• 0 Posts
  • 19 Comments
Joined 1 year ago
cake
Cake day: June 5th, 2023

help-circle





  • Whoever thought it was good at coding? That’s not what it’s designed for. It might get lucky and spit out somewhat functional code sometimes based on the prompt, but it never constructed any of that itself. Not truly. It’s conceptually Googling what it thinks it needs, copying and pasting together an answer that seems like it might be right, and going “Here, I made this”. It might be functional, it might be pure garbage. It’s a gamble.

    You’re better off just writing your own code from the beginning. It’s likely going to be more efficient anyways, and you’ll properly understand what it does.






  • Ah sorry, just remembered I put my entire instance behind authentication except for the API endpoints required for federation. The comment I was linking to is in this thread. Just describes how all the info you need to properly transform the links is right there in the database records of the entities you want to transform, so this functionality can easily be added without much work.



  • It’s actually easy, here’s an explanation for one simple way you could do it.

    On my instance, this post has the URL: https://lm.williampuckering.com/post/171615

    On the instance the post originated on, the URL is: https://lemmings.world/post/175809

    So on my instance, the post has the ID: 171615

    On the originating instance, the ID is: 175809

    In the database on my instance, this query will retrieve the post: select * from post where id = 171615

    Also in the database on my instance, this query will retrieve the post: select * from post where ap_id = 'https://lemmings.world/post/175809'

    Using the second query and finding the post by URL, I can see if the post is federated to my own instance or not. If so, I can look at the id field in the database and merely swap it out with the originating instance’s ID, and form the URL to access the post as it exists on my own instance. If the post isn’t federated on my own instance, then of course this won’t work. But that makes total sense, since you won’t be able to transform links for external instances to the corresponding entity on your own instance, because it doesn’t exist there.

    tl;dr - You can look up local entities by ID, and you can lookup remote entities by original URL. Then you just need to swap the ID in the URL to the ID (primary key in the table) in the database, if it exists, to convert a remote link to a local link. If a link can’t be converted, you can just leave it as-is.

    The capability needed to add this functionality is already there. Someone just needs to decide how to handle it on the frontend elegantly from a UI perspective, and decide how the backend will pass what’s required to the frontend to drive the functionality. But the plumbing is already there.

    One practical way to go about this would be to add one or more API endpoints to transform remote entities (URLs) to local entities, if they exist. Whenever posts/comments/whatever are loaded into the client’s browser, Lemmy UI can have code that takes any links that match patterns for Lemmy entities, and use the API endpoints to transform the remote URLs to local URLs, if it can be done. For those that can be done, swap the remote URLs on the frontend for the local ones (at this point it’s essentially just find/replace). That’s one quick and simple way to do it that shouldn’t be all that performance-impacting. There might be more elegant and efficient ways I can think of if I put more effort into thinking about this, but that for sure would work and be a decent first-cut solution. You could even add a caching mechanism (or maybe even a new database table) to persist the mapping as it happens so that you don’t need to do it on each request for a given entity, only the first time. Also, doing it this way allows for content that is not yet federated to work if one day it becomes federated (ie. try to do this mapping or each entity, everytime, if it never works, until one day it does).


  • With all due respect, it seems like a janky solution to have a bot post public comments on request with transformed links specific to a given user’s own instance (that no other users would be likely to care about), just so that they can refresh the page and click on them… If something like this went into widespread use, threads would just become cluttered with comments containing transformed links, and I could see that being really annoying to other users who are trying to properly participate in discussion.

    Back on Reddit, I always thought the !remindme bot was pretty dumb. Certain threads would just be spammed with comments for the bot to pick up to remind that specific user on some date to come back and check the thread. We can do better than that here. It was a janky solution to something that was a problem best left to the end-user to manage separately (just set a reminder in your own calendar…).

    This is best left to client-side code in the form of a browser addon, or ideally, the Lemmy frontend itself.

    It should be trivial to make an enhancement to the official Lemmy frontend such that links to any other Lemmy communities/posts/comments/etc are transformed to the context of the user’s home instance. It could be a togglable setting in the user’s own settings, or maybe both the original link and the transformed link could be presented to the user on click (to accommodate both desktop and mobile browsing).

    I’m actually really surprised this isn’t already implemented given how simple it is to do.



  • I still have an active Netflix account (for the odd thing I haven’t yet added to my self-hosted Jellyfin instance), and actually downgraded from the Premium tier to the Basic tier a few months ago when they started cracking down on password-sharing here in Canada.

    Even though the Basic tier is “only 720p”, I barely notice the difference in quality since my TV (and a lot of other modern TVs) has built-in upscaling that works surprisingly well. And I’m the type that is really picky about picture quality, particular about codecs and encoding methods, and all that jazz. But I’m really happy that I managed to get onto the Basic tier before they removed it. I was prepared for a clear drop in quality in return for cost-savings, and I was okay with that, but was delighted to find nothing had noticeably changed after switching over.

    The Basic tier checks all of my boxes, verifiably:

    • 1 screen at a time is enough
    • The end result of the video quality I can perceive is perfect
    • Cheapest plan without ads

    Sometimes I even wonder if my TV is even actually upscaling from 720p, or if Netflix is just quietly serving 1080p in reality, but was just continuing to advertise 720p to deter people from the cheaper plan to get them onto a more expensive one, with plans all along to phase this tier out.

    My parents, who were previously sharing my account when I was on the Premium tier, ended up getting their own account also on the Basic tier. The net result is that Netflix makes less money off of the two of our accounts combined now compared to the single Premium account we shared before. So in the end, they ended up losing money, and we lost nothing of perceivable value.

    I’ll probably end up cancelling our account at some point entirely, and my parents can continue to use their own account without being affected, so the forced split actually saved us all money and made our situations more future-proofed.

    Contrary to popular belief, I actually think that the Basic tier could have ended up seeing more uptake in the long-run had people who only needed a single screen and wanted to save money, decided to try it, and notice that the picture quality was more than satisfactory enough, either due to the stream quality being better than advertised in reality, or due to the pretty good upscaling ability of modern TVs. I’m sure word would have gotten around from technically-minded people to the masses at some point, and we would have seen more people switching.

    I’m sure Netflix did away with the Basic tier because they knew it could realistically put a dent in their profits at some point.


  • wpuckering@lm.williampuckering.comtoFediverse@lemmy.worldwtf is happening?
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    17
    ·
    edit-2
    1 year ago

    I guess they don’t really know what they’re doing and are learning how load balancing works on the fly, and thinking that’ll result in HA without side-effects without further work.

    EDIT: Don’t really get why this was downvoted. With the proper technical knowledge it’s clear to anybody that two instances with different JWT secrets behind a load balancer is going to cause this very issue. So the fact that they set it up that way means they have a knowledge gap (“they don’t really know what they’re doing”). At the very least they should enable sticky sessions on the load balancer if they insist on going this route, which would mitigate the issue (but depending on client-side configuration would not necessarily prevent it completely).

    Don’t take this as an insult towards the admins of the instance, I’m just pointing out there’s a lack of knowledge, and some trial-and-error going on.



  • I run all of my services in containers, and intentionally leave my Docker host as barebones as possible so that it’s disposable (I don’t backup anything aside from data to do with the services themselves, the host can be launched into the sun without any backups and it wouldn’t matter). I like to keep things simple yet practical, so I just run a nightly cron job that spins down all my stacks, creates archives of everything as-is at that time, and uploads them to Wasabi, AWS S3, and Backblaze B2. Then everything just spins back up, rinse and repeat the next night. I use lifecycle policies to keep the last 90 days worth of backups.