<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FlakM blog</title><link>https://flakm.com/</link><description>Recent content on FlakM blog</description><generator>Hugo</generator><language>en</language><copyright>Copyright © 2023, Maciej Flak; all rights reserved.</copyright><lastBuildDate>Thu, 13 Nov 2025 12:51:50 +0100</lastBuildDate><atom:link href="https://flakm.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Your Editor Can’t Do This (Unless It’s Good like Neovim)</title><link>https://flakm.com/posts/neovim_references_copy/</link><pubDate>Thu, 13 Nov 2025 12:51:50 +0100</pubDate><guid>https://flakm.com/posts/neovim_references_copy/</guid><description>&lt;h2 id="tell-me-your-editor-can-do-that">
 Tell me your editor can do that!
 &lt;a class="heading-link" href="#tell-me-your-editor-can-do-that">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>Copy a reference to &lt;em>exactly this function&lt;/em> with correct types, at &lt;em>exactly this commit&lt;/em>, paste it anywhere - markdown, slack claude code and jump back to it instantly, even days later.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/q_NK80WzTlQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="why-do-i-need-this">
 Why do I need this?
 &lt;a class="heading-link" href="#why-do-i-need-this">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>I write down every new task in a &lt;strong>&lt;a href="https://jvns.ca/blog/brag-documents/?ref=blog.pragmaticengineer.com" class="external-link" target="_blank" rel="noopener">brag document&lt;/a>&lt;/strong> - idea introduced to me by Julia Evans.&lt;/p></description></item><item><title>Keeping all the balls on fire: tmux-fzf to the rescue 🔥</title><link>https://flakm.com/posts/fuzzy_tmux/</link><pubDate>Thu, 13 Nov 2025 08:42:48 +0100</pubDate><guid>https://flakm.com/posts/fuzzy_tmux/</guid><description>&lt;h2 id="speed-isnt-the-problem---stopping-is">
 Speed isn’t the problem - stopping is
 &lt;a class="heading-link" href="#speed-isnt-the-problem---stopping-is">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>I’ve got three lovely kids, a job I enjoy, and a life that’s basically a juggling act where all the balls might also be on fire.&lt;/p>
&lt;p>Weirdly enough, going fast isn&amp;rsquo;t the issue. Slowing down is. Focusing on one thing, ignoring distractions, avoiding the tax of constant context switching… that’s the real challenge.&lt;/p>
&lt;p>So I try to keep workflows that help me remember which ball is currently on fire. One of those frictions used to be switching between tasks. I open a new tmux session for every thread of work I’m on - a project - and each session gets a name that helps future-me remember what present-me was doing.&lt;/p></description></item><item><title>Aligning with rust's Guiding Principle: my path to finding my 'Why'</title><link>https://flakm.com/posts/rust_guiding_principle/</link><pubDate>Tue, 26 Nov 2024 21:58:34 +0100</pubDate><guid>https://flakm.com/posts/rust_guiding_principle/</guid><description>&lt;h2 id="rusts-guiding-principle">
 Rust&amp;rsquo;s guiding principle
 &lt;a class="heading-link" href="#rusts-guiding-principle">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>I&amp;rsquo;ve been going through a fantastic book &lt;a href="https://www.amazon.com/Start-Why-Leaders-Inspire-Everyone/dp/1591846447" class="external-link" target="_blank" rel="noopener">Start with Why&lt;/a> by Simon Sinek, and I couldn&amp;rsquo;t shake the feeling that it reminded me of something. Then I recalled the talk &lt;strong>Inventing on principle&lt;/strong> by Bret Victor.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/PUv66718DII?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;p>The main point of the talk is that, as a technologist, you can find your guiding principle.&lt;/p></description></item><item><title>Automating the pain away</title><link>https://flakm.com/posts/automate_boring_stuff/</link><pubDate>Sat, 16 Nov 2024 21:33:21 +0100</pubDate><guid>https://flakm.com/posts/automate_boring_stuff/</guid><description>&lt;h2 id="automate-the-unispiring-tasks">
 Automate the unispiring tasks
 &lt;a class="heading-link" href="#automate-the-unispiring-tasks">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>Some tasks do not spark joy. They are repetitive, tedious, and time-consuming. But they need to be done 💀&lt;/p>
