Adam Faris's Avatar

Adam Faris

@af9.us

Systems | Storage | Software Supply Chains Intentional Composition https://amf3.github.io

87
Followers
272
Following
124
Posts
26.07.2023
Joined
Posts Following

Latest posts by Adam Faris @af9.us

Changelog β€” zrepl latest documentation

Nice. I just noticed the #zrepl project updated their Go dependencies in the recent 0.7.0 release. Tooling with earlier versions was getting long in the tooth. #zfs

zrepl.github.io/changelog.html

28.02.2026 16:46 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Open Container Image Format From Local TAR file to Open Container Image

If you're tired of the "Docker vs Podman" marketing noise, it's time to look at the OCI spec under the hood. I built an image manually with just tar and sha256sum to prove a point.

amf3.github.io/articles/vir...
#OCI #Containers #DevOps #Hacking #Docker #Podman

24.02.2026 08:16 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Apparently running β€œapt autoremove” on Ubuntu 25.10 can remove netplan. Without netplan, networking does not survive the reboot, so fun times. At least I still remember how to bring up an interface manually.

07.02.2026 04:04 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
A screenshot showing how small distroless containers are in size.

A screenshot showing how small distroless containers are in size.

Good news. I figured out what I was missing. A distroless Unbound container built from source with #buildroot. The uncompressed image size is ~25MB.

05.02.2026 08:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
CoreDNS: DNS and Service Discovery Setups Here you can find a bunch of configurations for CoreDNS. All setups are done assuming you are not the root user and hence can’t start listening on port 53. We will use port 1053 instead, using ...

To make CoreDNS recursively resolve addresses I need to link and compile against libunbound?

coredns.io/manual/setup...

Then why not run unbound? I must be missing something.

04.02.2026 05:12 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
a-Shell A text-based user interface for a screen-based platform

I just discovered a-Shell for IOS. It’s like reliving the coLinux on WindowsXP days. I can write markdown in Textastic and use a-Shell to push markdown changes to git repos or even running code. 🀯

holzschu.github.io/a-Shell_iOS/

03.02.2026 16:17 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Setting Variables from the Command Line - Just Programmer's Manual

I finally found the feature that has me wanting to switch from Make to Just. Just has command line argument support.

just.systems/man/en/setti...

01.02.2026 20:11 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Huh. #podman has a rest API with coarse grained access like #docker. If I can read the Podman socket I can dump secrets within the container.

I know the API is disabled by default, but enabling it seems to have similar risk as rootless Docker. I never stop being amazed by marketing.

24.01.2026 18:09 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Docker Socket Myths | Hacker News

I was checking backlinks and realized I ended up on Hacker News. news.ycombinator.com/item?id=4656...
I mean it's not front page content but baby steps right? πŸ˜ƒ

19.01.2026 05:03 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Docker Socket Myths Making Read Only Access Safer

I wrote a new #docker post on why mounting /var/run/docker.sock with the :ro option doesn’t do what people thinks it does. It walks through Unix sockets, the Docker API, why β€œread-only” fails, and what socket proxies actually provide.

amf3.github.io/articles/vir...

09.01.2026 20:12 πŸ‘ 4 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0

It turns out I was partially correct. The exposed metrics endpoint only report values for Docker engine, not containers. Meaning we still need cAdvisor. Bummer about being wrong and bummer about being wrong about cAdvisor. I mean cAdvisor is a fine app. It would just be nice to not need it is all.

08.01.2026 05:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Collect Docker metrics with Prometheus Collecting Docker metrics with Prometheus

I learned Docker Engine exposes a prometheus compatible /metrics endpoint. It looks like I can stop using cAdvisor, meaning one less container with access to docker.sock. #docker

docs.docker.com/engine/daemo...

07.01.2026 18:28 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Decoupling Compute and Storage Why a Two-Node Docker Swarm with ZFS Snapshots Is Enough

New post: Why a Two-Node Docker Swarm w/ ZFS Snapshots Is Enough

This isn't about defending Swarm, it's about designing systems with clear failure modes and using storage that doesn't pretend to scale magically #homelab

This makes 12 posts in 12 months. 2025 goal met
amf3.github.io/articles/arc...

19.12.2025 07:17 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Authelia Authelia is an open-source authentication and authorization server and portal fulfilling the identity and access management (IAM) role of information security in providing multi-factor authentication ...

Neat, a SSO (single sign-on) middleware that supports OpenID on the frontend and simple HTTP auth with backend apps. This might be what I need for self-hosted services at home. πŸ˜€

www.authelia.com

07.12.2025 19:27 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Anisota's Annual Bluesky Harvest 2025 A recap of your year on Bluesky. Discover patterns, connections, and insights from your journey in the ATmosphere.

This is fun and shows which topics I discussed throughout the year.

My most-used words in 2025 were:

