<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Borjan Tchakaloff on Steady Monkey</title><link>https://steadymonkey.eu/</link><description>Recent content in Borjan Tchakaloff on Steady Monkey</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Sun, 07 Jun 2026 19:30:01 +0200</lastBuildDate><atom:link href="https://steadymonkey.eu/index.xml" rel="self" type="application/rss+xml"/><item><title>Ported to Hugo</title><link>https://steadymonkey.eu/blog/ported-to-hugo/</link><pubDate>Sun, 07 Jun 2026 19:30:01 +0200</pubDate><guid>https://steadymonkey.eu/blog/ported-to-hugo/</guid><description>&lt;p&gt;Here we go, I ported the website to Hugo.&lt;/p&gt;
&lt;p&gt;I broke my setup six months ago when I pruned docker from my computer without a backup of Ghost&amp;rsquo;s database.
Oh well, I &amp;ldquo;just&amp;rdquo; ended up finally doing what I wanted to do for a while: going back to plain-text.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s it, not exactly the same feature-set, but that&amp;rsquo;s fine given I accepted what Ghost offered me initially.
(The code samples are a bit broken for example.)
We&amp;rsquo;ll figure things out.&lt;/p&gt;</description></item><item><title>Balancing fast and slow thinking with AI tools</title><link>https://steadymonkey.eu/blog/balancing-fast-and-slow-thinking-with-ai-tools/</link><pubDate>Sat, 24 Jan 2026 09:34:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/balancing-fast-and-slow-thinking-with-ai-tools/</guid><description>&lt;h3 id="the-gist-of-it"&gt;The gist of it&lt;/h3&gt;
&lt;p&gt;Many people said it, and I did too, but without &lt;em&gt;really feeling it&lt;/em&gt;.
You. still. need. to. think. for. yourself.&lt;/p&gt;
&lt;h3 id="the-longer-form"&gt;The longer form&lt;/h3&gt;
&lt;p&gt;I take it as a benefit from the current generation of AI tooling, how working with so-called &lt;em&gt;agentic AI&lt;/em&gt; makes you (eventually) take a step back and ask yourself: &lt;em&gt;do I need to go fast or slow?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;An example of being fast would be:&lt;/p&gt;</description></item><item><title>My hobby? Speculative Engineering</title><link>https://steadymonkey.eu/blog/my-hobby-speculative-engineering/</link><pubDate>Sat, 13 Dec 2025 21:26:49 +0000</pubDate><guid>https://steadymonkey.eu/blog/my-hobby-speculative-engineering/</guid><description>&lt;p&gt;I was thinking about my &lt;a href="https://famlab.net"&gt;Famlab&lt;/a&gt; project this morning—the &amp;ldquo;homelab for busy families&amp;rdquo; idea where you reclaim data ownership (dare I mention #TechSovereignty?) without becoming a full-time sysadmin.
Specifically, I was thinking about the maintenance of the base system and all services: the update path.
It is an old idea that spawned from A/B updates in Android (where you have a second partition on which you install system updates, and then try to boot from afterwards; if it fails, you mark it as such and reboot into the other, older system partition) and the appeal from immutable operating systems—reproducible, easier deployments, safer.&lt;/p&gt;</description></item><item><title>On inequality and AI risks</title><link>https://steadymonkey.eu/blog/on-inequality-and-ai-risks/</link><pubDate>Sun, 07 Dec 2025 21:03:12 +0000</pubDate><guid>https://steadymonkey.eu/blog/on-inequality-and-ai-risks/</guid><description>&lt;p&gt;Friday morning I read &lt;a href="https://jennykudymowa.substack.com/p/how-the-very-rich-make-the-world"&gt;Jenny&amp;rsquo;s piece on how the ultra-rich make the world worse&lt;/a&gt;.
Friday evening I attended a rationality meetup about &lt;em&gt;&lt;a href="https://ifanyonebuildsit.com"&gt;If Anyone Builds It, Everyone Dies&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20260529023311/https://ifanyonebuildsit.com" title="2026-05-29 archived copy of https://ifanyonebuildsit.com" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
&lt;/em&gt;.
Sunday afternoon, an on-site &lt;a href="https://pauseai.info"&gt;PauseAI&lt;/a&gt; meetup.&lt;/p&gt;
&lt;p&gt;Three events, one weekend.
Some clarity in the end.&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t read the book mentioned above, or &lt;a href="https://steadymonkey.eu/blog/two-weeks-with-the-extinction-tool/"&gt;read my previous reflections on the matter&lt;/a&gt;, let me quote them directly:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If any company or group, anywhere on the planet, builds an artificial superintelligence using anything remotely like current techniques, based on anything remotely like the present understanding of AI, then everyone, everywhere on Earth, will die.&lt;/p&gt;</description></item><item><title>Two Weeks with the Extinction Tool</title><link>https://steadymonkey.eu/blog/two-weeks-with-the-extinction-tool/</link><pubDate>Sat, 25 Oct 2025 12:22:07 +0000</pubDate><guid>https://steadymonkey.eu/blog/two-weeks-with-the-extinction-tool/</guid><description>&lt;blockquote&gt;
&lt;p&gt;I read a book that said AI might kill everyone. I&amp;rsquo;m now using it as a daily tool and &lt;em&gt;enjoying it&lt;/em&gt;, and I don&amp;rsquo;t know what that makes me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Two weeks ago I read &lt;a href="https://ifanyonebuildsit.com"&gt;&amp;ldquo;If Anyone Builds It, Everybody Dies&amp;rdquo;&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20260529023311/https://ifanyonebuildsit.com" title="2026-05-29 archived copy of https://ifanyonebuildsit.com" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
.
I could follow the reasoning.
There&amp;rsquo;s no surprise in the book, the title is &lt;em&gt;it&lt;/em&gt;.
The arguments appear serious enough, and that, even if the authors were inflating the risk, we would still be looking at a sheer cliff humanity is bound to fall off.
So, what if they are right?&lt;/p&gt;</description></item><item><title>How I successfully used an LLM, or my Simon Willison moment</title><link>https://steadymonkey.eu/blog/how-i-successfully-used-an-llm-or-my-simon-willison-moment/</link><pubDate>Fri, 26 Apr 2024 13:26:03 +0000</pubDate><guid>https://steadymonkey.eu/blog/how-i-successfully-used-an-llm-or-my-simon-willison-moment/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://simonwillison.net/about/"&gt;Simon Willison&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20240410150511/https://simonwillison.net/about/" title="2024-04-10 archived copy of https://simonwillison.net/about/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 has a legendary throughput.
No, seriously.
Not only is he a co-creator of &lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20240425234237/https://www.djangoproject.com/" title="2024-04-25 archived copy of https://www.djangoproject.com/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
, he has been publishing interesting software (see &lt;a href="https://datasette.io/"&gt;Datasette&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20240422130818/https://datasette.io/" title="2024-04-22 archived copy of https://datasette.io/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 and &lt;a href="https://simonwillison.net/tags/datasette/"&gt;its gazillion plugins&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20240327131226/https://simonwillison.net/tags/datasette/" title="2024-03-27 archived copy of https://simonwillison.net/tags/datasette/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
) at an outstanding pace.
More recently he has taken the task of making LLM&amp;rsquo;s easy to interact from the CLI with its &lt;a href="https://llm.datasette.io/en/stable/index.html"&gt;&lt;code&gt;llm&lt;/code&gt;&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20240422073247/https://llm.datasette.io/en/stable/index.html" title="2024-04-22 archived copy of https://llm.datasette.io/en/stable/index.html" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 program.
In today&amp;rsquo;s post, I write about my first real success with an LLM.
I shall update my subtitle to &amp;ldquo;He who prompted okay once&amp;rdquo;.&lt;/p&gt;</description></item><item><title>On Domain Events, English, and ubiquitous language</title><link>https://steadymonkey.eu/blog/on-domain-events-english-and-ubiquitous-language/</link><pubDate>Wed, 17 Apr 2024 12:31:37 +0000</pubDate><guid>https://steadymonkey.eu/blog/on-domain-events-english-and-ubiquitous-language/</guid><description>&lt;p&gt;I attended a Python meetup last week, hosted by &lt;a href="https://jobrad.org/"&gt;JobRad&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20240415165625/https://jobrad.org/" title="2024-04-15 archived copy of https://jobrad.org/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
.
The main presentation was a showcase of an &amp;ldquo;Event System&amp;rdquo;, or how they used messages to share customer data between their ERP (&lt;em&gt;Enterprise Resource Planning&lt;/em&gt; , the big database of their processes, inventory, and all other business activities) and their CRM (&lt;em&gt;Customer Relationship Management&lt;/em&gt; , the main piece of software required by customer support with sales orders and support tickets).&lt;/p&gt;</description></item><item><title>Exploring Mainboard housing v1 with cardboard</title><link>https://steadymonkey.eu/blog/exploring-mainboard-housing-v1-with-cardboard/</link><pubDate>Sun, 05 Jun 2022 13:02:14 +0000</pubDate><guid>https://steadymonkey.eu/blog/exploring-mainboard-housing-v1-with-cardboard/</guid><description>&lt;p&gt;Yesterday I played around with cardboard to have a better (physical) sense of the first housing version.
In short, this housing will be the simplest I can build to fit the Mainboard and an Atreus keyboard.
Nothing fancy, not even an internal routing of the USB cable.
In the end I want to build momentum and, considering the blocks of time I can allocate to this project, I figured it would be best to use (very) small increments.&lt;/p&gt;</description></item><item><title>The transportable Mainboard-based computer</title><link>https://steadymonkey.eu/blog/the-transportable-mainboard-based-computer/</link><pubDate>Sun, 29 May 2022 15:17:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/the-transportable-mainboard-based-computer/</guid><description>&lt;p&gt;As I previously mentioned, my goal for the Framework Mainboard I will receive as part of the Mainboard Developer Program is twofold: build 1) a transportable computer that has 2) a better keyboard.
The challenge is mainly about my own lack of experience as a maker.
And that I don&amp;rsquo;t want to use highly specialised equipment such as CNC machining or 3D printing, at least not for the first iterations.&lt;/p&gt;</description></item><item><title>I got in the Framework Mainboard Developer Program</title><link>https://steadymonkey.eu/blog/i-got-in-the-framework-mainboard-developer-program/</link><pubDate>Sat, 21 May 2022 13:58:09 +0000</pubDate><guid>https://steadymonkey.eu/blog/i-got-in-the-framework-mainboard-developer-program/</guid><description>&lt;p&gt;Two weeks ago, I received an e-mail telling me I had been accepted in &lt;em&gt;the Framework Mainboard Developer Program&lt;/em&gt;.
&lt;a href="https://frame.work/"&gt;Framework&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20220521154919/https://frame.work/" title="2022-05-21 archived copy of https://frame.work/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 has a very interesting approach to sustainability in electronics that reminds me of Fairphone, though I don&amp;rsquo;t want to compare them directly.
I worked at Fairphone for more than three years at the time of Fairphone 2, and the modular aspect of the phone was amazing.
I have been following Framework since they launched a crowdfunding campaign for their first generation modular laptop, it&amp;rsquo;s a really positive outcome that they are still there and made it to the second generation.&lt;/p&gt;</description></item><item><title>The cautionary nightmare</title><link>https://steadymonkey.eu/blog/the-cautionary-nightmare/</link><pubDate>Wed, 08 Dec 2021 09:38:15 +0000</pubDate><guid>https://steadymonkey.eu/blog/the-cautionary-nightmare/</guid><description>&lt;p&gt;I had a dream.
Rather, I had a nightmare last night.
It went as dreams go, mixing reality and fantasy.
When I awoke, completely stressed out for the day before morning light could stream through my window, I decided I would not let the dream happen.
Here is the gist.&lt;/p&gt;
&lt;p&gt;In that dream, my brand new laptop that I left in the car was stolen.
Actually the car itself was stolen, but found later with only the laptop missing.
The laptop sleeve was still in the car, though.
Clearly that was the first sign this was ridiculous: who would take the time to take the laptop of its protection sleeve before stealing it?
Anyway, my laptop is a few years old and I don&amp;rsquo;t even own a car.
Details.&lt;/p&gt;</description></item><item><title>More adventures with the NAS</title><link>https://steadymonkey.eu/blog/more-adventures-with-the-nas/</link><pubDate>Wed, 17 Nov 2021 11:14:29 +0000</pubDate><guid>https://steadymonkey.eu/blog/more-adventures-with-the-nas/</guid><description>&lt;p&gt;About ten days ago, I received a scary e-mail from the NAS (it has a name by the way, it&amp;rsquo;s called &lt;em&gt;cactus&lt;/em&gt;): my boot pool was degraded but still operational. The SSD I added not so long ago to mirror the USB drive actually started to fail. TrueNAS detected slow read performance, and eventually detached the drive from the pool of its own accord. Smarty pants.&lt;/p&gt;
&lt;p&gt;I was certainly not expecting the SSD to fail before the USB drive (they were roughly as old), especially given that the SSD did not see much wear and that it was stored in an ESD-safe bag together with a desiccant bag.&lt;/p&gt;</description></item><item><title>Upgrading my NAS to TrueNAS Core</title><link>https://steadymonkey.eu/blog/upgrading-my-nas-to-truenas-core/</link><pubDate>Sun, 24 Oct 2021 19:23:26 +0000</pubDate><guid>https://steadymonkey.eu/blog/upgrading-my-nas-to-truenas-core/</guid><description>&lt;p&gt;Over the course of the week-end, I (finally) upgraded from FreeNAS 11.3 to TrueNAS Core 12.0.&lt;/p&gt;
&lt;p&gt;One of the most notable things with the new version is that it is strongly discouraged to use a USB stick as boot drive.
Since my NAS has an internal USB port for a boot stick, it is of course what I have been using since the beginning: a very small SanDisk Cruzer Fit of 16GB.
Good opportunity to use that old (but unused) Intel SSD of 40GB that has been forgotten in the unnamed box of electronics.&lt;/p&gt;</description></item><item><title>Refreshing my NAS configuration</title><link>https://steadymonkey.eu/blog/refreshing-my-nas-configuration/</link><pubDate>Sat, 28 Aug 2021 20:47:14 +0000</pubDate><guid>https://steadymonkey.eu/blog/refreshing-my-nas-configuration/</guid><description>&lt;p&gt;I setup my Network Attached Storage (NAS) back in 2014 after getting a nice discount on a HP MicroServer of the previous generation.
I added some more ECC RAM, fitted four hard drives, installed FreeNAS, and then happily used it to offload my poor computers of all the media and random stuff I had lying around there.
When I moved out of the country in 2015, I packed light and left the NAS behind.
Until 2021.&lt;/p&gt;</description></item><item><title>Atreus build part 5: Adding external access to the reset pin</title><link>https://steadymonkey.eu/blog/atreus-build-part-5-adding-external-access-to-the-reset-pin/</link><pubDate>Wed, 24 Jun 2020 08:16:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/atreus-build-part-5-adding-external-access-to-the-reset-pin/</guid><description>&lt;p&gt;&lt;em&gt;This post belongs to the &lt;em&gt;Atreus build series&lt;/em&gt;, which was introduced by&lt;/em&gt; &lt;em&gt;&lt;a href="https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/"&gt;Onward with the Atreus keyboard&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The advantage of building your own mechanical keyboard is that you get to choose the software to run on it.
The problem is that you need to place the controller in &amp;ldquo;flashing mode&amp;rdquo; to do just that.&lt;/p&gt;
&lt;p&gt;I learnt my mistake and decided to give myself an easier time to play with the keyboard software and give me better access to the reset pin of the Pro Micro.&lt;/p&gt;</description></item><item><title>Atreus build part 4: Wiring the USB-C breakout board</title><link>https://steadymonkey.eu/blog/atreus-build-part-4-wiring-the-usb-c-breakout-board/</link><pubDate>Fri, 22 May 2020 10:46:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/atreus-build-part-4-wiring-the-usb-c-breakout-board/</guid><description>&lt;p&gt;&lt;em&gt;This post belongs to the &lt;em&gt;Atreus build series&lt;/em&gt;, which was introduced by&lt;/em&gt; &lt;em&gt;&lt;a href="https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/"&gt;Onward with the Atreus keyboard&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The breakout board will give a USB-C socket to the Atreus, much nicer to use than an old —though still omnipresent— micro-B socket.
The breakout board I am using (from Adafruit) takes care of preparing the signals to force the USB-C end as a downstream device through a set of properly placed resistors.
(Downstream devices means it must be connected to a host device, it cannot function on its own or be a host itself.)&lt;/p&gt;</description></item><item><title>Atreus build part 3: Wiring up the switches</title><link>https://steadymonkey.eu/blog/atreus-build-part-3-wiring-up-the-switches/</link><pubDate>Fri, 22 May 2020 09:55:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/atreus-build-part-3-wiring-up-the-switches/</guid><description>&lt;p&gt;&lt;em&gt;This post belongs to the &lt;em&gt;Atreus build series&lt;/em&gt;, which was introduced by&lt;/em&gt; &lt;em&gt;&lt;a href="https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/"&gt;Onward with the Atreus keyboard&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Last night I started soldering the rows and columns.
The rows are connected by diodes (to avoid a bounce back effect from residual current on key up) while the columns are simply wired together.
This multiplexing allows us to only need as many digital inputs as there are columns and rows (11 + 4, the middle thumb keys are in a column of their own).&lt;/p&gt;</description></item><item><title>Atreus build part 2: Glueing the switches</title><link>https://steadymonkey.eu/blog/atreus-build-part-2-glueing-the-switches/</link><pubDate>Wed, 20 May 2020 18:26:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/atreus-build-part-2-glueing-the-switches/</guid><description>&lt;p&gt;&lt;em&gt;This post belongs to the &lt;em&gt;Atreus build series&lt;/em&gt;, which was introduced by&lt;/em&gt; &lt;em&gt;&lt;a href="https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/"&gt;Onward with the Atreus keyboard&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Today I glued the switches on the base plate (the layer that holds them, commonly made of metal to avoid cave-in when typing energetically).
It turned out to be more cumbersome than anticipated.
Especially if you glue up the switches in the wrong direction…&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://steadymonkey.eu/images/2020/05/switches-glued-base-plate-underside.jpg"
 alt="Keyboard base plate viewed from below with switches mounted on top. The switches have been (hot) glued to the wooden plate."&gt;&lt;figcaption&gt;
 &lt;p&gt;All switches glued on the base plate (viewed from under) holding the switches. Switches with a black underside are Gateron Brown while the Kailh Pro Burgundy have a white underside.&lt;/p&gt;</description></item><item><title>Atreus build part 1: Dry fitting the keyboard parts</title><link>https://steadymonkey.eu/blog/atreus-build-part-1-dry-fitting-the-keyboard-parts/</link><pubDate>Sat, 16 May 2020 21:01:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/atreus-build-part-1-dry-fitting-the-keyboard-parts/</guid><description>&lt;p&gt;&lt;em&gt;This post belongs to the &lt;em&gt;Atreus build series&lt;/em&gt;, which was introduced by&lt;/em&gt; &lt;em&gt;&lt;a href="https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/"&gt;Onward with the Atreus keyboard&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I received the laser-cut sheet of plywood yesterday.