&lt;p>A prime example of such a task is changing my markdown notes describing a project to jira entries.&lt;/p>
&lt;p>I like the process of planning the tasks, discussing them with the team, and iterating on the plan. But with the most profound hatred, I don&amp;rsquo;t like the process of creating the jira tickets. The UI is junky, the process is slow, and the whole experience is just a pain.&lt;/p></description></item><item><title>Writing a CV in AsciiDoc and ditching Google Docs</title><link>https://flakm.com/posts/cv_asciidoc/</link><pubDate>Sat, 05 Oct 2024 13:12:46 +0200</pubDate><guid>https://flakm.com/posts/cv_asciidoc/</guid><description>&lt;h2 id="writing-a-cv-a-wrong-way">
 Writing a CV, a wrong way
 &lt;a class="heading-link" href="#writing-a-cv-a-wrong-way">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>I&amp;rsquo;ve historically used Google Docs for my CV. It&amp;rsquo;s a great tool, but I&amp;rsquo;ve had some issues with it for my use case:&lt;/p>
&lt;ul>
&lt;li>Styling was never consistent, and changing styles was difficult&lt;/li>
&lt;li>Since I&amp;rsquo;m not a native English speaker and I&amp;rsquo;m a dyslexic, I had to keep going between sites like Grammarly and docs - which messed with the formatting (and I refuse to have it installed as a browser extension)&lt;/li>
&lt;li>I&amp;rsquo;ve spent sooo fucking much time perfecting nvim configuration and building muscle memory that it felt like a waste not to use it everywhere.&lt;/li>
&lt;li>It never felt fun&lt;/li>
&lt;/ul>
&lt;p>After having a blast with markdown for documentation and personal notes, I&amp;rsquo;ve been looking for a way to write my CV in plain text. I&amp;rsquo;ve researched a few options and decided to go with AsciiDoc.&lt;/p></description></item><item><title>Phantom Menace: memory leak that wasn't there</title><link>https://flakm.com/posts/phantom_leak/</link><pubDate>Mon, 05 Aug 2024 06:38:59 +0200</pubDate><guid>https://flakm.com/posts/phantom_leak/</guid><description>&lt;p>I&amp;rsquo;m always scared of the bug that will finally break me - lose my sanity once and for all.&lt;/p>
&lt;p>The main character, the leaky program, is a legacy rust application - a safe http interface for imagemagick. We are migrating it to Kubernetes.
It handles image processing for our other services - enabling clients to upload images and get them processed and cached on the backend.&lt;/p>
&lt;p>The migration went smoothly - we had a few hiccups, but nothing major. And then the hell broke loose.
I received a message from our devops team that the application was scaling like crazy - we had a memory leak!&lt;/p></description></item><item><title>Securing the blog host</title><link>https://flakm.com/posts/nixos_rust/04_hardening/</link><pubDate>Thu, 27 Jun 2024 08:37:45 +0100</pubDate><guid>https://flakm.com/posts/nixos_rust/04_hardening/</guid><description>&lt;h2 id="setting-up-tailscale">
 Setting up tailscale
 &lt;a class="heading-link" href="#setting-up-tailscale">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>One sad thing is that the host currently exposes SSH over the Internet.
There is also a risk of accidentally exposing another service.
To mitigate this risk, we can use modern VPNs and add additional firewalls on the Hetzner side.&lt;/p>
&lt;p>To avoid the hassle of managing my keys, I’ll be using a generous &lt;a href="https://tailscale.com/unplugged" class="external-link" target="_blank" rel="noopener">tailscale&lt;/a> free tier.
To enable tailscale, we’ll have to add one line in our configuration:&lt;/p></description></item><item><title>Observability: CPU Usage</title><link>https://flakm.com/posts/observability/cpu_usage/</link><pubDate>Tue, 18 Jun 2024 20:40:55 +0200</pubDate><guid>https://flakm.com/posts/observability/cpu_usage/</guid><description>&lt;p>I&amp;rsquo;m going through the fantastic book &lt;a href="https://www.brendangregg.com/books.html" class="external-link" target="_blank" rel="noopener">&amp;ldquo;Systems Performance&amp;rdquo;&lt;/a> by Brendan Gregg.
And I find it very useful to test the tools themselves and see how they work.&lt;/p>
&lt;p>So, I decided to write articles about the tools and techniques Brendan Gregg describes in his book.
I will prepare a sample rust program to generate specific load on the system, and we will use the tools to analyze the system&amp;rsquo;s performance.
We will focus on the tools available on Linux systems to examine each domain.&lt;/p></description></item><item><title>Finding stuff in the terminal</title><link>https://flakm.com/posts/finding_stuff/</link><pubDate>Thu, 28 Mar 2024 08:58:48 +0100</pubDate><guid>https://flakm.com/posts/finding_stuff/</guid><description>&lt;p>Looking for stuff in code is an essential skill in daily tasks.
It lets me keep a laser focus on the problem at hand.
Examples of questions I find myself asking over and over again:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Does this repository contain this variable?&lt;/em>&lt;/li>
&lt;li>&lt;em>What was the context of changing this variable name?&lt;/em>&lt;/li>
&lt;li>&lt;em>Who is the best person to ask questions about this project?&lt;/em>&lt;/li>
&lt;li>&lt;em>What are all the versions of libc on my system?&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>Here are my tips that make this process far more enjoyable.&lt;/p></description></item><item><title>Screaming at the clouds ☁️</title><link>https://flakm.com/posts/nixos_rust/03_deployment/</link><pubDate>Mon, 04 Dec 2023 15:00:00 +0200</pubDate><guid>https://flakm.com/posts/nixos_rust/03_deployment/</guid><description>&lt;h2 id="about-the-infrastructure">
 About the infrastructure
 &lt;a class="heading-link" href="#about-the-infrastructure">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>I&amp;rsquo;ll provision the environment using Hetzner and Cloudflare.
