<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Go on Momo Engineering Journal</title><link>/tags/go/</link><description>Recent content in Go on Momo Engineering Journal</description><image><title>Momo Engineering Journal</title><url>/images/og-image.png</url><link>/images/og-image.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 20 Oct 2026 21:38:57 -0600</lastBuildDate><atom:link href="/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>Eliminating Redundant Time Formats: Slicing for Speed</title><link>/posts/049-eliminate-redundant-time-format-allocations/</link><pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate><guid>/posts/049-eliminate-redundant-time-format-allocations/</guid><description>By replacing a second &lt;code&gt;time.Format&lt;/code&gt; call with a simple string slice (&lt;code&gt;amzDate[:8]&lt;/code&gt;), we eliminated redundant heap allocations and CPU overhead when generating timestamps for AWS SigV4 requests.</description></item><item><title>FUSE Transport: Migrating to go-fuse/v2</title><link>/posts/029-fuse-go-fuse-v2-migration/</link><pubDate>Tue, 01 Sep 2026 18:40:07 +0000</pubDate><guid>/posts/029-fuse-go-fuse-v2-migration/</guid><description>The momofs FUSE mount traded its hand-rolled bazil.org/fuse adapter for the go-fuse/v2 high-level fs API, mapped all 22 node callbacks to go-fuse interfaces, and deprecated consistency=cached.</description></item><item><title>⚡ Bolt: Zero-Allocation Last-Modified Headers</title><link>/posts/045-bolt-lastmodified-header/</link><pubDate>Tue, 01 Sep 2026 11:19:08 +0000</pubDate><guid>/posts/045-bolt-lastmodified-header/</guid><description>time.Format allocates a fresh string on every S3 GET/HEAD response. Swapping to time.AppendFormat drops that heap escape to zero — measured 32 B/op saved per request on the hottest read path.</description></item><item><title>R4: momofs FUSE Transport — Mounting Momo as a Filesystem</title><link>/posts/023-momofs-fuse-transport/</link><pubDate>Fri, 28 Aug 2026 15:57:34 +0000</pubDate><guid>/posts/023-momofs-fuse-transport/</guid><description>The FUSE transport (&lt;code&gt;momo -imp fs&lt;/code&gt;): bazil.org/fuse binding, per-handle buffered writes, /dev/fuse-gated e2e, and a clean unmount lifecycle.</description></item><item><title>The Benchstat Gauntlet: Performance Regressions as CI</title><link>/posts/025-benchmark-benchstat-gate/</link><pubDate>Fri, 28 Aug 2026 00:32:50 +0000</pubDate><guid>/posts/025-benchmark-benchstat-gate/</guid><description>Base-vs-branch benchmark comparison gates every PR — plus the runner-noise saga (S3PutSpool, LocalWrite, allowlist, apostrophe) that made it honest.</description></item><item><title>R4: momofs — POSIX Core Over the CAS Store</title><link>/posts/022-momofs-posix-core/</link><pubDate>Thu, 27 Aug 2026 22:40:31 +0000</pubDate><guid>/posts/022-momofs-posix-core/</guid><description>The R4 POSIX core: inodes as content-addressed manifests, files as blobs, atomic rename, hardlinks, permission enforcement — a filesystem on momo.</description></item><item><title>R3: Write Durability — fsync-Before-Ack, Survivor Quorum</title><link>/posts/021-r3-write-durability-quorum/</link><pubDate>Thu, 27 Aug 2026 19:24:05 +0000</pubDate><guid>/posts/021-r3-write-durability-quorum/</guid><description>Ack only what survived: fsync/group-commit durability barrier, survivor quorum, and read-your-writes — the write-side of the P0 stack.</description></item><item><title>R2: Degraded-Read Survivor Fallback and Self-Heal</title><link>/posts/020-r2-degraded-read-self-heal/</link><pubDate>Thu, 27 Aug 2026 10:14:18 +0000</pubDate><guid>/posts/020-r2-degraded-read-self-heal/</guid><description>When a local replica is corrupted or missing, degraded read fetches from healthy survivors transparently, while a background rebuild loop restores cluster redundancy.</description></item><item><title>R1: Failure-Domain-Aware Placement</title><link>/posts/019-r1-failure-domain-placement/</link><pubDate>Wed, 26 Aug 2026 23:52:57 +0000</pubDate><guid>/posts/019-r1-failure-domain-placement/</guid><description>Replicas must not ride in the same rack: CRUSH weights become rack/zone/DC-aware so a single domain failure can&amp;rsquo;t lose the data.</description></item><item><title>Metrics and Observability: Per-Node Bind, Prometheus Export</title><link>/posts/026-metrics-observability/</link><pubDate>Tue, 25 Aug 2026 06:12:59 +0000</pubDate><guid>/posts/026-metrics-observability/</guid><description>Prometheus metrics export with a per-node metrics_host/metrics_port bind — observability that scales past the &amp;lsquo;just scrape node 0&amp;rsquo; era.</description></item><item><title>Forward: Production Roadmap (R5–R11) and the Research Guide</title><link>/posts/028-roadmap-and-research/</link><pubDate>Tue, 25 Aug 2026 03:24:12 +0000</pubDate><guid>/posts/028-roadmap-and-research/</guid><description>After R1–R4: the P0 hardening done, the P1/P2 tracks (metrics, HA metadata, auth, secrets, S3 breadth) and the research reading guide that seeded it all.</description></item><item><title>At-Rest Integrity: Verify-on-Read, Checksums, and GC</title><link>/posts/007-at-rest-integrity-and-gc/</link><pubDate>Mon, 24 Aug 2026 19:36:43 +0000</pubDate><guid>/posts/007-at-rest-integrity-and-gc/</guid><description>CAS keys make verify-on-read free: central verification, x-amz-checksum echo, tombstone GC, and corruption surfacing.</description></item><item><title>S3 Integrity Checksums: x-amz-checksum-*</title><link>/posts/012-s3-integrity-checksums/</link><pubDate>Mon, 24 Aug 2026 16:36:34 +0000</pubDate><guid>/posts/012-s3-integrity-checksums/</guid><description>x-amz-checksum-CRC32/SHA256 echo on PUT; integrity surfaced to clients so dirty bytes never masquerade as clean. Teaches: client-verifiable integrity, Bolt zero-allocation on read path, Sentinel honesty guarantee.</description></item><item><title>Adaptive Scaling: Gossip Fanout, Stream Chunks, Peer Quality</title><link>/posts/018-adaptive-scaling-peer-quality/</link><pubDate>Fri, 14 Aug 2026 19:43:24 +0000</pubDate><guid>/posts/018-adaptive-scaling-peer-quality/</guid><description>Three adaptive feedback loops: gossip fanout scales with cluster size, streaming chunk size adapts to cipher/memory, peer quality feeds quorum decisions.</description></item><item><title>Confidential Dedup via Threshold OPRF — and Auth Lockout</title><link>/posts/014-confidential-dedup-oprf/</link><pubDate>Fri, 14 Aug 2026 00:26:56 +0000</pubDate><guid>/posts/014-confidential-dedup-oprf/</guid><description>Threshold-OPRF lets E2EE cas blobs dedup without revealing content hashes — plus adaptive failed-auth backoff and lockout.</description></item><item><title>Scatter-Gather and Lease Consensus: Quorum Math</title><link>/posts/017-scatter-gather-lease-quorum/</link><pubDate>Thu, 13 Aug 2026 07:58:21 +0000</pubDate><guid>/posts/017-scatter-gather-lease-quorum/</guid><description>Scatter-gather lists across shard owners; leases with correct majority quorum — and the two nasty off-by-one/partition bugs found by audit.</description></item><item><title>S3 Multipart and Protocol Breadth: 501 Discipline</title><link>/posts/009-s3-multipart-and-breadth/</link><pubDate>Thu, 13 Aug 2026 06:02:26 +0000</pubDate><guid>/posts/009-s3-multipart-and-breadth/</guid><description>Multipart upload support plus a rigorous 501 strategy for unsupported S3 subresources — honest breadths over silent misbehavior.</description></item><item><title>⚡ Bolt: Zero-Allocation and Hot-Path Engineering</title><link>/posts/024-bolt-performance-engineering/</link><pubDate>Wed, 12 Aug 2026 11:40:41 +0000</pubDate><guid>/posts/024-bolt-performance-engineering/</guid><description>The Bolt mindset codified: no heap escapes in hashing/encoding, deadline amortization cuts SetDeadline ~98%, allocation hotspots hunted by profile. Teaches: zero-escape patterns, measurement contracts, trade-off posture.</description></item><item><title>S3 and Inbound TLS: HTTPS-by-Default Enforcement</title><link>/posts/011-s3-https-tls-enforcement/</link><pubDate>Wed, 12 Aug 2026 07:23:29 +0000</pubDate><guid>/posts/011-s3-https-tls-enforcement/</guid><description>The S3 gateway turned HTTPS-or-explicit-insecure into the default: no silent plaintext for the gateway or inbound tcp/quic.</description></item><item><title>S3 Auth: SigV4, Presigned URLs, and Key Decoupling</title><link>/posts/010-s3-auth-presigned-sigv4/</link><pubDate>Tue, 11 Aug 2026 23:11:16 +0000</pubDate><guid>/posts/010-s3-auth-presigned-sigv4/</guid><description>Query-string SigV4 for presigned URLs, mandatory X-Amz-Date freshness, and decoupling gateway access/secret keys from the native auth token.</description></item><item><title>S3 Gateway Core: XML, Buckets, Objects, Lists</title><link>/posts/008-s3-gateway-core/</link><pubDate>Tue, 11 Aug 2026 18:25:16 +0000</pubDate><guid>/posts/008-s3-gateway-core/</guid><description>The S3 gateway: SigV4, S3-compliant XML errors, Head/List/Copy, pagination, ranges, and metadata — a compatible API surface for real clients.</description></item><item><title>Client-Held E2EE: Envelope Encryption Real</title><link>/posts/013-e2ee-envelope-encryption/</link><pubDate>Tue, 11 Aug 2026 16:36:53 +0000</pubDate><guid>/posts/013-e2ee-envelope-encryption/</guid><description>Envelope encryption with a client-held key: the server stores ciphertext and can&amp;rsquo;t read it — across S3 and native transports.</description></item><item><title>Transport Evolution: TCP, QUIC, and the Wire Protocol</title><link>/posts/003-transport-tcp-to-quic/</link><pubDate>Tue, 11 Aug 2026 04:02:50 +0000</pubDate><guid>/posts/003-transport-tcp-to-quic/</guid><description>Momo&amp;rsquo;s transport layer grew from TCP to a QUIC/TLS 1.3 fan-out — fixing handshake, ACK framing, deadlines, and TLS identity along the way.</description></item><item><title>The Sentinel Sweep: An Audit-Driven Security Journey</title><link>/posts/015-sentinel-security-audit/</link><pubDate>Tue, 04 Aug 2026 00:47:24 +0000</pubDate><guid>/posts/015-sentinel-security-audit/</guid><description>A 76-deep audit (authed via Sentinel) surfaced CRLF injection, smuggling, traversal and path leaks — the pattern that forged momo&amp;rsquo;s security mindset.</description></item><item><title>Pluggable Storage Backends: local, nfs, s3, raw</title><link>/posts/006-pluggable-storage-backends/</link><pubDate>Sun, 26 Jul 2026 14:33:59 +0000</pubDate><guid>/posts/006-pluggable-storage-backends/</guid><description>The &lt;code&gt;[storage] backend&lt;/code&gt; seam swaps blob storage (local, nfs, s3, raw) behind one Store interface, keeping CAS metadata local.</description></item><item><title>CRUSH-lite: Deterministic Weighted Placement</title><link>/posts/005-crush-placement/</link><pubDate>Tue, 30 Jun 2026 13:09:01 +0000</pubDate><guid>/posts/005-crush-placement/</guid><description>Weighted rendezvous hashing picks replicas deterministically and peer-equally without a central allocator — later hardened for failure domains. Teaches: content-hash-based placement, weighted rendezvous hashing, deterministic stable sort, failure domain filtering.</description></item><item><title>Replication Strategies and the Polymorphic Engine</title><link>/posts/002-replication-strategies-polymorphic/</link><pubDate>Mon, 04 May 2026 18:54:37 +0000</pubDate><guid>/posts/002-replication-strategies-polymorphic/</guid><description>Chain, Splay, and Primary-Splay replication — and the metrics-driven controller that switches between them at runtime.</description></item><item><title>CAS: Content-Addressable Storage and Deduplication</title><link>/posts/004-cas-content-addressable-store/</link><pubDate>Wed, 11 Mar 2026 14:34:18 +0000</pubDate><guid>/posts/004-cas-content-addressable-store/</guid><description>Identify every object by its SHA-256 content hash — server-side dedup, verify-on-read, and a path that later mounted a filesystem. Teaches: content addressing principles, single write chokepoint, Bolt/Sentinel patterns.</description></item><item><title>P2P: Gossip, SWIM, and Membership</title><link>/posts/016-p2p-gossip-swim/</link><pubDate>Wed, 11 Mar 2026 14:34:18 +0000</pubDate><guid>/posts/016-p2p-gossip-swim/</guid><description>A scaleless-gossip ring: SWIM-style failure detection, discovered-peer dialing, and ALIVE/OFFLINE restoration — momo&amp;rsquo;s nervous system.</description></item><item><title>Origin: From Replication Playground to Object Store</title><link>/posts/001-origin-and-genesis/</link><pubDate>Tue, 09 Sep 2025 20:10:05 +0000</pubDate><guid>/posts/001-origin-and-genesis/</guid><description>How momo started as a file-replication playground in Go and grew into a distributed content-addressed object store.</description></item></channel></rss>