[-] SinTan1729@programming.dev 2 points 5 days ago

Fair enough. I'm not a professional programmer, so I guess I won't understand your frustration with long term maintenance of Go code. I do agree that it can be unnecessarily verbose. Writing something as simple as an http server takes a long time. Also, the dependency management sucks. It can't seem to decide if it wants to be declarative or not.

I do like that it's dead simple though, and that the standard library has most of the basic stuff. I've mostly replaced the need for Python with Go, for small CLI apps. Nowadays, I only use Python when I have to use some specific library, mostly for mathematical computing.

[-] SinTan1729@programming.dev 2 points 5 days ago* (last edited 5 days ago)

Yes. IIRC, the flavor that I used was MSWLogo.

[-] SinTan1729@programming.dev 3 points 5 days ago* (last edited 5 days ago)

I don't think there's an std-way of doing it, but the Rust ecosystem has this thing where people usually settle around one library. In this case, it is tokio. Afaik, most async stuff is done using tokio. What little async I've used, it's been using tokio or some library like actix-web that uses tokio under the hood.

Also, side note, I never understood the idea of why golang is ugly. I think it's fine, except for maybe the repeated if err != nil guards. Those are ugly. I wish it used additive types for error handling.

[-] SinTan1729@programming.dev 7 points 6 days ago* (last edited 6 days ago)