The process could be better but should be simple to maintain and follow.&lt;/p>
&lt;p>&lt;strong>Contents:&lt;/strong>&lt;/p>
&lt;nav id="TableOfContents">
 &lt;ul>
 &lt;li>&lt;a href="#about-the-infrastructure">About the infrastructure&lt;/a>
 &lt;ul>
 &lt;li>&lt;a href="#provisioning-all-the-things">Provisioning all the things&lt;/a>&lt;/li>
 &lt;li>&lt;a href="#environment-setup">Environment setup&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;/li>
 &lt;li>&lt;a href="#-to-">🚢 to ☁️&lt;/a>
 &lt;ul>
 &lt;li>&lt;a href="#host-declarative-configuration">Host declarative configuration&lt;/a>&lt;/li>
 &lt;li>&lt;a href="#provisioning-infrastructure">Provisioning infrastructure&lt;/a>&lt;/li>
 &lt;li>&lt;a href="#job-well-done">Job well done&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;/li>
 &lt;li>&lt;a href="#taking-over-the-ubuntu-host-3">Taking over the ubuntu host &amp;lt;3&lt;/a>&lt;/li>
 &lt;li>&lt;a href="#nixos-deployment">NixOs deployment&lt;/a>
 &lt;ul>
 &lt;li>&lt;a href="#summary">Summary&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;/li>
 &lt;/ul>
&lt;/nav>

&lt;h3 id="provisioning-all-the-things">
 Provisioning all the things
 &lt;a class="heading-link" href="#provisioning-all-the-things">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h3>
&lt;p>To host the code, I&amp;rsquo;ll need two things:&lt;/p></description></item><item><title>Blazing fast module 🚀</title><link>https://flakm.com/posts/nixos_rust/02_integration/</link><pubDate>Mon, 04 Dec 2023 12:00:00 +0200</pubDate><guid>https://flakm.com/posts/nixos_rust/02_integration/</guid><description>&lt;h2 id="lets-expose-the-flake">
 Let&amp;rsquo;s expose the flake!
 &lt;a class="heading-link" href="#lets-expose-the-flake">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>In a &lt;a href="./01_start.md" >previous&lt;/a> post, we built a simplistic but blazing-fast HTTP server that returns a hello world HTML page.
It produces an elf binary that we can run. It&amp;rsquo;s where nixos starts.&lt;/p>
&lt;p>We&amp;rsquo;ll have to expose this piece of code as a nixos module.
A nixos module is just a function that takes inputs and returns additional output evaluated when the whole system is built [^1]
That sounds cool, but it&amp;rsquo;s pretty challenging to grasp without knowing how to use it in practice.&lt;/p></description></item><item><title>Measure twice cut once with NixOs</title><link>https://flakm.com/posts/nixos_rust/01_start/</link><pubDate>Fri, 10 Nov 2023 12:00:00 +0200</pubDate><guid>https://flakm.com/posts/nixos_rust/01_start/</guid><description>&lt;h2 id="building-a-personal-tech-blog">
 Building a personal tech blog
 &lt;a class="heading-link" href="#building-a-personal-tech-blog">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>Building a personal blog can be daunting, especially when choosing the right solution that will get out of the way.
