<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>All The golang Shit | Ciprian Mandache</title>
<atom:link href="https://ciprian.51k.eu/tag/golang/feed/" rel="self" type="application/rss+xml" /><link></link>
<description>Mostly writing code that does stuff...</description>
<lastBuildDate>Mon, 17 Aug 2026 20:19:00 +0000</lastBuildDate>
<language>en-US</language>
<sy:updatePeriod>
hourly	</sy:updatePeriod>
<sy:updateFrequency>
1	</sy:updateFrequency><image>
<url>https://ciprian.51k.eu/upld/2019/02/cropped-terminal-icon-32x32.png</url><title>All The golang Shit | Ciprian Mandache</title><link></link>
<width>32</width>
<height>32</height>
</image>
<item><title>pr0xteus: Disposable VPN Exits for Apps You Wouldn&#8217;t Trust With Your Password</title><link>https://ciprian.51k.eu/pr0xteus-disposable-vpn-exits/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Fri, 14 Aug 2026 15:15:12 +0000</pubDate>
<category><![CDATA[Containers]]></category>
<category><![CDATA[Golang]]></category>
<category><![CDATA[ai skill]]></category>
<category><![CDATA[api]]></category>
<category><![CDATA[clawhub]]></category>
<category><![CDATA[container]]></category>
<category><![CDATA[docker]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[networking]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[pr0xteus]]></category>
<category><![CDATA[proxy]]></category>
<category><![CDATA[self-hosted]]></category>
<category><![CDATA[servicepack]]></category>
<category><![CDATA[socks5]]></category>
<category><![CDATA[tailscale]]></category>
<category><![CDATA[vpn]]></category>
<category><![CDATA[wireguard]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/pr0xteus-disposable-vpn-exits/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/08/pr0xteus-1-300x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/08/pr0xteus-1-300x150.png 300w, https://ciprian.51k.eu/upld/2026/08/pr0xteus-1-768x384.png 768w, https://ciprian.51k.eu/upld/2026/08/pr0xteus-1-600x300.png 600w, https://ciprian.51k.eu/upld/2026/08/pr0xteus-1.png 1024w" sizes="(max-width: 300px) 100vw, 300px" />You&#8217;ve got some app that needs to leave the building through a VPN. A scraper, a browser bot, some agent poking at sites that would rather it came from somewhere ...]]></description>
</item>
<item><title>ctxscope: Stop Threading request_id Through Every Function Signature</title><link>https://ciprian.51k.eu/ctxscope-context-scoped-log-attributes-go/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Sat, 08 Aug 2026 20:00:42 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[common-go]]></category>
<category><![CDATA[context]]></category>
<category><![CDATA[ctxerrors]]></category>
<category><![CDATA[ctxscope]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[logging]]></category>
<category><![CDATA[observability]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[request context]]></category>
<category><![CDATA[slog]]></category>
<category><![CDATA[structured logging]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/ctxscope-context-scoped-log-attributes-go/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/08/ctxscope-300x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/08/ctxscope-300x150.png 300w, https://ciprian.51k.eu/upld/2026/08/ctxscope-768x384.png 768w, https://ciprian.51k.eu/upld/2026/08/ctxscope-600x300.png 600w, https://ciprian.51k.eu/upld/2026/08/ctxscope.png 1024w" sizes="(max-width: 300px) 100vw, 300px" />Here&#8217;s the code everybody writes. A request comes in, you generate an id, and something a few calls down needs to log it: func handleOrder(ctx context.Context, requestID string, o Order) ...]]></description>
</item>
<item><title>slogging: Delete Twenty Lines of slog Boilerplate With One Blank Import</title><link>https://ciprian.51k.eu/slogging-configure-search-ship-slog/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Sat, 08 Aug 2026 09:20:58 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[ctxerrors]]></category>
<category><![CDATA[environment]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[handler]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[logging]]></category>
<category><![CDATA[loki]]></category>
<category><![CDATA[observability]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[slog]]></category>
<category><![CDATA[slogging]]></category>
<category><![CDATA[structured logging]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/?p=1385</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/08/slogging-300x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/08/slogging-300x150.png 300w, https://ciprian.51k.eu/upld/2026/08/slogging-768x384.png 768w, https://ciprian.51k.eu/upld/2026/08/slogging-600x300.png 600w, https://ciprian.51k.eu/upld/2026/08/slogging.png 1024w" sizes="(max-width: 300px) 100vw, 300px" />Go 1.21 shipped log/slog and it&#8217;s good. What it doesn&#8217;t ship is any way to configure it, so every service starts with a version of this: var level slog.Level switch ...]]></description>
</item>
<item><title>essessey: Stream a Turn Anywhere Without Rewriting It</title><link>https://ciprian.51k.eu/essessey-stream-a-turn-anywhere-without-rewriting-it/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Wed, 05 Aug 2026 15:52:01 +0000</pubDate>
<category><![CDATA[AI Tooling]]></category>
<category><![CDATA[Golang]]></category>
<category><![CDATA[ai]]></category>
<category><![CDATA[api]]></category>
<category><![CDATA[elelem]]></category>
<category><![CDATA[essessey]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[llm]]></category>
<category><![CDATA[nats]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[protocol]]></category>
<category><![CDATA[sse]]></category>
<category><![CDATA[streaming]]></category>
<category><![CDATA[websocket]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/?p=1364</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/08/essessey-300x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/08/essessey-300x150.png 300w, https://ciprian.51k.eu/upld/2026/08/essessey-768x384.png 768w, https://ciprian.51k.eu/upld/2026/08/essessey-600x300.png 600w, https://ciprian.51k.eu/upld/2026/08/essessey.png 1024w" sizes="(max-width: 300px) 100vw, 300px" />The first version streamed over SSE. Then something needed the same turn over NATS, and I found out I&#8217;d built the framing into the wrong layer. event: / data: / ...]]></description>
</item>
<item><title>elelem: Say It Out Loud, You&#8217;ll Get It</title><link>https://ciprian.51k.eu/elelem-say-it-out-loud-youll-get-it/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Tue, 04 Aug 2026 23:53:53 +0000</pubDate>
<category><![CDATA[AI Tooling]]></category>
<category><![CDATA[Golang]]></category>
<category><![CDATA[ai]]></category>
<category><![CDATA[anthropic]]></category>
<category><![CDATA[api]]></category>
<category><![CDATA[elelem]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[llm]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[openai]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[streaming]]></category>
<category><![CDATA[structured output]]></category>
<category><![CDATA[tokenizer]]></category>
<category><![CDATA[tool calling]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/elelem-say-it-out-loud-youll-get-it/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/08/elelem-300x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/08/elelem-300x150.png 300w, https://ciprian.51k.eu/upld/2026/08/elelem-768x384.png 768w, https://ciprian.51k.eu/upld/2026/08/elelem-600x300.png 600w, https://ciprian.51k.eu/upld/2026/08/elelem.png 1024w" sizes="(max-width: 300px) 100vw, 300px" />The moment that decides what kind of library you&#8217;re writing is the one where a human has to approve a tool call. Everything is lovely right up until then. The ...]]></description>
</item>
<item><title>slog-configurator: Same Zero-Config Logging, Now on the Standard Library</title><link>https://ciprian.51k.eu/slog-configurator-stdlib-logging-zero-config/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Wed, 29 Apr 2026 23:25:03 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[configuration]]></category>
<category><![CDATA[ctxerrors]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[helper]]></category>
<category><![CDATA[logging]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[quickie]]></category>
<category><![CDATA[slog]]></category>
<category><![CDATA[slog-configurator]]></category>
<category><![CDATA[stdlib]]></category>
<category><![CDATA[structured logging]]></category>
<category><![CDATA[wrapper]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/slog-configurator-stdlib-logging-zero-config/</guid><description><![CDATA[<img
width="300" height="163" src="https://ciprian.51k.eu/upld/2026/04/360_F_1527695117_xLoJujJNYHNRJsEANNICi3tVN367XcMB-300x163.webp" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/04/360_F_1527695117_xLoJujJNYHNRJsEANNICi3tVN367XcMB-300x163.webp 300w, https://ciprian.51k.eu/upld/2026/04/360_F_1527695117_xLoJujJNYHNRJsEANNICi3tVN367XcMB.webp 661w" sizes="(max-width: 300px) 100vw, 300px" />Update, August 2026: this package moved. slog-configurator is now github.com/psyb0t/slogging, where the configurator lives at slogconf/ alongside two handlers it always belonged next to — the searchable in-memory ring at ...]]></description>
</item>
<item><title>proxq: Async HTTP for Backends That Won&#8217;t Stop Timing Out</title><link>https://ciprian.51k.eu/docker-proxq-async-http-queue-for-slow-backends/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Wed, 29 Apr 2026 23:23:53 +0000</pubDate>
<category><![CDATA[Containers]]></category>
<category><![CDATA[Golang]]></category>
<category><![CDATA[ai skill]]></category>
<category><![CDATA[api-gateway]]></category>
<category><![CDATA[async]]></category>
<category><![CDATA[asynq]]></category>
<category><![CDATA[clawhub]]></category>
<category><![CDATA[container]]></category>
<category><![CDATA[docker]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[http]]></category>
<category><![CDATA[infrastructure]]></category>
<category><![CDATA[llm]]></category>
<category><![CDATA[microservices]]></category>
<category><![CDATA[proxy]]></category>
<category><![CDATA[queue]]></category>
<category><![CDATA[redis]]></category>
<category><![CDATA[reverse proxy]]></category>
<category><![CDATA[self-hosted]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/docker-proxq-async-http-queue-for-slow-backends/</guid><description><![CDATA[<img
width="300" height="213" src="https://ciprian.51k.eu/upld/2026/04/shot-of-a-little-boy-standing-in-a-corner-at-home-300x213.webp" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/04/shot-of-a-little-boy-standing-in-a-corner-at-home-300x213.webp 300w, https://ciprian.51k.eu/upld/2026/04/shot-of-a-little-boy-standing-in-a-corner-at-home.webp 612w" sizes="(max-width: 300px) 100vw, 300px" />Some HTTP requests take forever. LLM completions, image generation, video transcoding, big report builds, slow webhook processors — they all sit there chewing on something while your reverse proxy in ...]]></description>
</item>
<item><title>aichteeteapee: A Go HTTP Library Named By Someone Who Thinks Spelling Things Out Is Funny</title><link>https://ciprian.51k.eu/aichteeteapee-a-go-http-library-named-by-someone-who-thinks-spelling-things-out-is-funny/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Sat, 18 Apr 2026 04:24:37 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[aichteeteapee]]></category>
<category><![CDATA[api]]></category>
<category><![CDATA[context]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[http]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[middleware]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[request context]]></category>
<category><![CDATA[server]]></category>
<category><![CDATA[websocket]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/?p=1161</guid><description><![CDATA[<img
width="300" height="295" src="https://ciprian.51k.eu/upld/2026/04/D4cxln0-f1c9d0d2-1a40-4de5-b9fd-9551ea38a6ef-300x295.webp" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/04/D4cxln0-f1c9d0d2-1a40-4de5-b9fd-9551ea38a6ef-300x295.webp 300w, https://ciprian.51k.eu/upld/2026/04/D4cxln0-f1c9d0d2-1a40-4de5-b9fd-9551ea38a6ef-1024x1005.webp 1024w, https://ciprian.51k.eu/upld/2026/04/D4cxln0-f1c9d0d2-1a40-4de5-b9fd-9551ea38a6ef-768x754.webp 768w, https://ciprian.51k.eu/upld/2026/04/D4cxln0-f1c9d0d2-1a40-4de5-b9fd-9551ea38a6ef.webp 1200w" sizes="(max-width: 300px) 100vw, 300px" />Say it out loud: aichteeteapee. Go on. Sound it out. Aitch-tee-tee-pee. Yeah. That&#8217;s HTTP. I named my Go HTTP library by spelling &#8220;HTTP&#8221; phonetically and published it with a straight ...]]></description>
</item>
<item><title>goenv: Three Functions, One Env Var, Zero Fucks Given</title><link>https://ciprian.51k.eu/goenv-three-functions-one-env-var-zero-fucks-given/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Mon, 16 Mar 2026 09:00:00 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[configuration]]></category>
<category><![CDATA[environment variables]]></category>
<category><![CDATA[go package]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[goenv]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[helper]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[quickie]]></category>
<category><![CDATA[servicepack]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/goenv-three-functions-one-env-var-zero-fucks-given/</guid><description><![CDATA[<img
width="300" height="300" src="https://ciprian.51k.eu/upld/2026/03/goenv-300x300.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/03/goenv-300x300.png 300w, https://ciprian.51k.eu/upld/2026/03/goenv-150x150.png 150w, https://ciprian.51k.eu/upld/2026/03/goenv-768x768.png 768w, https://ciprian.51k.eu/upld/2026/03/goenv.png 1024w" sizes="(max-width: 300px) 100vw, 300px" />Every service I write needs exactly one piece of information before it does anything else: is this thing running in prod, or is some poor bastard (me, at 2am, half ...]]></description>
</item>
<item><title>oapixconstgen: Make Your OpenAPI Spec the Source of Truth for Go Constants</title><link>https://ciprian.51k.eu/oapixconstgen-make-your-openapi-spec-the-source-of-truth-for-go-constants/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Wed, 28 Jan 2026 05:22:03 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[cli]]></category>
<category><![CDATA[code generation]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[openapi]]></category>
<category><![CDATA[yaml]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/oapixconstgen-make-your-openapi-spec-the-source-of-truth-for-go-constants/</guid><description><![CDATA[<img
width="300" height="228" src="https://ciprian.51k.eu/upld/2026/01/Screenshot_2026-05-14_08-27-38-300x228.png" class="webfeedsFeaturedVisual wp-post-image" alt="" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/01/Screenshot_2026-05-14_08-27-38-300x228.png 300w, https://ciprian.51k.eu/upld/2026/01/Screenshot_2026-05-14_08-27-38.png 553w" sizes="(max-width: 300px) 100vw, 300px" />x-constants: int: defaultPageSize: &#38;defaultPageSize 20 maxPageSize: &#38;maxPageSize 100 uint: minPasswordLength: &#38;minPasswordLength 8 float64: requestTimeout: &#38;requestTimeout 30.5 string: defaultLocale: &#38;defaultLocale "en-US" bool: enableCache: &#38;enableCache true // Code generated by oapixconstgen. DO ...]]></description>
</item>
</channel>
</rss>
<!--
*** This site runs WP Super Minify plugin v2.0.1 - http://wordpress.org/plugins/wp-super-minify ***
*** Total size saved: 3.351% | Size before compression: 21187 bytes | Size after compression: 20477 bytes. ***
-->