<?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 cli-tool Shit | Ciprian Mandache</title>
<atom:link href="https://ciprian.51k.eu/tag/cli-tool/feed/" rel="self" type="application/rss+xml" /><link></link>
<description>Mostly writing code that does stuff...</description>
<lastBuildDate>Tue, 27 Oct 2026 22:10:10 +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 cli-tool Shit | Ciprian Mandache</title><link></link>
<width>32</width>
<height>32</height>
</image>
<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>gofindimpl: Stop Grep-ing for Go Interface Implementations Like a Damn Amateur</title><link>https://ciprian.51k.eu/gofindimpl-stop-grep-ing-for-go-interface-implementations-like-a-damn-amateur/</link>
<dc:creator><![CDATA[Ciprian Mandache]]></dc:creator>
<pubDate>Thu, 11 Sep 2025 04:07:24 +0000</pubDate>
<category><![CDATA[Golang]]></category>
<category><![CDATA[cli-tool]]></category>
<category><![CDATA[finder]]></category>
<category><![CDATA[go interface]]></category>
<category><![CDATA[go tool]]></category>
<category><![CDATA[implementation]]></category>
<category><![CDATA[interface]]></category>
<category><![CDATA[tool]]></category>
<guid
isPermaLink="false">https://ciprian.51k.eu/?p=963</guid><description><![CDATA[<img
width="300" height="124" src="https://ciprian.51k.eu/upld/2025/09/Screenshot_2025-09-11_07-06-31-300x124.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/2025/09/Screenshot_2025-09-11_07-06-31-300x124.png 300w, https://ciprian.51k.eu/upld/2025/09/Screenshot_2025-09-11_07-06-31.png 500w" sizes="(max-width: 300px) 100vw, 300px" />Look, if you&#8217;ve ever wasted more than 5 minutes trying to hunt down which structs actually implement a Go interface, you already know this pain. It&#8217;s like trying to debug ...]]></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.374% | Size before compression: 7291 bytes | Size after compression: 7045 bytes. ***
-->