Adam Faris
@af9.us
📤 86
📥 272
📝 122
Storage Curious | No Cloud, No Problem | Data Infra Fan Writes at
https://amf3.github.io
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.
12 days ago
0
1
0
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.
loading . . .
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 ...
https://coredns.io/manual/setups/#recursive-resolver
15 days ago
1
1
0
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/
loading . . .
a-Shell
A text-based user interface for a screen-based platform
https://holzschu.github.io/a-Shell_iOS/
16 days ago
0
0
0
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...
loading . . .
Setting Variables from the Command Line - Just Programmer's Manual
https://just.systems/man/en/setting-variables-from-the-command-line.html
17 days ago
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.
25 days ago
0
1
0
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? 😃
loading . . .
Docker Socket Myths | Hacker News
https://news.ycombinator.com/item?id=46564087
about 1 month ago
0
1
0
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...
loading . . .
Docker Socket Myths
Making Read Only Access Safer
https://amf3.github.io/articles/virtualization/docker_socket/
about 1 month ago
1
3
2
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...
loading . . .
Collect Docker metrics with Prometheus
Collecting Docker metrics with Prometheus
https://docs.docker.com/engine/daemon/prometheus/
about 1 month ago
1
0
0
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...
loading . . .
Decoupling Compute and Storage
Why a Two-Node Docker Swarm with ZFS Snapshots Is Enough
https://amf3.github.io/articles/arch/2swarm_nodes/
2 months ago
0
1
0
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
loading . . .
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 ...
https://www.authelia.com
2 months ago
0
0
0
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
loading . . .
Anisota's Annual Bluesky Harvest 2025
A recap of your year on Bluesky. Discover patterns, connections, and insights from your journey in the ATmosphere.
https://anisota.net/harvest
3 months ago
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.
3 months ago
0
1
0
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 😐
3 months ago
0
2
0
Nice summary of past AWS re:Invent videos on how S3 works behind the scenes.
bigdata.2minutestreaming.com/p/how-aws-s3...
loading . . .
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
https://bigdata.2minutestreaming.com/p/how-aws-s3-scales-with-tens-of-millions-of-hard-drives
3 months ago
0
1
0
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...
loading . . .
Hosting a WebSite on a Disposable Vape
Someone's trash is another person's web server.
https://bogdanthegeek.github.io/blog/projects/vapeserver/
3 months ago
0
0
0
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...
loading . . .
Uh-oh. Is the router down?
Easy roll back by managing home networks like a software project
https://amf3.github.io/articles/virtualization/virtual_router/
3 months ago
0
0
0
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 🤯.
loading . . .
The PCI ID Repository
https://pci-ids.ucw.cz/
3 months ago
0
0
0
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
4 months ago
2
3
0
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
loading . . .
Go CLIs: Creating Subcommands and Flags
Using urfave/cli to create polished CLI applications
https://amf3.github.io/articles/code/go/cli_args/
5 months ago
0
4
1
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...
add a skeleton here at some point
5 months ago
0
3
0
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
loading . . .
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...
https://merlin.allaboutbirds.org
5 months ago
1
3
0
With a QEMU article stalled at 80% complete and a tiny utility project waiting to be published to github, I should probably pay attention to this advice.
add a skeleton here at some point
5 months ago
0
4
0
Interesting. QEMU 10.1 supports WASM and can run inside a browser. 🤔
wiki.qemu.org/ChangeLog/10.1
loading . . .
ChangeLog/10.1 - QEMU
https://wiki.qemu.org/ChangeLog/10.1
5 months ago
0
13
6
I’m feeling out of the loop. I started with MD5 checksums to find duplicate files in local storage. Then I read modern CPUs have instruction sets for SHA256. Oh but there's also xxhash which is even faster at checksums.😕
#golang
output shows md5 is 3x slower than sha256 and 5x slower than xxhash
6 months ago
1
6
2
I like this
#golang
comparison of different SQLite drivers. They include test environment specifics, which allows me to replicate the findings.
github.com/cvilsmeier/g...
Without specifics I wonder if the results are valid. Something to keep in mind for the next Product A is better than B post.
loading . . .
GitHub - cvilsmeier/go-sqlite-bench: Benchmarks for Golang SQLite Drivers
Benchmarks for Golang SQLite Drivers. Contribute to cvilsmeier/go-sqlite-bench development by creating an account on GitHub.
https://github.com/cvilsmeier/go-sqlite-bench
6 months ago
0
1
0
reposted by
Adam Faris
Chris
6 months ago
SlateDB Go bindings!
github.com/slatedb/slat...
loading . . .
First-pass Go binding for SlateDB by CurryFishBalls9527 · Pull Request #691 · slatedb/slatedb
It's very basic and I'm not very familiar with gobindings & rust, but I was able to get basic stuff working. Hope it helps!
https://github.com/slatedb/slatedb/pull/691
0
1
1
I like this post explaining how file systems can be implemented with a key value store.
blog.vmsplice.net/2024/01/key-...
loading . . .
Key-Value Stores: The Foundation of File Systems and Databases
File systems and relational databases are like cousins. They share more than is apparent at first glance. It's not immediately obvious t...
https://blog.vmsplice.net/2024/01/key-value-stores-foundation-of-file.html
7 months ago
1
2
0
I’ve been quiet lately while looking into a bufferbloat issue with my home internet. Bufferbloat is latency caused when a router buffers too many packets and can impact games and video calls.
7 months ago
1
0
0
Something on my TODO list is writing up how to automate Jenkins deployments. It’s essentially a two step deployment. 1) The “configuration as code” plugin installs plugins and manages users. 2) The “Pipelines as code” plugin manages projects. Okay, okay, I’ll move it to the next sprint.
7 months ago
0
0
0
I just launched Tarchive, a simple, tar-based HTTP object store. Think of it as a personal object store that uses append-only .tar archives called “pails.” It’s fast, inspectable, and scriptable. Great for devs, homelabbers, and archivists. GitHub:
github.com/amf3/tarchive
#Go
#OpenAPI
#homelab
7 months ago
1
4
1
Hey look at that. I complain about something and it gets fixed. 😀 The latest release of oapi-codegen announced a new feature for dealing with optional pointers.
#OpenAPI
#golang
github.com/oapi-codegen...
7 months ago
0
2
0
Docker Offload is an interesting pivot. My guess is they are using predefined contexts in Docker desktop to redirect to their cloud services. This seems like something which could be done locally. Now to find that Nvidia GTX1060 I have in my spare parts bin for running OpenLLaMA. 🙂
7 months ago
0
0
0
Generics in Go finally clicked. 🎉 Examples felt abstract. Until generics saved me from writing a bunch of boilerplate in my unit tests. Read about it here:
amf3.github.io/articles/cod...
#golang
#generics
#testing
loading . . .
Go Generics: A Real World Use Case
Using Generics for Testing Pointers In Structs
https://amf3.github.io/articles/code/go/real_world_generics/
7 months ago
0
3
0
My new sprinkler controller is finally online. It's
#esp32
based and ESPHome is doing the heavy lifting. I stuck a DHT22 temp sensor on it because why not.
#esphome
even has a /metrics endpoint so I can graph relay state and sensor temp via Prometheus.
8 months ago
0
3
0
OpenAPI is so easy right? Until it generates Go structs full of pointers. 😞 I wrote up what worked and what didn’t. “OpenAPI in Practice: Go Server + Python Client from Spec”
amf3.github.io/articles/api...
#OpenAPI
#Golang
#Python
8 months ago
1
3
0
🚢 New post - DIY Docker Volume Drivers: What’s Missing What’s missing in the plugin ecosystem and how I built a simple Go plugin without root, FUSE, or cloud lock-in.
amf3.github.io/articles/sto...
#Docker
#GoLang
#DevOps
#Homelab
loading . . .
DIY Docker Volume Drivers: What's Missing
How to write a simple volume plugin. No root, no FUSE, just HTTP and Go
https://amf3.github.io/articles/storage/docker_volumes/
8 months ago
0
2
0
I’m starting to get why Docker plugin development slowed down. * write the plugin * create a image containing the plugin * create a throw away container using the image * extract the rootfs from the container with “docker export” into a directory named rootfs * finally run “docker plugin create”
8 months ago
1
0
0
I was curious how snappy compared to lz4 and wrote a go program to find out. Snappy seems to be a bit better with both compressed data output and resource usage. Input is the first 1,000,000 numbers of pi.
8 months ago
1
3
1
I was looking at Mulitpass docs and noticed this deprecation banner. While it makes sense to simplify overlapping product features, I'd like to think someone from Canonical read my cloud-init series. 😀
8 months ago
0
0
0
This is exciting. I just noticed an issue in Moby that has a linked prototype for supporting CSI plugins in regular Docker (not swarm). I hope it gets approved.
github.com/moby/moby/is...
8 months ago
1
0
0
What if a tar archive could behave like an append-only object store that supports versioning of objects? I demonstrate how it's possible in my latest post.
amf3.github.io/articles/sto...
loading . . .
Using Tar Files as Object Store Storage
Implementing Object Store storage with Log Structured Archives.
https://amf3.github.io/articles/storage/tar_objectstore/
8 months ago
0
1
1
Why yes, I do use Jenkins to water my blueberry plants. Don't you? 😀 I'm replacing a Particle Photon with a ESP32 and
esphome.io
. A few blocks of YAML results in a web server that toggles sprinkler relays on or off. I never thought I would buy into the phrase 'YAML programer' but now I do. 🤯
9 months ago
0
0
0
I've been practicing my soldering skills today. This is a q-tip for scale. I'm still suspicious of the left part but it will remind me to not mix power cables from different modular PSUs. 12v & 5v got applied to the 5v & 3v lines on a 10 TB SATA drive.
9 months ago
1
2
0
How many packets would a woodchuck NAT if a woodchuck could NAT packets? 🐿️ Apparently ... at least three. Triple NAT, QEMU on macOS, unified logging, Wireshark, all here:
amf3.github.io/articles/vir...
loading . . .
Virtual Router Lab on macOS with QEMU
Debugging macOS QEMU networking with unified logging and lightweight Linux VMs
https://amf3.github.io/articles/virtualization/macos_qemu_networks/
9 months ago
0
1
0
I discovered qemu has support for the vmnet framework in MacOS. This allows two VMs to connect to each other.
www.qemu.org/docs/master/...
In my case, one vm is running Alpine & the other is a Mikrotik router image. Now I can test network changes without getting yelled at by the family. 😀
loading . . .
QEMU QMP Reference Manual — QEMU documentation
https://www.qemu.org/docs/master/interop/qemu-qmp-ref.html#object-QMP-net.NetdevVmnetHostOptions
9 months ago
0
0
0
I just published my notes on tips & tricks for managing QEMU storage images. Useful for manipulating cloud images before deployment. From snapshots to raw conversions, it’s all here.
amf3.github.io/articles/vir...
loading . . .
Tips for working with qemu images
About QEMU images QEMU uses files to emulate storage devices, and the features available depend on how those files are created. While QEMU can emulate disks from Parallels and VirtualBox, I’m going to...
https://amf3.github.io/articles/virtualization/qemuimage_tips/
11 months ago
0
1
0
My thoughts on going back to IRC channels after years of using slack? To quote my dog, it's ruff! 🐾
11 months ago
1
1
0
Looking for helpful hints on troubleshooting cloud-init provisioning issues? You can read about them in my latest post.
amf3.github.io/articles/clo...
loading . . .
cloud-init troubleshooting
Introduction I previously wrote an introduction to cloud-init. I’d like to now follow up with a discussion on troubleshooting. cloud-init failures on remote hosts can be challenging. Depending on the ...
https://amf3.github.io/articles/cloudinit/troubleshooting/
11 months ago
0
1
0
reposted by
Adam Faris
Félix GV
12 months ago
I think it was a not very well guarded secret… but LinkedIn’s stream team will finally talk publicly about their Kafka rewrite, many years in the making, called North Guard, as well as their abstraction on top of Kafka + NG, called Xinfra. Sign up here to hear about it:
meetu.ps/e/NWkXx/466N...
loading . . .
[In-Person + Online] Stream Processing with Apache Kafka, Samza, and Flink, Wed, Apr 16, 2025, 5:30 PM | Meetup
* **Venue**: Together (Meeting Room) -- 700 E Middlefield Rd, Mountain View, Building 4, 1st Floor * **Zoom**: [https://linkedin.zoom.us/j/99142403394](https://linkedin.zoo
https://meetu.ps/e/NWkXx/466Ng/i
6
16
4
I tried out Flox and like its ability for managing build dependencies. It's conceptually like RVM for Ruby but language agnostic. Check it out:
flox.dev
loading . . .
Flox | Your dev environment, everywhere
Manage and share development environments with all the frameworks and libraries you need, then publish artifacts anywhere. Harness the power of Nix.
https://flox.dev
12 months ago
0
5
1
Load more
feeds!
log in