I've always preferred the functional approach to programming, so OOP never really intrigued me. That's one of the reasons why I never liked C++ or Java, but instantly fell in love with Rust. It lets me do a lot of functional style programming, while still being somewhat practical. (I'm looking at you, Haskell.)

[-] SinTan1729@programming.dev 57 points 6 days ago* (last edited 6 days ago)

My first ever big boy language was C++ (after Basic, and Logo, does anyone remember that lol). I was in middle school, tried to self-learn from learncpp.com, only to realize that I had mostly learned C, with cin-cout instead of printf-scanf. So I just decided to migrate to C. Nowadays, I mostly code in Rust, Go, and Python. But my experience with C has been extremely helpful. Can't say the same about C++ though.

[-] SinTan1729@programming.dev 5 points 6 days ago

My first ever big boy language was C++ (after Basic, and Logo). I was in middle school, tried to self-learn from learncpp.com, only to realize that I had mostly learned C, with cin-cout instead of printf/scanf. So I just decided to migrate to C. Nowadays, I mostly code in Rust, Go, and Python. But my experience with C has been extremely helpful. Can't say the same about C++ though.

5

This patch creates and managed collections using Calibre custom columns. I've set up my Calibre to create collections based on that on my Kobo's stock interface. So, I decided to replicate that on KOReader as well.

This is my first KOReader patch, so any feedback is welcome.

Check out the README for details.

41
submitted 1 month ago* (last edited 4 weeks ago) by SinTan1729@programming.dev to c/selfhosted@lemmy.world

This release brings three main changes.

  1. The ability to filter links.
  2. Support for an optional notes field.
  3. Ability to edit expiry time and notes.

I try not to too many new features to avoid bloat, but it seemed like these were pretty useful for a link shortener, especially when managing thousands of short links. (To my surprise, some people even use it to manage millions of links.)

Please take a look at the release notes for a complete list of changes.

P.S. The next thing I'll be focusing on is improving throughput under sustained load. If anyone has experience with SQLite, feel free to drop any tips. All the db related code is here. I'm mostly interested in improving insert speeds when 1000s of inserts are done per second.

Edit: There's a Codeberg mirror as well.

4
submitted 1 month ago* (last edited 1 month ago) by SinTan1729@programming.dev to c/haskell@programming.dev

Hi, I'm a beginner when it comes to Haskell, but I guess I'm somewhat comfortable with the language itself. I'd love to try building some stuff using it. However, I'm finding it very hard to properly use external libraries/packages.

I'm familiar with Rust's cargo, and go's package management system, and feel very comfortable using them. Are there similar ones for Haskell? Basically, I want them defined per project, and not have to install everything system-wide. I'd like to be able to provide users with simple instructions for replicating the whole build setup.

What's the idiomatic way? Are there any example packages that I can look at that are not too complicated?

35
submitted 2 months ago* (last edited 2 months ago) by SinTan1729@programming.dev to c/programming@programming.dev

As the title says, it's a rather simple golang script for creating memories in Immich based on certain criteria, since there aren't any customization options in the official app.

As you may gather from the README, I created this for very personal reasons. But I wanted to share it here in case someone else finds it useful as well.

Currently it can do filtering based on people, and tags. But I'm more than happy to add more options, if requested.

16
submitted 3 months ago* (last edited 3 months ago) by SinTan1729@programming.dev to c/cooking@lemmy.world

I had looked for selfhosted recipe management apps for a while, but none really fit my need. I liked WikiJS a lot, but it was a hassle to get recipes on to it since there's no tooling for scraping from sites.

So I decided to create a python tool that does the scraping. It's finally in a state where I can share it with others. Of course, it's meant to be used only for archival purposes.

You can see some recipes created with it on my wiki.

Any feedback is welcome. I hope that this is the correct community for this. Given how pro-selfhosting lemmy is in general, I thought this might be welcome here.

[-] SinTan1729@programming.dev 22 points 4 months ago

There IS one of these for everything, eh?

80
Rust bad Jai good (github.com)
submitted 6 months ago* (last edited 6 months ago) by SinTan1729@programming.dev to c/programmer_humor@programming.dev
[-] SinTan1729@programming.dev 19 points 7 months ago

KDE is great but do give some "better" distros like Fedora, or EndeavourOS (basically Arch) a try. Canonical, the company in control of Ubuntu, is a little bit shady.

[-] SinTan1729@programming.dev 17 points 7 months ago* (last edited 7 months ago)

Everyone has listed a lot of reasons, and there's also https://manjarno.pages.dev/ which pretty much sums up all the technical reasons.

I'd just like to add why I switched. I used Manjaro for a couple of years, and suggested it to friends and family for a while. It was fine when it worked. But when it didn't, it was a pain to figure out wtf was wrong. Their forum wasn't helpful, and you can't get help in the Arch forums, because it's just different enough. Also, whenever something broke, their logic was always backwards. Like SSL broke for the 5th time, just roll back your clock guys. It felt like being in an abusive relationship with a distro.

I finally switched to EndeavourOS some 4 years ago, and it's been very smooth ever since. In fact, I've had a good experience with pretty much every distro that I've used long term (e.g. AlmaLinux, Debian, Fedora, and even Ubuntu), except for Manjaro.

27

cross-posted from: https://programming.dev/post/39212874

I recently migrated my services from rootful docker to rootless podman quadlets. It went smoothly, since nothing I use actually needs to be rootful. Well, except for caddy. It needs to be able to attach to privileged ports 80 and 443.

My current way to bypass it is using HAProxy running as root and forwarding connections using proxy protocol. (Tried to use firewalld but that makes the client IP opaque to caddy.) But that adds an extra layer, which means extra latency. It's perfectly usable, but I'd like to get rid of it, if possible.

I'm willing to run caddy in rootful podman if needed. But from what I understand, that means I can't have it in the same rootless network as my other containers. I really don't wanna open most of my containers' ports, so that's not an option.

So, I'm asking whether any of these three things are possible.

  1. Use firewalld to forward ports to caddy without obscuring the client's IP.
  2. Make rootful caddy share a network with other rootless containers.
  3. Assign privileged ports to caddy somehow, in rootless mode. (I know there's a way to make all these ports unprivileged, but is it possible to only assign these 2 ports as unprivileged?)

Or maybe there's a fourth way that I'm missing. I feel like this is a common enough setup, that there must be a way to do it. Any pointers are appreciated, thanks.

7
submitted 8 months ago* (last edited 8 months ago) by SinTan1729@programming.dev to c/containers@lemmy.world

I recently migrated my services from rootful docker to rootless podman quadlets. It went smoothly, since nothing I use actually needs to be rootful. Well, except for caddy. It needs to be able to attach to privileged ports 80 and 443.

My current way to bypass it is using HAProxy running as root and forwarding connections using proxy protocol. (Tried to use firewalld but that makes the client IP opaque to caddy.) But that adds an extra layer, which means extra latency. It's perfectly usable, but I'd like to get rid of it, if possible.

I'm willing to run caddy in rootful podman if needed. But from what I understand, that means I can't have it in the same rootless network as my other containers. I really don't wanna open most of my containers' ports, so that's not an option.

So, I'm asking whether any of these three things are possible.

  1. Use firewalld to forward ports to caddy without obscuring the client's IP.
  2. Make rootful caddy share a network with other rootless containers.
  3. Assign privileged ports to caddy somehow, in rootless mode. (I know there's a way to make all these ports unprivileged, but is it possible to only assign these 2 ports as unprivileged?)

Or maybe there's a fourth way that I'm missing. I feel like this is a common enough setup, that there must be a way to do it. Any pointers are appreciated, thanks.

115
submitted 9 months ago* (last edited 9 months ago) by SinTan1729@programming.dev to c/selfhosted@lemmy.world

This release adds the ability to edit existing links, show and download QR codes for easy sharing, and various improvements in the frontend. Check out the release note for a list of all changes.

16
submitted 10 months ago* (last edited 10 months ago) by SinTan1729@programming.dev to c/jellyfin@lemmy.ml

It's mainly meant for episodes where TMDB doesn't have the information on release. I'm using it with a cronjob so that it keep trying until there's metadata available.

[-] SinTan1729@programming.dev 23 points 10 months ago

I develop open-source code. But that never made me one of the “I hate proprietary software or IT giant corporations” types.

Maybe it should've.

10
submitted 11 months ago* (last edited 11 months ago) by SinTan1729@programming.dev to c/neovim@programming.dev

I simply want to emulate the effect of -p by default i.e. open all files in tabs when multiple files are supplied. I wrote the following autocommand to make it work.

-- Open files in tabs by default
vim.api.nvim_create_autocmd("VimEnter", {
    callback = function()
        if not vim.opt.diff:get() and #vim.fn.argv() > 1 then
            vim.cmd("tab sball")
            vim.cmd("tabfirst")
        end
    end,
})

But it seems to bork the colorscheme for all but the first tab. It's weird since Running the same commands manually after neovim is loaded works perfectly. I may have something to do with the order in which things are run. Is it possible to run this command as late as possible?

I'm open to alternative approaches that gets the job done.

[-] SinTan1729@programming.dev 19 points 1 year ago* (last edited 1 year ago)

Storage, RAM, CPU usage. I prefer not to have such a large piece of software running for no reason. It might seem silly, but I hate using resources for no reason. I'll rather have 5 lightweight apps running instead of a huge one, of which I'll only use a few parts.

69
submitted 1 year ago* (last edited 1 year ago) by SinTan1729@programming.dev to c/selfhosted@lemmy.world

I thought of this after a recent trip with some friends. We shared the photos when we were still in person. But sometimes we need to share a lot of photos over the internet. In the past, we have used a shared google drive directory for this. But I'd prefer a self-hosted option. There should be some sort of password protection as well (ideally per share, and no need for accounts). One should be able to both access the current files and upload new ones, just like google drive or dropbox.

I currently have FileShelter, which works for 1-to-1 sharing but not for groups. I guess something like ProjectSend would work, but it's too complex for my usecase. I'd prefer something more lightweight since I'll maybe use it once every few months. Also, it should be noob-friendly, and accessible using a browser.

Update: I'm very happy with copyparty. It does what I want, and much much more. I even replaced my older webdav server with it since it provides more granular control over share locations and permissions. Kudos to the developer @tripflag@lemmy.world!

view more: next ›

SinTan1729

joined 1 year ago