Lock() in sync.Mutex / sync.RWMutex vs RLock() in sync.RWMutex:
Lock() โ€” blocks readers AND writers
RLock() โ€” blocks writers only, does NOT block other readers

Use RWMutex RLock() when reads >> writes.
#golang #concurrency

Principal Software Engineer - Cluster Lifecyle at Roblox

Roblox is hiring Principal Software Engineer - Cluster Lifecyle

Before you continue

sync.Once's .Do and sync.OnceFunc both take func() โ€” no return.
So the result has to live somewhere: a separate struct field you write to as a side effect.

sync.OnceValue takes func() T โ€” the return value IS the cache. No extra field.

#golang #concurrency

Pretty happy with the #automated #patching I have implemented. It has #hooks too so that you can tell it to do things before rebooting.

In picrel, apparmor required reboot, so it killed all virtual machines and rebooted.

#selfhosting #homelab #ubuntu #debian #linux #golang #programming #coding

Day 14/75: Practice: Strings and hashing

Today's note was about turning the review day into diagnosis instead of a loose pile of solved problems. I kept coming back to the same checks: classify misses into pattern, implementation, and time-management buckets, re-solve only representative failures instead of skimming everything again, and write down the trigger or invariant that should have surfaced earlier.

The failure mode worth watching is counting exposure as mastery and moving on before the miss is explained. If that happens, the implementation usually looks busy while the invariant is already gone.

#GoLang #DSA #Algorithms

Just released a new version of my web framework Burrow, that now includes a package to define CRUD APIs in a declarative way. It also includes an API viewer based on Scalar as a contrib app.

https://burrow.readthedocs.io/en/stable/guide/crud-api/

#golang #burrow #webframework

JSON CRUD APIs - Burrow

A modular Go web framework built on Chi, Den, and html/template

In Smeldr, an AgentJob has the same lifecycle as any content type: Draft, Published, Archived.

Published means active. Archived means stopped. To pause an agent, archive its job. To resume, publish it again.

No code change. No redeploy. No configuration to update.

https://smeldr.dev/solved/pause-one-agent?utm_source=mastodon&utm_campaign=pause-one-agent

#ai #selfhosting #eutech #golang #mcp #opensource

Pause one agent. Your pipeline keeps running. - Smeldr

When you need to stop one part of your AI workflow, you should not have to touch the rest. Archive one agent job. Only that step stops. Everything else continues.

#golang ๏ผž Release v2.17.0-2642319f-nightly ยท goreleaser/goreleaser
https://github.com/goreleaser/goreleaser/releases/tag/v2.17.0-2642319f-nightly
Release v2.17.0-2642319f-nightly ยท goreleaser/goreleaser

Changelog Documentation updates da7ce30: docs(casks): fix private-repo example broken by Homebrew 5.1.14 (#6639) 2642319: docs: improve home 6b7710e: docs: updates Full Changelog: v2.16.0...v2.17...

GitHub

Due to lack of popular demand, I've removed the dependency on "fish shell" from my #commandLine #journal tools.

If interested, check out
https://codeberg.org/EdTheDev/minion

Now anyone using Bash shell can just clone #minion and add it to the path and start writing and searching for notes.

If you're curious, contrast it with my previous version written in #Python, and then #PowerShell and #goLang.

https://github.com/edthedev/minion

As I've gained expeirence, I can accomplish roughly the same outcomes with less lines of code and fewer dependencies.

minion

Simple command line notes organizer. Take notes quickly. Find notes quickly. Requires bash shell.

Codeberg.org