1. "docker" (12Γ—)
2. "plugin" (11Γ—)
3. "cloudinit" (11Γ—)
4. "router" (8Γ—)
5. "qemu" (8Γ—)

See which words you used the most here: anisota.net/harvest

02.12.2025 23:58 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Will I ever settle on a storage format when writing this app? So far its been SQLite -> Parquet -> NDJSON. I find the JSON part boring. No compression and is it any better than CSV when not using nested fields?

Now I'm tempted to try Protobuf to get the compression that I likely don't need.

02.12.2025 01:08 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
workflow for using go modules with Hugo generated websites.

workflow for using go modules with Hugo generated websites.

I use git submodules to pin the Papermod theme version used by my blog.

Tonight I realized I can pin the Hugo web framework by using go modules. The pinned Hugo version is ran with "go tool Hugo".

One of those things that became obvious to me once it was obvious. Now for some CI pipeline updates 😐

30.11.2025 05:43 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
how AWS S3 serves 1 petabyte per second on top of slow HDDs Learn how Amazon built the backbone of the modern web that scales to 1 PB/s and 150M QPS on commodity hard drives

Nice summary of past AWS re:Invent videos on how S3 works behind the scenes. bigdata.2minutestreaming.com/p/how-aws-s3...

25.11.2025 18:03 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Hosting a WebSite on a Disposable Vape Someone's trash is another person's web server.

Do you ever have those moments of running across a fun article, only to realize it was posted on hacker news two months ago? Me, this morning. πŸ€¦β€β™‚οΈ

bogdanthegeek.github.io/blog/project...

19.11.2025 18:29 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Uh-oh. Is the router down? Easy roll back by managing home networks like a software project

I tasted the forbidden fruit. Running my home router inside a VM. It's delicious.

#Mikrotik CHR, #QEMU, PCI passthrough, qcow2 snapshots, full reproducibility.
Easy rollback. Manage networks like software projects.

Here's how I built it: amf3.github.io/articles/vir...

19.11.2025 08:39 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
The PCI ID Repository

Is it really only two people who are behind distributing PCI tuples which identify PCI devices on #Linux? Values are distributed in the pci.ids file, used by the kernel and apps like lspci.

pci-ids.ucw.cz

How does one even land that kind of gig? Yet another moment where my brain says 🀯.

12.11.2025 06:53 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Earlier this week I downloaded dump1090 to see what's overhead. Talk about great timing to see this post. :)

05.11.2025 00:29 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

More like different behavior that created bugs in code.

The post linked by @borkent.bsky.social does a great job explaining the scope change & behavior.

The fix pre 1.22 was to make a copy of the loop variable. I think passing a param to the goroutine would fix it. Or use a go version >=1.22.

04.11.2025 12:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Thanks. That post does a great job of explaining the behavior. It also makes sense why the 1.22 release notes didn't have a lot of detail behind the change.

I need to give more attention to content on the go.dev blog. πŸ™‚

04.11.2025 12:06 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Code behavior output showing the issue in old go compilers and newer versions.

Code behavior output showing the issue in old go compilers and newer versions.

TIL Go quietly fixed sharing behavior with for loop variables being used by goroutines. Previous to Go 1.22 each goroutine reused the same loop variable. Now each iteration gets its own copy.

No more i=5 five times. 🀭 This explains why one might find i := i in older code, a work around. #golang

04.11.2025 03:09 πŸ‘ 3 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Go CLIs: Creating Subcommands and Flags Using urfave/cli to create polished CLI applications

In the spirit of writing more, here's a post on how
I build Go CLIs with urfave/cli, how it keeps help and actions
coupled with options, and why I'll use it with future projects.

amf3.github.io/articles/cod...

#golang #cli

06.10.2025 03:14 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

Speaking of GC, there's a thread on r/golang that discusses the new experimental Green Tea GC in Go 1.25. Testing shows its not better but it's not worse.

www.dolthub.com/blog/2025-09...

29.09.2025 19:49 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

While using the app and walking through the woods today, I found myself paying attention to the bird calls as the app would identify in real time.

It's a great educational tool and could be a fun way to engage the kids when outdoors. It worked on me at least.

24.09.2025 23:22 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Merlin Bird ID - Home Identify Bird Songs and Calls Sound ID listens to the birds around you and shows real-time suggestions for who’s singing. Compare your recording to the songs and calls in Merlin to confirm what you...

What happens when @birdsoftheworld.bsky.social combines machine learning with a phone? You get a bird ID app that uses bird calls to ID birds.

Think PokΓ©mon Go but with real animals.
merlin.allaboutbirds.org

24.09.2025 23:21 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

An interesting idea but traditional IRC servers don't provide chat history for clients that disconnect and reconnect. This is why humans rely on a IRC bouncer (proxy) to replay missed messages. Of course if the proxy goes offline you end up missing messages.

17.09.2025 21:30 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0