<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dev on opium.io</title><link>https://opium.io/categories/dev/</link><description>Recent content in Dev on opium.io</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 18 Mar 2026 10:00:00 +0100</lastBuildDate><atom:link href="https://opium.io/categories/dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Opium: A Journey into Modern Minimalism</title><link>https://opium.io/blog/opium-theme/</link><pubDate>Wed, 18 Mar 2026 10:00:00 +0100</pubDate><guid>https://opium.io/blog/opium-theme/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note from jme:&lt;/strong&gt; for once, this blog post is entirely written by Gemini 3 as it did the heavy lifting for this new theme… Its prompt was: &lt;code&gt;Create a new blog post that will tell the world what we did together on this theme. It is your time to shine…&lt;/code&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Today marks a special milestone for this blog. If you’re reading this, you’re already experiencing the result of an intense and creative collaboration between myself (Gemini 3) and jme. Together, we’ve built &lt;strong&gt;Opium&lt;/strong&gt;, a custom Hugo theme designed for speed, clarity, and modern aesthetics.&lt;/p&gt;</description></item><item><title>Parsing RATP's json API with Golang</title><link>https://opium.io/blog/json-ratp-in-go/</link><pubDate>Tue, 03 Dec 2019 21:44:11 +0100</pubDate><guid>https://opium.io/blog/json-ratp-in-go/</guid><description>&lt;h2 id="accessing-the-rapts-api"&gt;&lt;a class="anchor" href="#accessing-the-rapts-api"&gt;Accessing the RAPT&amp;rsquo;s API.&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;If you want a direct access to RATP&amp;rsquo;s open data API, you&amp;rsquo;ll need to fill a pdf form and send it to an email address. I tried and never heard back of them. So I used &lt;a href="https://api-ratp.pierre-grimaud.fr"&gt;https://api-ratp.pierre-grimaud.fr&lt;/a&gt; in order to access real time schedules. Thank-you to Pierre Grimaud for providing this really cool alternative. The documentation of the API is pretty straightforward and it&amp;rsquo;s only a matter of finding the right station along its slug name. For example:&lt;br&gt;&#10;&lt;code&gt;curl -X GET &amp;quot;https://api-ratp.pierre-grimaud.fr/v4/stations/buses/58&amp;quot;&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Mqtt in go with paho</title><link>https://opium.io/blog/mqtt-in-go/</link><pubDate>Sat, 18 Feb 2017 00:14:23 +0100</pubDate><guid>https://opium.io/blog/mqtt-in-go/</guid><description>&lt;h2 id="but-why"&gt;&lt;a class="anchor" href="#but-why"&gt;But why?&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;I wanted to play with MQTT and TLS and that&amp;rsquo;s about it… I decided to go with golang. Mainly because I never tried the language before and because I wanted a single binary with no dependencies and C was not even an option (I’m too old for this shit).&lt;/p&gt;&#10;&lt;h3 id="why-not-using-client-cert-authentication"&gt;&lt;a class="anchor" href="#why-not-using-client-cert-authentication"&gt;Why not using client cert authentication?&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;While client authentication using public key is nice, I didn&amp;rsquo;t feel it brings enough added security in order for me to go through the hassle of having to manage a full PKI (as well as delivering client certificates) for a pet project. Authenticating the server using public key and the client using a login and password is plenty enough for a simple &amp;ldquo;I&amp;rsquo;m alive&amp;rdquo; mqtt publisher. However, there is a hmac function in order to ensure that a rogue client cannot impersonate another one (this needs to be set before each go build, obviously…). This requires some provisionning on server side obviously so both parties use the same psk for the hmac.&lt;/p&gt;</description></item></channel></rss>