<?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 Coding Shit | Ciprian Mandache</title>
<atom:link href="https://ciprian.51k.eu/coding/feed/" rel="self" type="application/rss+xml" /><link></link>
<description>Mostly writing code that does stuff...</description>
<lastBuildDate>Sat, 24 Oct 2026 14:05:37 +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 Coding Shit | Ciprian Mandache</title><link></link>
<width>32</width>
<height>32</height>
</image>
<item><title>MetaTrader&#8217;s Multi Timeframe Indicator Suite Says One Chart Is Enough</title><link>https://ciprian.51k.eu/metatrader-multi-timeframe-indicator-suite-one-chart-is-enough/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Fri, 23 Oct 2026 15:38:50 +0000</pubDate>
<category><![CDATA[MQL]]></category>
<category><![CDATA[Trading]]></category>
<category><![CDATA[anchored vwap]]></category>
<category><![CDATA[bollinger bands]]></category>
<category><![CDATA[donchian channels]]></category>
<category><![CDATA[ichimoku]]></category>
<category><![CDATA[indicator]]></category>
<category><![CDATA[keltner channels]]></category>
<category><![CDATA[macd]]></category>
<category><![CDATA[metatrader]]></category>
<category><![CDATA[moving averages]]></category>
<category><![CDATA[mql]]></category>
<category><![CDATA[multi timeframe analysis]]></category>
<category><![CDATA[multi timeframe indicator suite]]></category>
<category><![CDATA[pandas-ta]]></category>
<category><![CDATA[parabolic sar]]></category>
<category><![CDATA[rsi]]></category>
<category><![CDATA[stochastic]]></category>
<category><![CDATA[supertrend]]></category>
<category><![CDATA[technical analysis]]></category>
<category><![CDATA[trading]]></category>
<category><![CDATA[trading tool]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/?p=2694</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/10/multi-timeframe-indicator-suite-300x150.jpg" class="webfeedsFeaturedVisual wp-post-image" alt="Multi Timeframe Indicator Suite logo over five timeframe traces" style="display: block; margin-bottom: 5px; clear:both;max-width: 100%;" link_thumbnail="" decoding="async" srcset="https://ciprian.51k.eu/upld/2026/10/multi-timeframe-indicator-suite-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/10/multi-timeframe-indicator-suite-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/10/multi-timeframe-indicator-suite-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/10/multi-timeframe-indicator-suite.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />Dear people with twelve charts open, Multi Timeframe Indicator Suite is a charting indicator that puts higher-timeframe overlays and oscillator docks on the chart where you are actually making the ...]]></description>
</item>
<item><title>go-asyncapi: load AsyncAPI 3 specs in Go</title><link>https://ciprian.51k.eu/go-asyncapi-load-asyncapi-3-specs-in-go/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Thu, 15 Oct 2026 21:06:39 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[asyncapi]]></category>
<category><![CDATA[claude code]]></category>
<category><![CDATA[code generation]]></category>
<category><![CDATA[ctxerrors]]></category>
<category><![CDATA[event-driven]]></category>
<category><![CDATA[go-asyncapi]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[json]]></category>
<category><![CDATA[json schema]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[package]]></category>
<category><![CDATA[parser]]></category>
<category><![CDATA[websocket]]></category>
<category><![CDATA[yaml]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/go-asyncapi-your-asyncapi-spec-is-a-fucking-graph-wearing-a-yaml-costume/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/10/go-asyncapi-linocut-2-300x150.jpg" 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/10/go-asyncapi-linocut-2-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/10/go-asyncapi-linocut-2-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/10/go-asyncapi-linocut-2-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/10/go-asyncapi-linocut-2.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />go-asyncapi reads AsyncAPI 3 documents in Go and hands you servers, channels, operations and messages as plain structs, with every $ref on the way to them followed across files, every ...]]></description>
</item>
<item><title>Why am I still hand-typing WebSocket structs from an AsyncAPI spec?</title><link>https://ciprian.51k.eu/gen-asyncapi-why-am-i-still-hand-typing-websocket-structs/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Thu, 15 Oct 2026 18:25:51 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[api]]></category>
<category><![CDATA[asyncapi]]></category>
<category><![CDATA[cli-tool]]></category>
<category><![CDATA[code generation]]></category>
<category><![CDATA[ctxerrors]]></category>
<category><![CDATA[gen-asyncapi]]></category>
<category><![CDATA[go generate]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[go-asyncapi]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[json]]></category>
<category><![CDATA[json schema]]></category>
<category><![CDATA[library]]></category>
<category><![CDATA[typescript]]></category>
<category><![CDATA[validation]]></category>
<category><![CDATA[websocket]]></category>
<category><![CDATA[websocket client]]></category>
<category><![CDATA[yaml]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/gen-asyncapi-stop-hand-typing-your-fucking-websocket-structs/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/10/gen-asyncapi-noir-s11-300x150.jpg" 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/10/gen-asyncapi-noir-s11-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/10/gen-asyncapi-noir-s11-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/10/gen-asyncapi-noir-s11-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/10/gen-asyncapi-noir-s11.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />You shouldn&#8217;t be, because the AsyncAPI spec already says exactly what every message looks like and a machine can retype it better than you. I wrote gen-asyncapi so an AsyncAPI ...]]></description>
</item>
<item><title>docker-mql-compiler: reading compile_one, the function that runs MetaEditor under Wine</title><link>https://ciprian.51k.eu/docker-mql-compiler-reading-compile-one/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Sat, 10 Oct 2026 05:56:44 +0000</pubDate>
<category><![CDATA[Containers]]></category>
<category><![CDATA[MQL]]></category>
<category><![CDATA[Trading]]></category>
<category><![CDATA[bash]]></category>
<category><![CDATA[cli-tool]]></category>
<category><![CDATA[compiler]]></category>
<category><![CDATA[docker]]></category>
<category><![CDATA[docker-mql-compiler]]></category>
<category><![CDATA[expert advisor]]></category>
<category><![CDATA[github actions]]></category>
<category><![CDATA[json]]></category>
<category><![CDATA[linux]]></category>
<category><![CDATA[metaeditor]]></category>
<category><![CDATA[metaquotes]]></category>
<category><![CDATA[metatrader]]></category>
<category><![CDATA[mql]]></category>
<category><![CDATA[mql4]]></category>
<category><![CDATA[mql5]]></category>
<category><![CDATA[mt4]]></category>
<category><![CDATA[mt5]]></category>
<category><![CDATA[trading]]></category>
<category><![CDATA[wine]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/docker-mql-compiler-compile-mql4-and-mql5-on-linux-without-windows/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/10/dmc-macro2-300x150.jpg" 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/10/dmc-macro2-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/10/dmc-macro2-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/10/dmc-macro2-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/10/dmc-macro2.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />These are the lines the whole project exists to run. Everything else in docker-mql-compiler is setup for them, or cleanup after them: # MetaEditor's exit code is backwards (1 usually ...]]></description>
</item>
<item><title>A Zoo Enclosure for the Android SDK: Android Lab</title><link>https://ciprian.51k.eu/android-lab-a-zoo-enclosure-for-the-android-sdk/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Wed, 07 Oct 2026 19:04:09 +0000</pubDate>
<category><![CDATA[Bash]]></category>
<category><![CDATA[Containers]]></category>
<category><![CDATA[Mobile]]></category>
<category><![CDATA[adb]]></category>
<category><![CDATA[agent skills]]></category>
<category><![CDATA[android]]></category>
<category><![CDATA[android app]]></category>
<category><![CDATA[android emulator]]></category>
<category><![CDATA[android lab]]></category>
<category><![CDATA[android sdk]]></category>
<category><![CDATA[apk]]></category>
<category><![CDATA[Automation]]></category>
<category><![CDATA[bash]]></category>
<category><![CDATA[containers]]></category>
<category><![CDATA[docker]]></category>
<category><![CDATA[emulator]]></category>
<category><![CDATA[gradle]]></category>
<category><![CDATA[kotlin]]></category>
<category><![CDATA[kvm]]></category>
<category><![CDATA[makefile]]></category>
<category><![CDATA[mobile]]></category>
<category><![CDATA[novnc]]></category>
<category><![CDATA[sandbox]]></category>
<category><![CDATA[security]]></category>
<category><![CDATA[Skills]]></category>
<category><![CDATA[testing]]></category>
<category><![CDATA[ui automation]]></category>
<category><![CDATA[uiautomator]]></category>
<category><![CDATA[vnc]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/android-lab-lock-the-android-sdk-in-docker-and-poke-the-phone-from-a-browser/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/10/android-lab-zoo-300x150.jpg" 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/10/android-lab-zoo-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/10/android-lab-zoo-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/10/android-lab-zoo-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/10/android-lab-zoo.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />The Android SDK is a wild animal. Let it loose in your house and it marks territory everywhere: an SDK, a pile of build tools, an emulator, a system image, ...]]></description>
</item>
<item><title>decidealot: Stop Making a Chatbot Write an Essay When You Needed a Fucking Yes or No</title><link>https://ciprian.51k.eu/decidealot-stop-making-a-chatbot-write-an-essay-when-you-needed-a-yes-or-no/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Wed, 23 Sep 2026 23:12:51 +0000</pubDate>
<category><![CDATA[AI Tooling]]></category>
<category><![CDATA[Containers]]></category>
<category><![CDATA[Python]]></category>
<category><![CDATA[ai]]></category>
<category><![CDATA[ai agent]]></category>
<category><![CDATA[ai skill]]></category>
<category><![CDATA[classification]]></category>
<category><![CDATA[container]]></category>
<category><![CDATA[cuda]]></category>
<category><![CDATA[decidealot]]></category>
<category><![CDATA[decision model]]></category>
<category><![CDATA[docker]]></category>
<category><![CDATA[fastapi]]></category>
<category><![CDATA[gpu]]></category>
<category><![CDATA[huggingface]]></category>
<category><![CDATA[jev]]></category>
<category><![CDATA[jev alternative]]></category>
<category><![CDATA[laya]]></category>
<category><![CDATA[llm]]></category>
<category><![CDATA[local ai]]></category>
<category><![CDATA[mcp]]></category>
<category><![CDATA[privacy]]></category>
<category><![CDATA[python]]></category>
<category><![CDATA[pytorch]]></category>
<category><![CDATA[rest api]]></category>
<category><![CDATA[self-hosted]]></category>
<category><![CDATA[structured output]]></category>
<category><![CDATA[system one]]></category>
<category><![CDATA[system one model]]></category>
<category><![CDATA[typesafe]]></category>
<category><![CDATA[typesafe ai]]></category>
<category><![CDATA[von]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/decidealot-stop-making-a-chatbot-write-an-essay-when-you-needed-a-yes-or-no/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/09/decidealot-robot-3-300x150.jpg" 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/09/decidealot-robot-3-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/09/decidealot-robot-3-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/09/decidealot-robot-3-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/09/decidealot-robot-3.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />TypeSafe dropped Jev and my whole feed lost its shit over it. They call it a System One model: you hand it messy state plus a few typed questions, and ...]]></description>
</item>
<item><title>chatz: A Self-Hosted AI Chat Where the Assistant Draws the Fucking Dashboard</title><link>https://ciprian.51k.eu/chatz-generative-ui-ai-chat/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Sun, 16 Aug 2026 07:22:33 +0000</pubDate>
<category><![CDATA[AI]]></category>
<category><![CDATA[Containers]]></category>
<category><![CDATA[Golang]]></category>
<category><![CDATA[ai]]></category>
<category><![CDATA[ai chat]]></category>
<category><![CDATA[anthropic]]></category>
<category><![CDATA[api]]></category>
<category><![CDATA[chatz]]></category>
<category><![CDATA[container]]></category>
<category><![CDATA[docker]]></category>
<category><![CDATA[generative ui]]></category>
<category><![CDATA[Go programming language]]></category>
<category><![CDATA[golang]]></category>
<category><![CDATA[llm]]></category>
<category><![CDATA[mcp]]></category>
<category><![CDATA[Open Source]]></category>
<category><![CDATA[openai]]></category>
<category><![CDATA[postgres]]></category>
<category><![CDATA[self-hosted]]></category>
<category><![CDATA[sqlite]]></category>
<category><![CDATA[sse]]></category>
<category><![CDATA[streaming]]></category>
<category><![CDATA[svelte]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/chatz-generative-ui-ai-chat/</guid><description><![CDATA[<img
width="300" height="150" src="https://ciprian.51k.eu/upld/2026/08/chatz-1-300x150.jpg" 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/chatz-1-300x150.jpg 300w, https://ciprian.51k.eu/upld/2026/08/chatz-1-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/08/chatz-1-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/08/chatz-1.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />Every self-hosted chat UI hands you the same thing: a wall of markdown. You ask the model for last quarter&#8217;s numbers, it writes you a table in monospace, and if ...]]></description>
</item>
<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.jpg" 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.jpg 300w, https://ciprian.51k.eu/upld/2026/08/pr0xteus-1-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/08/pr0xteus-1-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/08/pr0xteus-1.jpg 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.jpg" 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.jpg 300w, https://ciprian.51k.eu/upld/2026/08/ctxscope-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/08/ctxscope-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/08/ctxscope.jpg 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.jpg" 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.jpg 300w, https://ciprian.51k.eu/upld/2026/08/slogging-768x384.jpg 768w, https://ciprian.51k.eu/upld/2026/08/slogging-600x300.jpg 600w, https://ciprian.51k.eu/upld/2026/08/slogging.jpg 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>
</channel>
</rss>
<!--
*** This site runs WP Super Minify plugin v2.0.1 - http://wordpress.org/plugins/wp-super-minify ***
*** Total size saved: 3.441% | Size before compression: 24297 bytes | Size after compression: 23461 bytes. ***
-->