This week's #FOSSFriday project I want to share is Wails:
https://github.com/wailsapp/wails
Instead of using bloated Electron, you can write desktop applications with #GoLang for the backend and Web technologies of your choice for the frontend!
I love Jetbrains’s IDEs. But I like the idea of having a personal software stack that’s different to my work stack, so I can test IDE’s on personal projects!
I’m currently trying to be friends with VS Code on my personal laptop.
Anyone else like to keep work tech profiles separate from?
Got Cobra working in Go for my db2xlsx project which exports a MySQL / MariaDB database structure to an Excel file.
Benefits:
Simplifies the parsing
Allows for sub commands
Supports mandatory arguments
Three issues closed as a result, and I'll be able to tackle two of the others based on the groundwork laid.
TinyGo team member @whittileaks has an awesome video featured in the latest Golang Weekly about reviewing some code for a GPS/GSM driver. Check it out!
Automate Go performance profiling by collecting all pprof data in one command and enabling easy performance comparisons between benchmark run
#golang
This is another prototype where I'm putting together some of the earliest optimised canvas drawing I had written for the first Deluxe Draw version (last month), I replaced the bespoke hardcoded GUI elements with Deluxe UI widgets (newly written, in the last couple of weeks), and re-implemented parts of (last week's) ZX Draw code example I had written for Deluxe UI.
In theory, if this experiment succeeds, I should be able to deliver a Deluxe Draw that is able to work with both, modern layered pixmap painting, and with old ZX Spectrum mode painting. And with Deluxe UI running unmodified on Mac, Linux, and Windows!
So far, so good!
Wanted to try out GoToSocial. Can't even deploy it using Docker because of: error creating instance account: sqlite3: SQL logic error: table accounts has no column named memorialized_at
I'm really not in the mood to troubleshoot it or fix the bug
@dolanor Apart from time.Parse() and time.Format() (both of which I mostly avoid) I must admit I've never come across much US-centricity and generally found the time package pretty solid.
As an alternative to time.Parse() I use regexp as the failure mode of time.Parse() is inscrutable.
I think I won't accept any people whining over Go time API anymore.
I'll just link them to that.
(and I'm personally pissed about Go time API because of the ass-backward US style order of day/month. Otherwise, I like the idea)
@sudorandom You also raise an interesting question around whether abstracting #go #golang concurrency primitives is a good thing.
I have mixed thoughts about this since it's hiding a hallmark of #go and developers not having a fundamental understanding of those capabilities worries me.
I also have mixed thoughts because I too am guilty of offering concurrency abtractions, but at a much higher level with https://github.com/markdingo/parallel
@sudorandom It's all very well that Errgroup constrains concurrency, but it leaves you with the problem of what to do if TryGo() returns false.
This seems like a nasty edge-case where you have to resort to your own queuing or pooling or mutex management. This seems like its the raison d'état of Errgroup yet it punts the problem back to you at the most crucial of times.
I'm not a big fan of punting edge cases back to the consumer as that's worse complexity for them than exposing concurrency for them to deal with as a matter of course.
I agree that carrying around a context is pretty useful.
@sudorandom I must admit I struggle to understand the benefits of errgroup. Seems overly complicated for what it does.
If you just want a multierror, why not use a sync.Waitgroup and have all your goroutines append their error to a mutex protected array? After waitGroup.Wait() your array is your multierror.
I really want an errgroup implementation that can run all "jobs" to completion and will return all errors as a multierror.
I was about to complain about errgroup not being in the standard library, but I feel like it needs one more feature before being "ready"
My golang knowledge is pretty basic. I had to do some updates to a product at work, and it was pretty easy and straight forward. Actually quite fun. Just to learn more golang, I started working on a cli-tool for my Niri setup, and it's actually pretty usable already.
I just want to polish it and clean up the code a bit more before publishing it. Also, since I'm not that good at the language yet, I'm totally not sure if I even do things correctly or the 'golang' way.
Any tips on which pre-commit hooks people usually use? I found one repo that has pretty much everything, but I always welcome alternatives.
I was also thinking about go-semantic-release to handle the package releases.
I know, this is probably quite overkill for a simple project, but hey, I like to learn and do things correctly!
What if you could build your own multiplayer virtual world?
GoMud is a free, open-source engine for making text-based online games using the Go programming language.
I talked with the creator, Volte6, about the project & how it works. He shared a playtest where things went hilariously wrong (in the best way):
https://writing-games.com/gomud-a-lightweight-engine-for-building-text-based-worlds/