HN user

gary-kim

93 karma

Email: gary@garykim.dev GitHub: https://github.com/gary-kim

Posts2
Comments32
View on HN

You can enable tab complete for Git including for branch names.

I don't know how I would live without that. I tend to make rather verbose branch names and typing it all out stuff like push would take forever.

Though, you have a much more fun solution.

To add onto this, I have been using Libreoffice Online or Collabora Online for the last 4 years or so. I used to compile LOOL myself but eventually I just switched over to using the Collabora Online Development Edition that Collabora releases. I am using it integrated with Nextcloud.

I enjoy using it and it has been a life savior for the times I need to work on a document with someone else since I can just send them a share link for it. The fact that it uses leaflet which is meant for maps does mean that the latency to the server matters quite a lot to experience but I don't mind that much, personally, with my not great 120ms RTT to my server.

A change in your repo does not need to result in an import path change if you set up vanity URLs for your import path. For instance, all my go libraries use the import path of gomod.garykim.dev even though the repos are actually hosted on GitHub. That means if I ever change to self-hosting, for example, I just need to update some of the meta tags on the gomod.garykim.dev website to change the repo location.

I've been running a Matrix server for a half a year and I have not run into any problems. The main thing that surprised me was how much database space Synapse took on my server but that was an easy enough issue to deal with. That may also have to do with the fact that I'm in some of the most complex rooms that exist on Matrix.

I tried running a XMPP server for a bit but that was a rather frustrating experience between getting it to integrate well with the rest of my infrastructure, figuring out what configuration was needed and what XEPs were needed, what clients had the features I needed, what clients supported the OSes I used, and spam. To be fair, the reason I thought setting up Synapse was extremely easy may have been because I did it with almost twice as much experience with devops than I had when I tried to setup the XMPP server.

Regarding registering with a central authority, you're probably thinking of identity servers. Identity servers are used to provide 3PID (email/phone number) -> Matrix ID mappings and are completely optional. There have been attempts to decentralize that as well but for one reason or another, no good way to do it has been found. At least the source code of the identity server is open source[1] so there is that.

Otherwise, to set up a Matrix server, you simply have to either set up a json response from "/.well-known/matrix/server" or an SRV record on DNS that points to the Matrix server.

[1] https://github.com/matrix-org/sydent

I'm using a .dev domain name as my primary email address and in the last few years of using it, I have only run into one website that did not support it properly. I ended up using my .com email alias for that website.

Adding on to this, I personally have improved versions of open source software projects that I just forked for personal use because pushing the improvements upstream would mean having to sign a CLA which is something I am completely unwilling to do.

It is possible that the lack of useful contributions is due, in part, to a CLA being required.

It is important to consider, though, that the reason flying is extremely safe is because we do freak out about everything that goes wrong in aviation. Commercial aviation is one industry in which there is a strong correlation between safety and profitability so the industry does freak out over every problem.

Of course, it's a balance, and the balance that commercial aviation has found is heavily focused on safety.

I lived in Singapore and while I was there, I used MyRepublic's mobile plans. The plan I was using was $24(SGD) a month for 17G. Rarely had connectivity issues though for the most part, I stayed in the more populated areas so I may not have had the same connectivity issues as you.

One of the nice things was that each telco would keep changing their plans to be better and better so it paid to pay attention and change plans whenever a better one came along.

Wiki.js 6 years ago

Main guy commiting 600k lines and the second most committed guy 450 lines.

So yeah, it wouldn't take him a whole lot of time if he really wanted to change the license by removing all the others' commits and rewriting it by himself.

Good point. I may try to get involved in its development as well to spread that out a little more.

Also, what does AGPL has anything to do with keeping the license open sourced?

The AGPL requires that any code linked to it also be distributed with an AGPL license (the difference from the GPL being that hosting over a network counts as distribution). Every part of the project is technically linked to itself so if someone makes a change, no one else can use that change in the project under a different license.

Wiki.js 6 years ago

At least for me, the fact that it is purely licensed under the AGPL and that the copyright is owned by multiple people makes me far more comfortable with using it. It's a guarantee that the project will remain open source so I don't have to worry about suddenly being in a situation where I have to migrate away because the company or person decided that they don't want to have this be free and open source software anymore.

I guess, to a certain extent, that's because I'm an individual, not a company, and one that tends to open source pretty much everything they write. This is the same licensing that I use for pretty much all my projects (AGPL with no CLA).

This is actually the situation I'm in. Google Play Services are disabled on my device so I cannot use any YouTube premium features anyways.

If there was a way to pay for YouTube premium and make the money go to the creators I watch while using a FOSS client like NewPipe, I'd be willing to pay several more times the current price of YouTube premium for that.

I believe the F-Droid version is currently one patch behind. You can actually add https://archive.newpipe.net/fdroid/repo in F-Droid as a repository and you'll get the updates for NewPipe a lot faster.

I actually ended up going down a different route and created my own F-Droid repository for NewPipe and a couple other apps so I could get faster updates for them and I trust the upstream developers.

https://garykim.dev/blog/2020/04/14/personal-f-droid-reposit...

I'm a Gitea maintainer and I still do most things on GitHub rather than my self-hosted Gitea instance because a lot of open source projects as well as the people willing to help with them are there. Overall, your project tends to get more attention and contributions if it's on GitHub.

Now, we can discuss about whether or not that's a good thing and the quality of the kind of contributions you tend to get because of the lower barrier but GitHub, at least currently, still has a place in the workflow of a lot of people.

