• 1 Post
  • 19 Comments
Joined 1 year ago
cake
Cake day: June 29th, 2023

help-circle
  • It just makes too much sense… The only way to get past electron is a better electron. Or just fix electron

    We’ve been going after this concept for decades now. That’s what java swing was supposed to be, what python gtlk was supposed to be, and I’m sure there were others before that and there’s been a hell of a lot since then

    It’s all trade-offs between flexibility, ease of use, and performance. Also between maintenance cost, portability, and existing library support

    Electron is a good compromise. The execution could be better, but it’s come a long way. There is no one size fits all solution, but there are some decent options that handle that compromise differently


  • I’m split, but I lean slightly towards no. On one hand, it could be good for discoverability, and it would help my efforts to make a client-side algorithm

    On the other hand, it will make one of Lemmy’s problems worse - engagement. Some people will vote less, and it’s already feeling a little quieter around here as the numbers settled after the Reddit Exodus. I doubt it’ll be a massive change, but a .5% decrease in voting, permanently, could make a difference

    Ultimately, you can see it on federated platforms, so shrug



  • Well hey listen, I appreciate it. I would’ve spent who knows how long waffling between distos that I don’t feel drawn to, and even if I came across an atomic flavor, I probably would’ve just assumed it was marketing fluff

    Good ideas need advocates, and this is a good idea… It’s a promise of an OS I want, not just running from one I don’t

    I’m probably going to look at bazzite first. If I have containers that can run LLMs on my GPU, that checks off everything on my wish list except gaming. I’ll read up on it though, you’ve given me the context I need to care about learning more


  • Ok, when I googled it earlier I saw “containers and roll back to previous version” and I made a note to do more reading

    Your write up was good, much clearer than what’s on fedora and Wikipedia. And the fact you pitched immutable OS’s in general first caught my attention… The concept is a no brainer. Decouple the os and the rest of the software, and don’t bother digging into one of a kind conflicts when updating things - just make it rebuildable and create it fresh. You never know when the wrong bit will flip

    Nix’s “learn this one thing, configure it once, and you’re done” stuck in my head. And after a different distros, a couple lines installed Nvidia, Nvidia’s docker package and docker

    But then I had to configure WiFi and spend half an hour learning why I couldn’t mount an external drive and how to manage it… I still have no regrets, I’ve got a USB that should start converting my friends and family’s old PCs into a self organizing AI/self hosting cluster… Hopefully it works next month lol

    But not what I want in a daily driver. I want something that’ll quickly do what I tell it and gracefully handle the fact I have 6 versions of Java and no idea why I need a version from 2018 specifically. And that I’m going to add a repo to install something and instantly forget what I did if it seems like the best path forward at the time

    You’ve sold that pretty well - my takeaway was that atomic fedora is very modular and low side effect and also an interchangable foundation I can swap out and roll back easily… At this point, if it can run containers and the drivers I need, it sounds like a great option.

    I used to use VMs so every 6-12 months I could start clean with the latest and run setup scripts for my dependencies… It was just easier than debugging some conflict. This sounds even cleaner - I swap out the base at will, and the stuff I’ve built on it should stay intact. Plus it sounds much more testable

    So my main concern is will it run on an HP omen - it has zero Linux support and a bunch of concerning driver needs, but it does have a second m2 slot… What’s the worst that can happen? Except apparently some models forget they have fans in Linux and I just know the iGPU-GPU switch will cause some problem with sleeping… But Windows is only going to get worse

    Now that you’ve convinced me this might be the best course (I only see less problems than other distros would have), and I’ve talked myself into giving it a go, is there any recommended reading or key concepts I should look into? Any particular flavor(s) you’d point me to first?


  • Fedora Atomic a chance, it’s an extremely nice family of distros (e.g. Bluefin/ Aurora, Bazzite, etc.)!

    Can you elaborate on this? I landed on nix for my PC turned server and haven’t regretted it, but I’ve been hesitant to go all in on my main laptop (I’m wary of my laptop iGPU and GPU switching becoming a config issue, and I’m dreading having to configure my wsl dev environments again…)

    Windows is getting blatantly terrible enough I know I’m just putting it off, maybe a cool new technology might help make it sound more fun



  • Huh, I’ve never actually come across that, I’ve only gotten it indirectly. I bet my first mentor put it on in my head, the guy built out our entire system, then a v2, with one intern while the rest of us extended the framework he built.

    As long as the Lemmy API can be used as a de-facto standard

    And that’s the sad part… The Lemmy api is not only not that, federation is an API+ that gives an amazing starting point. As far as I can tell, the lemmy API was made with the official clients in mind, and everything else was an afterthought made in a hurry during the last Reddit Exodus

    I started reading through the kbin API, which starts with “here’s a link to activity pub standards, they’re surprisingly readable”. They were… It’s unwieldy in a lot of ways and maybe too all-encompassing, but they left so much on the table.

    For one, uri ids. Lemmy has them for everything (which is nice), but they aren’t directly usable. You can get the local ID for the home instance, but if I’ve got a url for lemmy.world I want to see on my instance, my only option is a search. Which should kick off federation, but what if it’s there already? I want an endpoint to resolve it (or even to tell me it’s not here right now so I can fall back).

    And the way they handled metadata is pretty awkward… They next objects inside of collections of activity data and object properties, which is annoying because it’s so inconsistent. Like, if you get a comment response, it gives you the comment reply, which is basically a comment without the usual metadata like vote count or the full actor object.

    It gives you too much, then suddenly too little - I don’t need the bio, tagline, and banner of a server every time I see a post, and I also don’t need it for the community and user

    But I do need the comment votes when I get a reply - I’ll wait on the comment chain and root post, but I don’t want to have to build a post-body only component to show while I wait to replace it with the whole thing

    I do really like that they autodoc everything… Even if a lot of it is indecipherable with no context offered. Like the honeypot parameter on getPosts… It’s actually intended to be a honeypot. Like if you set it to true, it’s supposed to not give you posts, or log you or something? I tracked down a one line confirmation on GitHub which left me baffled. I had to try it… It didn’t seem to do anything

    /Rant

    It is getting better though, the amount of completely breaking changes that pop up is very frustrating, but this time around it is significantly improved


  • I’d love it if the API that exists was more reliable… It’s getting better, but the amount of basic features that didn’t work (usually without specific combinations of params or unknown ranges, but sometimes not at all) is pretty crippling. (If there’s a central place of discussion, I’d love to hear about it…I don’t speak rust or flutter, but I’ve had to muddle through source several times)

    I’ve never done anything as a mod so I have no idea what kind of tools they need, but I noticed enough basic parts to build all sorts of things.

    There’s definitely no reason to build it into the core though… Why put it on the machine busy serving everyone? You could do stuff so much cooler if you offload it… Like you could track mod actions against users/communities/servers, give a sample of random posts across their vote distribution, show the top few communities they get down voted… All things psychotic to even consider in the core right now, but a reasonable project for a separate system

    And since you seem like you’d get it, I want to share a win I made today. I’ve got a lemmy app I want to mix feeds (including between accounts and servers) to make a unified feed algorithm on your device. I also want it to support kbin, and maybe more… I took a couple cracks at it and charted out several designs, but I was getting too deep into abstraction.

    Today, I finished working on a ridiculously generic abstraction layer - it handles not only tracking pagination, buffering, and preprocessing, it also enumerates all of the options in the Lemmy sdk so I can auto magically build most of the controls when I update. It also disambiguates resources (and actors) across instances and could describe valid actions you can take on it (I think that might be too far, so I’m resisting the urge… This time)

    Everything is done through the account level, everything knows where it came from and can call the API by passing itself to its account to be worked on. It’s also neatly serializable, you just have to write one function to pull the next page, and the rest is just an absurd amount of generics

    Now, if I can figure out how to translate all that into a usable UI, I’ll be getting somewhere…

    I just had to share that with someone who can appreciate crazy data flow, it’s been in the back of my head for months and today (after pulling my hair out for an hour and realizing I was forgetting to actually pass the posts to the UI) it worked beautifully


  • I like to think of it like this - many hands makes for a very stable project. Stable as in reliable, but also stable as in resistant to change.

    Everyone is going to pull in a different direction, and it kind of averages out and slows things down.

    Right now, lemmy is extremely immature. It’s amazing how well it’s held up really. There’s a lot to go to get to a solid baseline - just enough to keep

    If everyone dogpiled it, someone could easily solve the image problem. Granted, that might block someone else working on the database, and changes to improve or extend federation would likely be set back as they step on each other’s toes.

    We could still probably quickly get popular features quickly… For example, one person could get more useful mastodon and kbin federation going in a reasonable period of time. But then, when the core team goes in to overhaul the database or the API, now they need to make sure they don’t break it - and the person who did those changes won’t have the same vision as the core team, and now you have to either refactor the whole thing or work around it until it’s causing too many problems

    Certain things can be spun off more easily than others - I think other people have totally taken over deployment of instances.

    Some are good candidates but require more maturity - like if they handed off jerboa and the default web client, there’s one place that would need to be reinforced - the API.

    Way down the road, they could build plug-in/mod interfaces so instances could choose feed algorithms, or individuals could come up with their own karma systems, or all sorts of other things.

    To get to that point, you have to have a clear vision and stable growth though - that takes time, and is better done by an individual or small team keeping things heading in one direction




  • I’m running nix on my PC turned server, and there’s definitely a lot of advantages…I highly recommend it for people who can pick up languages easily and prefer fixing a problem once by brute force trial and error.

    Doing easy things is much harder, but doing hard things can be laughably easy

    I probably wouldn’t pick it as-is for my primary PC, but for a server? Amazing.



  • You can spin up your own server… That’s what the fediverse is.

    The freedom to do whatever you want as an admin, and the freedom of choosing another server where you’ll still be part of the network

    Meta/Facebook threatens this, because their user base dwarfs the rest of the fediverse. They’re also running their own closed source server code… They can gatekeep their own federation

    I would love it if companies joined the fediverse, but like, by making instances. Maybe even use it for their internal Intranet. Maybe they could add federation compatible APIs to their existing software

    I don’t want a massive social network company to use their position to make a new social network…

    Federation is like Bitcoin or Tor - it’s decentralized, until one org becomes too large… At that point, they can control the network in countless ways




  • I had a contract come up and had to shelve this for a bit, and your comment immediately annoyed me, because it really isn’t what I wanted to hear

    But it also stuck with me because it sounded like the advice I throw at new devs starting a project, knowing it’s a PITA up front, but pays dividends pretty quick.
    So I looked it up, and despite my bad experiences with docker and kubernetes (I was tasked with doing weird, off label things with them and it sucked), I’ve decided to take your advice and stop looking for docker workarounds

    And since it seems like it comes from a place of experience, I figured I’d share a bit more about what I want to do and see if you had any more advice

    Basically, I want to link together basic models trained to do different things, with the end goal being something between a conversation partner and an assistant. The idea being I build very specific prompts to bypass the limitations of smaller models - the first goal is to take one LLM and a conventional management program and summarize key information, then use very specific structured prompts to generate a response to be vocalized and metadata that changes the state of the management system.

    My thought is to take something like alpaca or falcon 7B to track and summarize relevant information, feed it into another such model trained as a conversation partner with this input and output format, then throw together a web interface and do text<->speech on my phone or dev computer.

    When it comes to neural networks and LLMs, I have a good understanding of the theory of them and a great one of how brains work, but I’m mostly looking to use these systems as a black box initially. My initial goals are to generate dialogue trees for games and maybe practice my Spanish with a chatbot - accuracy and capabilities don’t matter too much, I’ve played with projects that could do this by just sending prompts to an endpoint

    Down the road, the goal is to have something extremely modular. This tech is moving fast and I envision linking a bunch of modules together to perform different tasks, and as better modules come out or I add/upgrade hardware, I want to be able to write something to act like autopilot in my ide or pilot a model in a game engine

    The main objective is to learn and to run agents on my own hardware. I’m looking for a side project that will be useful enough to keep up my interest, but also give me a starting point to modify from so I’m not sitting at a python terminal forcing myself through a tensor flow course before I get to the good stuff

    Any thoughts, advice, or projects you think I should know about when starting this journey?