Therefore, I&amp;rsquo;d like to have a static site generator split the site and add ActivityPub integration to interact with it over time.&lt;/p>
&lt;p>I&amp;rsquo;ve also decided on self-hosting and using open protocols, especially after last year showed that building on top of free stuff is only sustainable in the short run. Not when the money stops being free.&lt;/p></description></item><item><title>The impossible case of pitching rust in a web dev shop</title><link>https://flakm.com/posts/rust_why_dev_shop/</link><pubDate>Sun, 18 Sep 2022 12:12:24 +0200</pubDate><guid>https://flakm.com/posts/rust_why_dev_shop/</guid><description>Short research about making decision to use rust in medium web development shop.</description></item><item><title>Simple rust interview questions</title><link>https://flakm.com/posts/rust_interview_questions/</link><pubDate>Sun, 08 May 2022 14:12:20 +0100</pubDate><guid>https://flakm.com/posts/rust_interview_questions/</guid><description>&lt;p>List of interview questions along with minimal answers. A good question should:&lt;/p>
&lt;ol>
&lt;li>Check ability to think outside the box&lt;/li>
&lt;li>Check deep understanding of key concepts&lt;/li>
&lt;li>Invite discussion&lt;/li>
&lt;li>Check ability to communicate tricky parts of the technology&lt;/li>
&lt;li>Check formal knowledge of the domain&lt;/li>
&lt;/ol></description></item><item><title>Profiling heap allocation in rust</title><link>https://flakm.com/posts/heap_allocation/</link><pubDate>Mon, 07 Mar 2022 14:12:20 +0100</pubDate><guid>https://flakm.com/posts/heap_allocation/</guid><description>How to understand and then profile heap memory usage in rust application. With the company with old friends: &lt;code>pmap&lt;/code>, &lt;code>strace&lt;/code> and &lt;code>heaptrack&lt;/code></description></item><item><title>Rustberry PI - DHT11</title><link>https://flakm.com/posts/rustydht11/</link><pubDate>Sun, 02 Aug 2020 13:12:54 +0200</pubDate><guid>https://flakm.com/posts/rustydht11/</guid><description>Uczę się obsługiwać czujnik wilgoci i temperatury DHT11 z użyciem rust i prezentuję wyników na ekranie lcd używając biblioteki zbudowanej w poprzednim wpisie</description></item><item><title>Rustberry PI - LCD</title><link>https://flakm.com/posts/rustylcd/</link><pubDate>Wed, 01 Jul 2020 14:20:17 +0200</pubDate><guid>https://flakm.com/posts/rustylcd/</guid><description>Uczę się podłączać i z sukcesem wyświetlić napis na wyświetlaczu LCD 2x16 znaków opartym na kontrolerze HD44780 z rustem.</description></item><item><title>Rustberry PI - LED</title><link>https://flakm.com/posts/rustyled/</link><pubDate>Wed, 01 Jul 2020 14:13:56 +0200</pubDate><guid>https://flakm.com/posts/rustyled/</guid><description>Nie krótko i nie na temat o tym jak uczę się czym jest GPIO, jak się nim steruje na oraz w efekcie - jak zapalać diodę LED przy wykorzystaniu GPIO i rusta 🦀</description></item><item><title>About me</title><link>https://flakm.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flakm.com/about/</guid><description>&lt;p>Hey, my name is Maciek. I&amp;rsquo;m a husband, dad, minimalist and technology nerd.&lt;/p>
&lt;p>I&amp;rsquo;ve found out that I enjoy looking at terminals a lot during a completely unrelated major in finance.&lt;/p>
&lt;p>I&amp;rsquo;m passinate about building software that is:&lt;/p>
&lt;ul>
&lt;li>high quality ✅&lt;/li>
&lt;li>reliable 🔒&lt;/li>
&lt;li>on time ⏰&lt;/li>
&lt;li>easy to maintain 🛠️&lt;/li>
&lt;/ul>
&lt;p>I&amp;rsquo;ve always worked on networked, critical backend applications. I enjoy debugging hard problems and I&amp;rsquo;m absolutely nuts about my tooling.&lt;/p></description></item><item><title>Hire me!</title><link>https://flakm.com/hire_me/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flakm.com/hire_me/</guid><description>&lt;p>My name is Maciek Flak, and I&amp;rsquo;m looking for a new remote job! Here are the reasons why you should consider hiring me:&lt;/p>
&lt;ul>
&lt;li>🦀 I&amp;rsquo;m a rust software engineer from Poland 🦀&lt;/li>
&lt;li>🎯 I&amp;rsquo;m a goal-oriented person who loves to deliver value 🎯&lt;/li>
&lt;li>📈 I have experience with high-quality observability and monitoring 📈&lt;/li>
&lt;li>🐛 I&amp;rsquo;m good at debugging and fixing crazy hard problems 🐛&lt;/li>
&lt;li>🏃 I can help to shorten feedback loops with CI/CD 🏃&lt;/li>
&lt;li>🚀 I&amp;rsquo;m passionate about systems performance 🚀&lt;/li>
&lt;li>🤝 I value open communication and a healthy work-life balance 🤝&lt;/li>
&lt;/ul>
&lt;h2 id="background">
 Background
 &lt;a class="heading-link" href="#background">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>For the last three years, I&amp;rsquo;ve worked with rust in many different contexts, mainly building critical and heavy-traffic web services that serve multiple TBs of data with the lowest latency possible.&lt;/p></description></item></channel></rss>