this post was submitted on 19 Jul 2023
13 points (100.0% liked)

Golang

2201 readers
2 users here now

This is a community dedicated to the go programming language.

Useful Links:

Rules:

founded 1 year ago
MODERATORS
 

cross-posted from: https://lemmy.ml/post/2230752

I really like seeing people's interesting projects. Even if they are generic or were started just to learn something.

And on top of that, I consider Go to be one of those languages that you can find projects on a pretty diverse range of topics.

So, is there any interesting (or not too) personal Go projects that is in the making, or is already finished?

all 11 comments
sorted by: hot top controversial new old
[–] [email protected] 4 points 1 year ago (1 children)

Because it's relevant and I'd love to see Lemmy get more popular, I'll post olowe.co/lemmy which provides a Client to the Lemmy HTTP API.

A little unusual is that I created a filesystem interface using io/fs. See FS. I used that to create an alternative Lemmy frontend for a kinda obscure text editor I use. See https://lemmy.sdf.org/post/1035382 For example the comments of that post are available at the path:

[email protected]/1035382/comments

Only a small amount of the Lemmy API functionality is implemented but I'm filling it out slowly. Any patches appreciated ;)

[–] [email protected] 2 points 1 year ago (1 children)

cool client! that filesystem interface looks easy to implement for other APIs, neat!

[–] [email protected] 2 points 1 year ago

Yeah it's good fun! For a good intro to the package, see the video [io/fs draft design] by Russ Cox. [io/fs draft design]: https://piped.video/watch?v=yx7lmuwUNv8

[–] [email protected] 4 points 1 year ago* (last edited 1 year ago) (1 children)

Hey, I'm happy to share with you a project I've been dedicated to for the past few months: Fox.

https://github.com/tigerwill90/fox

Fox is a lightweight HTTP router that provides an API similar to well-known projects such as Gin and Echo. But Fox has a unique strength: it supports mutations on its routing tree at runtime, while concurrently handling requests. It accomplishes this using a Concurrent Radix Tree, which supports lock-free reads and concurrent writes.

It is especially designed for applications that require changes at runtime to their routing structure based on user input, configuration changes, or other runtime events but it's also suitable for other use cases. The routing rules are relatively flexible, and in most scenarios, Fox outperforms Gin in terms of performance.

While the project is not yet at v1, I've already put it to the test. At my workplace, we use Fox for our main API gateway, handling millions of requests daily.

I'd love to get your feedback and insights, so please feel free to check it out and let me know your thoughts.

[–] [email protected] 2 points 1 year ago (1 children)

Cool project! That readme gives me a "I like your funny words, magic man" reaction, but I know it's just because I am not that much into networking and concurrent stuff lol

Those benchmarks already speaks for themselves, and the fact that you are using it in your workplace already shows the awesomeness of your project :)

[–] [email protected] 2 points 1 year ago

Thank you for your kind words! I completely agree that the README might be a bit unnecessarily heavy on technical jargon. I appreciate you pointing that out - I will work on making it more comprehensible.

[–] [email protected] 3 points 1 year ago (1 children)

I would like to point out my project as well:

simpleutils, a small alternative coreutils package. It's the only actual Go project I have right now and it's nothing impressive, but I really am enjoying making it. It's been a blast seeing it being useful in my day-to-day life as well.

It's supposed to have simple and easy to read code, so that you can easily hack and modify for your own needs :)

[–] [email protected] 2 points 1 year ago

It looks really nice, and the code is very clean. I will try it on Windows.

[–] [email protected] 2 points 1 year ago

Not a big, fancy project, but over the past couple days, I put together a configuration file for Karibiner Elements (Mac software that lets you rebind your keys at the OS level) to allow you to type with just your left hand, using spacebar, caps lock, and the touchpad as modifier keys: https://github.com/DanHulton/Karibiner-Carpal-Tunnel-Right

I've been experiencing some carpal tunnel in my right hand, and wanted to avoid using it. That's hard when you have to type all day, but with this config file, I can! (albeit much, much slower.) Since Karibiner config files are just json, editing them directly can get heinous, so I wrote a small Typescript program to take a simple mapping and turn it into a config file in the correct format.

(Why no right-hand config? There's already an alternative keyboard layout that just mirrors the keyboard, and right right side has more keys -- so you can use that mirror config just fine if you want to avoid using your left hand, but trying to avoid using your right hand means you need more modifiers to get even just the basic keys correct.)