This time I will let pictures speak for themselves.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://steadymonkey.eu/images/2020/05/laser-cut-plywood-sheet.jpg"
 alt="A light brown wooden plywood sheet, showing the laser-cut keyboard case components with charred edges from the cutting process."&gt;&lt;figcaption&gt;
 &lt;p&gt;Laser-cut plywood sheet of the individual Atreus casing elements.&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src="https://steadymonkey.eu/images/2020/05/scattered-wooden-keyboard-pieces.jpg"
 alt="Scattered wooden keyboard case pieces with a shiny beeswax finish."&gt;&lt;figcaption&gt;
 &lt;p&gt;Individual casing elements, lightly sanded and coated with beeswax. The two additional spacers at the bottom are spares.&lt;/p&gt;</description></item><item><title>Onward with the Atreus keyboard</title><link>https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/</link><pubDate>Mon, 11 May 2020 13:07:00 +0000</pubDate><guid>https://steadymonkey.eu/blog/onward-with-the-atreus-keyboard/</guid><description>&lt;p&gt;In the last few months, on a quest to find a better keyboard, I&amp;rsquo;ve become totally engrossed with the &lt;a href="https://atreus.technomancy.us/"&gt;Atreus keyboard&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20200508012025/https://atreus.technomancy.us/" title="2020-05-08 archived copy of https://atreus.technomancy.us/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