What you propose would also be really awesome. A feature like this in Gitea could be really nice. If you'd like, you can open an issue on the Gitea issue tracker [1] for the feature.

[1] https://github.com/go-gitea/gitea/issues/new/choose

Collabora Online is Collabora's branded version of LibreOffice Online. They also have a version they call Collabora Online Development Edition that you can find here for personal use: https://www.collaboraoffice.com/code/.

There is no stable edition of LibreOffice Online but you can find a daily build of the master branch for Docker at https://hub.docker.com/r/libreoffice/online.

Both LibreOffice Online from Docker Hub and Collabora Online Development Edition have a configured limiation of 20 connections for 10 different doucments so personally, I'd recommend building from source. You can find the source code for LibreOffice Online here: https://git.libreoffice.org/online.

I suspect the lack of a stable version of LibreOffice Online is intentional as a way to try to drive more business towards companies such as Collabora.

I remember learning about Kubernetes for the first time. Thought it sounded cool so I started looking into how to make my own cluster. I think every other tutorial was like: "next, go to CLOUD_PROVIDER and sign up for an account to make a cluster".

I'm trying to look up how to make my own cluster, not use someone else's. Figured it out eventually but it took way more searching then for learning how to use k8s.

I'm using CState for my status page [1] which gets built from a public git repo on GitHub by CI and pushed.

It's been a nice way to let the players on the Minecraft server I maintain know when migrations/upgrades are planned and downtime.

I'm still looking for a system to send people emails about downtime and planned migrations but I may just switch to Cachet for that part. Maybe there's a self-hosted way to send emails from the RSS feed in a way that allows people to easily subscribe and unsubscribe? I'd be happy if anyone has any recommendations.

[1] https://status.garykim.dev

With regards to VS Code, there is some, although I'd say not much, lock-in into specifically the Visual Studio Code version of VS Code. Namely, many of the Microsoft extensions only working on the proprietary Visual Studio Code and not the open source VS Code. That does function to negate some of the no lock in benefit of open source.

I don't personally think that Microsoft is attempting EEE here but just bringing up the point that it is, to a certain extent, made hard to fork.

- https://github.com/VSCodium/vscodium/blob/master/DOCS.md#pro...

- https://github.com/VSCodium/vscodium/issues/240

There are defiantly benefits from having the source code when it comes to being able to verify that the implementation does in fact match the specification. Sure, reverse engineering the binary would be possible but far more difficult. Reading open source code is far easier than reverse engineering. (Added in edit: From what I've read, the spec itself doesn't seem bad. The point is, assurance that does not require trust in another entity that the spec was implemented as written would drastically improve the confidence in the system.)

I have compiled some of the apps on my phone myself so I know that the result does in fact come from the same source code. That may not work in the case of iOS devices, though.

And you always have the closed source blob of whatever BTLE chipset your device uses which you can mistrust.

That is a good point and it'd be great if that chipset could also be open sourced but one step at a time.

That would be true even if Apple suddenly decided "oh these folks on HN want to see the code for that tracing component, better open source our complete OS".

You are correct if it was simply open sourcing the OS. If it was possible to compile and install the OS ourselves, that would completely change the game.

There's actually an issue[1] open for implementing Cryptomator encryption support in Rclone.

I use Rclone on my Android device through Termux[2] which works pretty well. Termux includes Rclone in its repo[3]. I just set it up to `serve webdav` then access it through my file browser app which includes WebDAV support.

* [1] https://github.com/rclone/rclone/issues/1647

* [2] https://github.com/termux

* [3] https://github.com/termux/termux-packages/tree/master/packag...

I'm an occasional contributor for Rclone. Rclone holds a special place for me as the first open source project that I got seriously involved in and made me far more comfortable with working in open source.

Rclone is now very prevalent in my infrastructure. Almost all my websites are updated by a CI job that builds the website from a repo and pushes it up to the hosting server. There's an encrypted Rclone config in the repo and the password for it is a really long randomly generated string that gets saved in the CI as a secret. Rclone with Restic is how most of my servers get backed up, Rclone is how I access my Nextcloud and Google Drive, I have a containerized s3 compatible storage system that actually stores it's data on a Rclone remote (I hope `serve s3` gets implemented soon this setup can be simpler [1]), and much more.

I'm using it so much that I'm running up against the Google Drive API limit even though I'm using my own key.

* [1] https://github.com/rclone/rclone/issues/3382

Personally, the command I use is this:

  # Replace `/dev/video2` with the dummy video device added by `l4v2loopback`.
  ffmpeg -re -listen 1 -i rtmp://127.0.0.1:5050/ -c:v rawvideo -an -pix_fmt yuv420p -f v4l2 /dev/video2

After starting ffmpeg, you set up OBS to stream to a custom streaming server at`rtmp://127.0.0.1:5050` and start streaming.

It's not very efficient and there's a delay since OBS is encoding with h264 then ffmpeg is decoding that. It's not too bad for me because I can use the NVENC encoder but I'm sure there's a way to get OBS to stream raw video somehow.

I'm doing something similar on Linux, although a bit more complicated.

I'm using v4l2loopback [0] to create a dummy video device, ffmpeg to create a stream endpoint that streams into the dummy video device, then setting up OBS to stream to localhost.

It is actually really nice to have the capability to fully control what is going in to the video input.

I haven't run into a need to also change the audio input yet but if it becomes necessary, it should be possible to set up loopback with ALSA.

[0] https://github.com/umlaeute/v4l2loopback