, a 42-key mechanical keyboard you can build yourself.
Two weeks ago, I placed an order for &lt;a href="https://shop.keyboard.io/products/keyboardio-atreus"&gt;the Keyboard.io Atreus&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20200508123821/https://shop.keyboard.io/products/keyboardio-atreus" title="2020-05-08 archived copy of https://shop.keyboard.io/products/keyboardio-atreus" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
, which features two more keys and will be manufactured out of metal and plastic.
But I am way too excited to wait for another three months until the estimated delivery date.
I will build my own Atreus keyboard in the meantime.&lt;/p&gt;</description></item><item><title>A reentrant context manager in Python</title><link>https://steadymonkey.eu/blog/a-reentrant-context-manager-in-python/</link><pubDate>Sun, 05 Jan 2020 18:43:10 +0000</pubDate><guid>https://steadymonkey.eu/blog/a-reentrant-context-manager-in-python/</guid><description>&lt;p&gt;A Python context manager caters for the boilerplate wrapping a resource to offer safety and convenient (re-)use.
This protocol ensures that once the context is initialised, it will be torn down whatever happens.
Examples of resource handling are input/output operations, session management, thread locking, etc.
In this article, we will take a focus peek at one &amp;ldquo;&lt;a href="https://www.python.org/dev/peps/pep-0020/#the-zen-of-python"&gt;honking great idea&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20191225084248/https://www.python.org/dev/peps/pep-0020/#the-zen-of-python" title="2019-12-25 archived copy of https://www.python.org/dev/peps/pep-0020/#the-zen-of-python" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
&amp;rdquo;: a &lt;strong&gt;reentrant context manager&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;There has been &lt;a href="http://johnj.com/intro-to-context-managers-in-python.html"&gt;many&lt;/a&gt; &lt;a href="https://book.pythontips.com/en/latest/context_managers.html"&gt;articles&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20191228102745/https://book.pythontips.com/en/latest/context_managers.html" title="2019-12-28 archived copy of https://book.pythontips.com/en/latest/context_managers.html" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 and pages of &lt;a href="https://en.wikibooks.org/wiki/Python_Programming/Context_Managers"&gt;documentation&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20191031175507/https://en.wikibooks.org/wiki/Python_Programming/Context_Managers" title="2019-10-31 archived copy of https://en.wikibooks.org/wiki/Python_Programming/Context_Managers" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 to explain why context managers are a good thing, and why you would want to &lt;a href="https://jeffknupp.com/blog/2016/03/07/python-with-context-managers/"&gt;always handle your resources&lt;/a&gt; 



&lt;a href="https://web.archive.org/web/20190917131000/https://jeffknupp.com/blog/2016/03/07/python-with-context-managers/" title="2019-09-17 archived copy of https://jeffknupp.com/blog/2016/03/07/python-with-context-managers/" class="archive-link" target="_blank"&gt;(archived)&lt;/a&gt;
 with them.&lt;/p&gt;</description></item><item><title>Services</title><link>https://steadymonkey.eu/services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://steadymonkey.eu/services/</guid><description>&lt;p&gt;I used to offer Software Engineering services through my company, &lt;em&gt;Steady Monkey&lt;/em&gt;, registered in the Netherlands (VAT identification number: NL003145118B66; Dutch Commercial register number: 76928950). &lt;strong&gt;This company has been closed in September 2020.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can still reach out to me at &lt;code&gt;borjan@this-domain&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>