<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>mkz.me</title>
		<link>https://mkz.me/</link>
		<description>Recent content on mkz.me</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Tue, 08 Sep 2026 22:26:59 +0200</lastBuildDate>
		
			<atom:link href="https://mkz.me/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Using VS Code remote SSH with fish as login shell</title>
				<link>https://mkz.me/til/shell/vscode-remote-ssh-with-fish/</link>
				<pubDate>Tue, 08 Sep 2026 22:26:59 +0200</pubDate>
				<guid>https://mkz.me/til/shell/vscode-remote-ssh-with-fish/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://code.visualstudio.com/docs/remote/ssh&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;VS Code remote SSH&lt;/a&gt; would not&#xA;connect to a machine where my login shell was &lt;code&gt;fish&lt;/code&gt;. It installs and starts&#xA;its server side by running a POSIX shell script over the SSH connection, and&#xA;fish does not run those.&lt;/p&gt;&#xA;&lt;p&gt;The fix is to keep a POSIX shell as the &lt;em&gt;login&lt;/em&gt; shell and hand over to fish&#xA;only for interactive sessions. Change the login shell back:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ chsh -s /bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;then, in &lt;code&gt;~/.bashrc&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Weekly links (Ed. 13)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-013/</link>
				<pubDate>Tue, 20 May 2025 22:03:04 +0200</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-013/</guid>
				<description>What I&amp;rsquo;ve read, done and learned this week. Talking about tech jobs, Discord, and Golang (and a bit of AI).</description>
			</item>
			<item>
				<title>cosign</title>
				<link>https://mkz.me/til/oci/cosign/</link>
				<pubDate>Sun, 27 Apr 2025 17:07:08 +0200</pubDate>
				<guid>https://mkz.me/til/oci/cosign/</guid>
				<description>&lt;h2 id=&#34;set-up-new-keys&#34;&gt;&#xA;  set up new keys&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#set-up-new-keys&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;set &lt;span class=&#34;na&#34;&gt;-x&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;COSIGN_PASSWORD&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;pwgen&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;-sy&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;cosign &lt;span class=&#34;na&#34;&gt;--verbose&lt;/span&gt; generate-key-pair&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Private&lt;/span&gt; key written to cosign.key&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Public&lt;/span&gt; key written to cosign.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;sign-an-image&#34;&gt;&#xA;  sign an image&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#sign-an-image&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;docker pull registry.mkz.me/mycroft/golang-cdk8s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;cosign sign &lt;span class=&#34;na&#34;&gt;--key&lt;/span&gt; cosign.key &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;docker&lt;/span&gt; inspect registry.mkz.me/mycroft/golang-cdk8s &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;jq&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;-r&lt;/span&gt; .&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;.RepoDigests&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;--tlog-upload&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;false&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Pushing&lt;/span&gt; signature to: registry.mkz.me/mycroft/golang-cdk8s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: to add tags, just &lt;code&gt;-a&lt;/code&gt;: &lt;code&gt;-a author=&amp;quot;Patrick MARIE&amp;quot;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;verify-an-image&#34;&gt;&#xA;  verify an image&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#verify-an-image&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;cosign&lt;/span&gt; verify &lt;span class=&#34;na&#34;&gt;--key&lt;/span&gt; cosign.pub  &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;docker&lt;/span&gt; inspect registry.mkz.me/mycroft/golang-cdk8s &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;jq&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;-r&lt;/span&gt; .&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;.RepoDigests&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;--private-infrastructure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;true&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Verification&lt;/span&gt; for registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817 &lt;span class=&#34;na&#34;&gt;--&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;The&lt;/span&gt; following checks were performed on each of these signatures:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;na&#34;&gt;- The&lt;/span&gt; cosign claims were validated&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;na&#34;&gt;- The&lt;/span&gt; signatures were verified against the specified public key&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;critical&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;identity&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;docker-reference&amp;#34;&lt;/span&gt;:&lt;span class=&#34;s2&#34;&gt;&amp;#34;registry.mkz.me/mycroft/golang-cdk8s&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;,&lt;span class=&#34;s2&#34;&gt;&amp;#34;image&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;docker-manifest-digest&amp;#34;&lt;/span&gt;:&lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;,&lt;span class=&#34;s2&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;:&lt;span class=&#34;s2&#34;&gt;&amp;#34;cosign container image signature&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;,&lt;span class=&#34;s2&#34;&gt;&amp;#34;optional&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;author&amp;#34;&lt;/span&gt;:&lt;span class=&#34;s2&#34;&gt;&amp;#34;Patrick MARIE&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>notation</title>
				<link>https://mkz.me/til/oci/notation/</link>
				<pubDate>Sun, 27 Apr 2025 17:07:08 +0200</pubDate>
				<guid>https://mkz.me/til/oci/notation/</guid>
				<description>&lt;h2 id=&#34;create-testing-certificate&#34;&gt;&#xA;  Create testing certificate&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#create-testing-certificate&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation cert generate-test &lt;span class=&#34;na&#34;&gt;--default&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;registry.mkz.me&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;generating&lt;/span&gt; RSA Key with &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt; bits&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;generated&lt;/span&gt; certificate expiring on &lt;span class=&#34;m&#34;&gt;2025&lt;/span&gt;-&lt;span class=&#34;m&#34;&gt;04&lt;/span&gt;-18T19:&lt;span class=&#34;m&#34;&gt;04&lt;/span&gt;:06Z&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;wrote&lt;/span&gt; key: /home/mycroft/.config/notation/localkeys/registry.mkz.me.key&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;wrote&lt;/span&gt; certificate: /home/mycroft/.config/notation/localkeys/registry.mkz.me.crt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Successfully&lt;/span&gt; added registry.mkz.me.crt to named store registry.mkz.me of &lt;span class=&#34;nb&#34;&gt;type &lt;/span&gt;ca&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;registry&lt;/span&gt;.mkz.me: added to the key list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;registry&lt;/span&gt;.mkz.me: mark as default signing key&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;listing-certificates&#34;&gt;&#xA;  Listing certificates&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#listing-certificates&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation cert list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;STORE&lt;/span&gt; TYPE   STORE NAME        CERTIFICATE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;ca&lt;/span&gt;           registry.mkz.me   registry.mkz.me.crt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation key ls&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;NAME&lt;/span&gt;                KEY PATH                                                       CERTIFICATE PATH                                               ID   PLUGIN NAME&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* registry.mkz.me   /home/mycroft/.config/notation/localkeys/registry.mkz.me.key   /home/mycroft/.config/notation/localkeys/registry.mkz.me.crt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;signing-an-image&#34;&gt;&#xA;  Signing an image&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#signing-an-image&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation sign registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Successfully&lt;/span&gt; signed registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation ls registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;registry&lt;/span&gt;.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── application/vnd.cncf.notary.signature&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── sha256:d5f4495b9f5d73054764fd6933dc5efb1312129ac0762a5fecf026116b167d0a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── sha256:e9e0feffe6c92690a6997c469a1e3ea3ce7ac9d8a122c1203892893065faf612&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;verifying-the-image&#34;&gt;&#xA;  Verifying the image&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#verifying-the-image&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;create-a-trustpolicy-to-be-used&#34;&gt;&#xA;  Create a trustpolicy to be used:&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#create-a-trustpolicy-to-be-used&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;cat trustpolicy.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;trustPolicies&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span class=&#34;s2&#34;&gt;&amp;#34;trust-policy-example&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;registryScopes&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;signatureVerification&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;level&amp;#34;&lt;/span&gt; : &lt;span class=&#34;s2&#34;&gt;&amp;#34;strict&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;trustStores&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ca:registry.mkz.me&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;trustedIdentities&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;cp trustpolicy.json ~/.config/notation/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;verify-the-signature&#34;&gt;&#xA;  Verify the signature&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#verify-the-signature&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation sign registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Successfully&lt;/span&gt; signed registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ &lt;/span&gt;notation verify registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;Successfully&lt;/span&gt; verified signature for registry.mkz.me/mycroft/golang-cdk8s@sha256:519af160c31be0b3f012ba7ede74137bfef9ac546e1845486a6d579e7266e817&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Guides</title>
				<link>https://mkz.me/til/misc/guides/</link>
				<pubDate>Sun, 27 Apr 2025 17:03:58 +0200</pubDate>
				<guid>https://mkz.me/til/misc/guides/</guid>
				<description>&lt;h2 id=&#34;devops&#34;&gt;&#xA;  DevOps&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#devops&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://itrevolution.com/articles/the-three-ways-principles-underpinning-devops/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;The Three Ways: The Principles Underpinning DevOps&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;code&#34;&gt;&#xA;  Code&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#code&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.zenprogrammer.org/en/10-rules-of-a-zen-programmer.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;The Ten Rules of a Zen Programmer&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://artisandeveloppeur.fr/software-craftsmanship/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Qu’est-ce que le Software Craftsmanship ?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.octo.com/architecture-hexagonale-trois-principes-et-un-exemple-dimplementation&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Architecture Hexagonale : trois principes et un exemple d&amp;rsquo;implémentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Weekly links (Ed. 12)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-012/</link>
				<pubDate>Sun, 27 Apr 2025 16:48:15 +0200</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-012/</guid>
				<description>What I&amp;rsquo;ve read, done and learned this week.</description>
			</item>
			<item>
				<title>Removing files from repository</title>
				<link>https://mkz.me/til/git/remove-file-from-repository/</link>
				<pubDate>Wed, 23 Apr 2025 08:44:05 +0200</pubDate>
				<guid>https://mkz.me/til/git/remove-file-from-repository/</guid>
				<description>&lt;p&gt;There is a nice command to help rewriting whole repository without much hassle: &amp;lsquo;git-filter-repo&amp;rsquo;. In this use case, I used it to remove some directory files entirely (so I could push the repository to github)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git filter-repo --force --filename-callback &lt;span class=&#34;s1&#34;&gt;&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  if b&amp;#34;fake_data/&amp;#34; in filename:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    return None&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  else:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    return filename&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If for each entry the name is None, nothing will be kept in the history as all commits with the filename will be rewritten, removing the file in the objects of the commit. If commit becomes empty, it is removed from the history.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Weekly links (Ed. 11)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-011/</link>
				<pubDate>Fri, 18 Apr 2025 21:07:23 +0200</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-011/</guid>
				<description>What I&amp;rsquo;ve read, done and learned this past month.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 10)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-010/</link>
				<pubDate>Sun, 23 Mar 2025 18:48:21 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-010/</guid>
				<description>What I&amp;rsquo;ve read, done and learned this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 9)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-009/</link>
				<pubDate>Sun, 09 Mar 2025 08:40:42 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-009/</guid>
				<description>What I&amp;rsquo;ve read, done and learned this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 8)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-008/</link>
				<pubDate>Sun, 02 Mar 2025 18:30:28 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-008/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 7)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-007/</link>
				<pubDate>Sun, 23 Feb 2025 09:31:02 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-007/</guid>
				<description>What I&amp;rsquo;ve read and done the last 2 weeks</description>
			</item>
			<item>
				<title>Weekly links (Ed. 6)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-006/</link>
				<pubDate>Sun, 09 Feb 2025 14:41:30 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-006/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 5)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-005/</link>
				<pubDate>Sun, 02 Feb 2025 10:29:15 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-005/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 4)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-004/</link>
				<pubDate>Sat, 25 Jan 2025 17:48:28 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-004/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 3)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-003/</link>
				<pubDate>Sun, 19 Jan 2025 21:19:24 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-003/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 2)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-002/</link>
				<pubDate>Sun, 12 Jan 2025 18:28:01 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-002/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Weekly links (Ed. 1)</title>
				<link>https://mkz.me/weblog/weekly-updates/lotw-001/</link>
				<pubDate>Sat, 04 Jan 2025 14:28:59 +0100</pubDate>
				<guid>https://mkz.me/weblog/weekly-updates/lotw-001/</guid>
				<description>What I&amp;rsquo;ve read and done this week.</description>
			</item>
			<item>
				<title>Rust crates</title>
				<link>https://mkz.me/til/rust/crates/</link>
				<pubDate>Fri, 03 Jan 2025 21:00:09 +0100</pubDate>
				<guid>https://mkz.me/til/rust/crates/</guid>
				<description>&lt;p&gt;The goal of this memo is to list the rust crates I need to use in my projects.&lt;/p&gt;&#xA;&lt;h2 id=&#34;tracing--tracing_subscriber&#34;&gt;&#xA;  tracing &amp;amp; tracing_subscriber&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#tracing--tracing_subscriber&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.rs/tracing/latest/tracing/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;tracing&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.rs/tracing-subscriber/latest/tracing_subscriber/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;tracing_subscriber&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tokio.rs/blog/2019-08-tracing&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Diagnostics with Tracing&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://lpalmieri.com/posts/2020-09-27-zero-to-production-4-are-we-observable-yet/#5-structured-logging&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Are we observable yet? An introduction to Rust telemetry&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.shuttle.dev/blog/2024/01/09/getting-started-tracing-rust&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Getting Started with Tracing in Rust&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=21rtHinFA40&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Decrusting the tracing crate&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Basic minio install</title>
				<link>https://mkz.me/til/minio/basic-setup/</link>
				<pubDate>Sun, 22 Dec 2024 17:08:33 +0100</pubDate>
				<guid>https://mkz.me/til/minio/basic-setup/</guid>
				<description>&lt;p&gt;No real instruct, just enough to get minio up &amp;amp; running:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -LO https://dl.min.io/server/minio/release/linux-amd64/minio&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -LO https://dl.min.io/client/mc/release/linux-amd64/mc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./minio server storage&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API: http://127.0.0.1:9000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   RootUser: minioadmin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   RootPass: minioadmin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;WebUI: http://127.0.0.1:37847&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   RootUser: minioadmin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   RootPass: minioadmin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CLI: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   $ mc &lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;myminio&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;http://10.0.0.6:9000&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;minioadmin&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;minioadmin&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./mc &lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; testaroo http://127.0.0.1:9000 minioadmin minioadmin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Added &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;testaroo&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; successfully.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./mc mb testaroo/my-bucket&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bucket created successfully &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;testaroo/my-bucket&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./mc admin user add testaroo accesskey secretkey&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Added user &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;accesskey&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; successfully.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./mc admin policy attach testaroo readwrite --user accesskey&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Attached Policies: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;readwrite&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -x AWS_SECRET_ACCESS_KEY secretkey&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -x AWS_ACCESS_KEY_ID accesskey&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -x AWS_ENDPOINT_URL http://127.0.0.1:9000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws s3 ls s3://&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2024-12-08 19:28:50 my-bucket&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws s3 cp /etc/passwd s3://my-bucket/passwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;upload: ../../etc/passwd to s3://my-bucket/passwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;To User: accesskey&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Updating nix</title>
				<link>https://mkz.me/til/nix/updating-nix/</link>
				<pubDate>Sun, 17 Nov 2024 19:52:35 +0100</pubDate>
				<guid>https://mkz.me/til/nix/updating-nix/</guid>
				<description>&lt;p&gt;It seems like nix requires updating time to time. To update nix on a linux multi-user system:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ su -&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# nix-env --install --file &amp;#39;&amp;lt;nixpkgs&amp;gt;&amp;#39; --attr nix cacert -I nixpkgs=channel:nixpkgs-unstable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# systemctl daemon-reload&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# systemctl restart nix-daemon&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On a single-user system:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ nix-env --install --file &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;nixpkgs&amp;gt;&amp;#39;&lt;/span&gt; --attr nix cacert -I &lt;span class=&#34;nv&#34;&gt;nixpkgs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;channel:nixpkgs-unstable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;resources&#34;&gt;&#xA;  Resources&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#resources&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nix.dev/manual/nix/2.25/installation/upgrading&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Upgrading Nix&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Jujutsu: a practical intro</title>
				<link>https://mkz.me/weblog/posts/jujutsu-a-practical-intro/</link>
				<pubDate>Sun, 27 Oct 2024 08:36:46 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/jujutsu-a-practical-intro/</guid>
				<description>My intro to jujutsu</description>
			</item>
			<item>
				<title>CTF: CERT-SE 2024 (cyber security month)</title>
				<link>https://mkz.me/weblog/posts/ctf-cert-se-2024/</link>
				<pubDate>Sat, 26 Oct 2024 17:32:22 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/ctf-cert-se-2024/</guid>
				<description>Write up of the CERT-SE 2024 CTF</description>
			</item>
			<item>
				<title>Basic RSA with python</title>
				<link>https://mkz.me/til/cryptography/basic-rsa-with-python/</link>
				<pubDate>Wed, 02 Oct 2024 11:53:06 +0200</pubDate>
				<guid>https://mkz.me/til/cryptography/basic-rsa-with-python/</guid>
				<description>&lt;p&gt;RSA (Rivest-Shamir-Adleman) is a public-key cryptosystem widely used for secure data transmission.&#xA;It works by computing 2 large primes, and using the factor of those two as a public key.&lt;/p&gt;&#xA;&lt;p&gt;The algorithm is as simple as:&lt;/p&gt;&#xA;&lt;p&gt;Key generation:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Choose/compute 2 large primes, p &amp;amp; q&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Calculate the factor of those 2: n = p * q&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Compute φ(n) = (p-1) * (q-1)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Choose a public exponent e, that is coprime to φ(n) (usually 3, 5, 17, 257, or 65537)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Decrypt ntlm v2 hmac-md5 hashes with hashcat</title>
				<link>https://mkz.me/til/security/decrypt-ntlm-v2-hmac-md5-hashes/</link>
				<pubDate>Mon, 30 Sep 2024 12:49:43 +0200</pubDate>
				<guid>https://mkz.me/til/security/decrypt-ntlm-v2-hmac-md5-hashes/</guid>
				<description>&lt;p&gt;On a recent challenge, a &lt;code&gt;pcapng&lt;/code&gt; file containing a ntlm2 authentication exchange was given and it was asked to find out the password.&lt;/p&gt;&#xA;&lt;p&gt;A hmac-md5 ntlm v2 auth is based on a server challenge, with which the client will compute a &lt;code&gt;NTProofStr&lt;/code&gt; with the request data (ntlmv2 response without the ntproofstr).&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;wireshark&lt;/code&gt; decodes everything quickly, just find out the two packets:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;STATUS_MORE_PROCESSING_REQUIRED, NTLMSSP_CHALLENGE that contains &lt;code&gt;NTLM Server Challenge&lt;/code&gt;;&lt;/li&gt;&#xA;&lt;li&gt;NTLMSSP_AUTH, User: &amp;lt;domain&amp;gt;\user that contains the NTLMv2 response with the &lt;code&gt;NTProofStr&lt;/code&gt; and the authentication data.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;running-hashcat&#34;&gt;&#xA;  Running hashcat&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#running-hashcat&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;An hashfile composed of the username, domain, server challenge, ntlm proof and data is required to try to crack the user password.&lt;/p&gt;</description>
			</item>
			<item>
				<title>(neo)Vim cheatsheet</title>
				<link>https://mkz.me/til/vim/vim-cheatsheet/</link>
				<pubDate>Thu, 26 Sep 2024 16:08:00 +0200</pubDate>
				<guid>https://mkz.me/til/vim/vim-cheatsheet/</guid>
				<description>&lt;h2 id=&#34;moving-the-cursor-aka-motion&#34;&gt;&#xA;  Moving the cursor (aka motion)&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#moving-the-cursor-aka-motion&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;k ~ go up&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;j ~ go down&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;h ~ go left&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;l ~ go right&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;e ~ go to end of next word&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;w ~ go to start of next word&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;$ ~ go to end of line&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&amp;lt;num&amp;gt;&amp;lt;motion&amp;gt; - repeat motion num times&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;0 ~ go to start of line&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;G ~ go to end of file&lt;/p&gt;</description>
			</item>
			<item>
				<title>Retrieve Github contributions with GraphQL</title>
				<link>https://mkz.me/til/git/retrieve-github-contributions-with-graphql/</link>
				<pubDate>Wed, 25 Sep 2024 22:26:12 +0200</pubDate>
				<guid>https://mkz.me/til/git/retrieve-github-contributions-with-graphql/</guid>
				<description>&lt;p&gt;The Github API provides an interface to retrieve a lot of informations about your account and especially daily contributions. This requires a simple github token (with &lt;code&gt;user:read&lt;/code&gt; permissions)&lt;/p&gt;&#xA;&lt;h2 id=&#34;retrieve-with-a-simple-shellcurl-query&#34;&gt;&#xA;  Retrieve with a simple shell/curl query&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#retrieve-with-a-simple-shellcurl-query&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ curl -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: bearer &amp;lt;your token&amp;gt;&amp;#34;&lt;/span&gt; -X POST -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;query&amp;#34;: &amp;#34;query { user(login: \&amp;#34;mycroft\&amp;#34;) { contributionsCollection { contributionCalendar { totalContributions } } } }&amp;#34;}&amp;#39;&lt;/span&gt; https://api.github.com/graphql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;contributionsCollection&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;contributionCalendar&amp;#34;&lt;/span&gt;:&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;totalContributions&amp;#34;&lt;/span&gt;:1088&lt;span class=&#34;o&#34;&gt;}}}}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;complete-python-code&#34;&gt;&#xA;  Complete Python code&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#complete-python-code&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;requests&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timedelta&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;collections&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;defaultdict&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_contributions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;access_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    query ($username: String!, $from: DateTime!, $to: DateTime!) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;      user(login: $username) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        contributionsCollection(from: $from, to: $to) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;          contributionCalendar {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            weeks {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;              contributionDays {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;                date&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;                contributionCount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;              }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;          }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;      }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;variables&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;from&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start_date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isoformat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;to&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end_date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isoformat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;access_token&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://api.github.com/graphql&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                             &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;query&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;variables&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;variables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                             &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Query failed with status code: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;. &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;username&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;mycroft&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;access_token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;your token&amp;gt;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;end_date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;start_date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end_date&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timedelta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;days&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;365&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_contributions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end_date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;access_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;monthly_contributions&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;group_contributions_by_month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;count&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;monthly_contributions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;items&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;month&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; contrib.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;An error occurred: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will output a simple dictionnary to parse to retrieve daily/monthly/yearly contributions.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Enabling or disabling tracing</title>
				<link>https://mkz.me/til/ebpf/enabling-and-disabling-tracing/</link>
				<pubDate>Tue, 24 Sep 2024 14:51:04 +0200</pubDate>
				<guid>https://mkz.me/til/ebpf/enabling-and-disabling-tracing/</guid>
				<description>&lt;p&gt;It is possible to use &lt;code&gt;/sys/kernel/debug/tracing/tracing_on&lt;/code&gt; to enable or disable tracing for debugging purpose.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Enabling tracing&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &amp;gt; /sys/kernel/debug/tracing/tracing_on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Disabling tracing&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &amp;gt; /sys/kernel/debug/tracing/tracing_on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;resources&#34;&gt;&#xA;  Resources&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#resources&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.kernel.org/trace/ftrace.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;ftrace - Function Tracer&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Reading the object tree</title>
				<link>https://mkz.me/til/git/reading-object-tree/</link>
				<pubDate>Tue, 24 Sep 2024 13:25:59 +0200</pubDate>
				<guid>https://mkz.me/til/git/reading-object-tree/</guid>
				<description>&lt;p&gt;&lt;code&gt;git cat-file&lt;/code&gt; allows opening and reading commits/tree/blogs without any hassle. Starting with a commit &lt;code&gt;hash&lt;/code&gt;, it is possible to find out what&amp;rsquo;s there is in the given commit, to which tree it is attached, parent, etc.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git rev-parse HEAD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;39f40cf0d0b31b16e235f07853d74167c72c1d8b&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git cat-file -p 39f40cf0d0b31b16e235f07853d74167c72c1d8b&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tree 5ee8a97718dd4662373ea5e722b008f03b7d229e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;parent 79b04c1d8b3f275c37a6f4bd0b42d35ccaf42505&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;author Patrick Marie &amp;lt;pm@mkz.me&amp;gt; &lt;span class=&#34;m&#34;&gt;1726849801&lt;/span&gt; +0200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;committer Patrick Marie &amp;lt;pm@mkz.me&amp;gt; &lt;span class=&#34;m&#34;&gt;1726849801&lt;/span&gt; +0200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Updating scylla/scylla-operator from v1.13.0 to v1.14.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git cat-file -p 5ee8a97718dd4662373ea5e722b008f03b7d229e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;100644&lt;/span&gt; blob e2b5b73f808c496be73f4e399090a6ae63818bf2&#x9;.drone.yml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;100644&lt;/span&gt; blob 55e7b6e6698a2a415ef1f4d5df92a8ec77817cc9&#x9;.gitignore&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;100644&lt;/span&gt; blob 20f1ead4b88ab9abadb951cf2a226aecd7aa633b&#x9;.golangci.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;100644&lt;/span&gt; blob bcc630c55a74759a730809306bdedcae93a5c68c&#x9;.justfile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Reading a blob is similar:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Creating a basic eBPF app in C</title>
				<link>https://mkz.me/til/ebpf/creating-basic-ebpf-app-in-c/</link>
				<pubDate>Mon, 23 Sep 2024 17:10:40 +0200</pubDate>
				<guid>https://mkz.me/til/ebpf/creating-basic-ebpf-app-in-c/</guid>
				<description>&lt;p&gt;This is a basic eBPF program binding &lt;code&gt;xdp&lt;/code&gt; on your preferred interface (default is &lt;code&gt;lo&lt;/code&gt;), and will print some trace in &lt;code&gt;/sys/kernel/debug/tracing/trace_pipe&lt;/code&gt; for each packet received.&lt;/p&gt;&#xA;&lt;h2 id=&#34;kernel&#34;&gt;&#xA;  Kernel&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#kernel&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The eBPF program (ie: kernel part) is looking as the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;stddef.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;linux/bpf.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;linux/in.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;linux/if_ether.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;linux/ip.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;bpf/bpf_helpers.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;bpf/bpf_endian.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SEC&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;xdp&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;int basic&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;struct xdp_md *ctx&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    bpf_printk&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;hello xdp&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; XDP_PASS&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;char _license&lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt; SEC&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;license&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;GPL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;userland&#34;&gt;&#xA;  Userland&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#userland&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;unistd.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;lt;net/if.h&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#include &amp;#34;basic_kern.skel.h&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;int main&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;int argc, char **argv&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    char *interface_name &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lo&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    struct basic_kern *skel&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    int &lt;span class=&#34;nv&#34;&gt;ret&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;argc &amp;gt; 1&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;interface_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; argv&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;argc - 1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    unsigned int &lt;span class=&#34;nv&#34;&gt;ifindex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; if_nametoindex&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;interface_name&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ifindex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; 0&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        fprintf&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;stderr, &lt;span class=&#34;s2&#34;&gt;&amp;#34;ERROR: failed to retrieve interface index of %s&amp;#34;&lt;/span&gt;, interface_name&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;skel&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; basic_kern__open&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;!skel&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        fprintf&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;stderr, &lt;span class=&#34;s2&#34;&gt;&amp;#34;ERROR: failed to open BPF skeleton\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;ret&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; basic_kern__load&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;skel&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ret&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        fprintf&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;stderr, &lt;span class=&#34;s2&#34;&gt;&amp;#34;Failed to load BPF skeleton\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        goto cleanup&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    bpf_program__attach_xdp&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;skel-&amp;gt;progs.basic, ifindex&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    // ... &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; the trace output, sleep, &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; whatever is needed to avoid program to quit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cleanup:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    basic_kern__destroy&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;skel&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; ret&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: the &lt;code&gt;basic_kern.skel.h&lt;/code&gt; file is generated with &lt;code&gt;bpftool&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Zig: Using fieldParentPtr</title>
				<link>https://mkz.me/weblog/posts/zig-using-fieldparentptr/</link>
				<pubDate>Sun, 22 Sep 2024 10:33:01 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/zig-using-fieldparentptr/</guid>
				<description>Using fieldParentPtr to generically handle kind of object values</description>
			</item>
			<item>
				<title>Objects modules in Zig with fieldParentPtr</title>
				<link>https://mkz.me/til/zig/objects-with-fieldparentptr/</link>
				<pubDate>Sun, 22 Sep 2024 10:17:15 +0200</pubDate>
				<guid>https://mkz.me/til/zig/objects-with-fieldparentptr/</guid>
				<description>&lt;p&gt;&lt;code&gt;fieldParentPtr&lt;/code&gt; can be useful in case it is required to create multiple kind of objects all based on a common type that can be passed to generic functions and then coerced to their original type. A usecase for this is a &lt;code&gt;Value&lt;/code&gt; object that then will contain &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;number&lt;/code&gt;, &lt;code&gt;bool&lt;/code&gt;, &lt;code&gt;function&lt;/code&gt;, &lt;code&gt;instance&lt;/code&gt; when building a new language.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkdir zig-objects &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; zig-objects&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ zig init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: created build.zig&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: created build.zig.zon&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: created src/main.zig&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: created src/root.zig&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;info: see &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;zig build --help&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; a menu of options&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Defining the object in &lt;code&gt;object.zig&lt;/code&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Using a package clone in home-manager</title>
				<link>https://mkz.me/til/nix/home-manager-using-cloned-package/</link>
				<pubDate>Sat, 21 Sep 2024 22:58:33 +0200</pubDate>
				<guid>https://mkz.me/til/nix/home-manager-using-cloned-package/</guid>
				<description>&lt;p&gt;When proposing PRs on any opensourced software, you might want to use your fork instead of the currently nix packaged original source, especially when using nixos or home-manager.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# In modules/tlrc/default.nix&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkgs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;nixpkgs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;overlays&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;super&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tlrc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;super&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;callPackage&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;../../nix/tlrc.nix&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add this module into your imported modules&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nix&#34; data-lang=&#34;nix&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# In modules/default.nix&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;sr&#34;&gt;./mmtc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copy/clone the existing official module from nixpkgs in your tree, and prepare to patch the &lt;code&gt;fetchFromGithub&lt;/code&gt; parameters, such as &lt;code&gt;owner&lt;/code&gt;, &lt;code&gt;rev&lt;/code&gt; and &lt;code&gt;hash&lt;/code&gt;es.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Moving mails from one mailbox to another with formail</title>
				<link>https://mkz.me/til/mail/moving-mails-from-one-mailbox-to-another-with-formail/</link>
				<pubDate>Sat, 21 Sep 2024 12:54:06 +0200</pubDate>
				<guid>https://mkz.me/til/mail/moving-mails-from-one-mailbox-to-another-with-formail/</guid>
				<description>&lt;p&gt;Use case: I&amp;rsquo;ve been using a specific folder for mails I&amp;rsquo;m considering to be spam, and mails in this folder is sent everyday to spamassassin&amp;rsquo;s &lt;code&gt;sa-learn --spam&lt;/code&gt; for adding tokens to the bayes database.&lt;/p&gt;&#xA;&lt;p&gt;I found out &lt;code&gt;formail&lt;/code&gt; (available in the &lt;code&gt;procmail&lt;/code&gt; package) will take an inbox as input, and will reformat mails, or allow to split/reformat/append mails before adding the mails to target mailbox.&lt;/p&gt;&#xA;&lt;p&gt;Eg, the following command will show the 2nd mail of the mailbox:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Setting a replication between gitea and github</title>
				<link>https://mkz.me/til/git/setting-gitea-to-git-replication/</link>
				<pubDate>Sat, 21 Sep 2024 12:34:00 +0200</pubDate>
				<guid>https://mkz.me/til/git/setting-gitea-to-git-replication/</guid>
				<description>&lt;p&gt;You&amp;rsquo;ll need some github credentials (login and api key) with proper authorization.&lt;/p&gt;&#xA;&lt;h2 id=&#34;setting-up-a-token-in-github&#34;&gt;&#xA;  Setting up a token in github&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#setting-up-a-token-in-github&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In &lt;a href=&#34;https://github.com/settings/tokens&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;github&amp;rsquo;s tokens/settings&lt;/a&gt;, create a classic token with &amp;ldquo;public_repo&amp;rdquo; access and a meaningful name, such as &amp;ldquo;gitea to github replication&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Also, create an empty repository that will receive the replication. Note the &lt;code&gt;http&lt;/code&gt; url.&lt;/p&gt;&#xA;&lt;h2 id=&#34;set-up-the-replication&#34;&gt;&#xA;  Set up the replication&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#set-up-the-replication&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In your &lt;a href=&#34;https://gitea.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;gitea&lt;/a&gt; instance, in an existing repository settings, in the &lt;code&gt;Mirror settings&lt;/code&gt; section, set the &lt;code&gt;Git Remote Repository URL&lt;/code&gt; to the github repository url, set &lt;code&gt;username&lt;/code&gt; to your github&amp;rsquo;s username and use the token (prefixed with &lt;code&gt;ghp_&lt;/code&gt;) as a password.&lt;/p&gt;</description>
			</item>
			<item>
				<title>First Steps With Zig</title>
				<link>https://mkz.me/weblog/posts/first-steps-with-zig/</link>
				<pubDate>Mon, 05 Aug 2024 18:24:53 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/first-steps-with-zig/</guid>
				<description>Notes while learning &amp;amp; playing with Zig</description>
			</item>
			<item>
				<title>DG&#39;hAck 2023: Damn CTF!</title>
				<link>https://mkz.me/weblog/posts/dghack2023-damn-ctf/</link>
				<pubDate>Fri, 01 Dec 2023 11:58:41 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/dghack2023-damn-ctf/</guid>
				<description>Solving the DG&amp;rsquo;h4ck 2023 challenge: Damn Deprecation</description>
			</item>
			<item>
				<title>Cilium: Enabling Hubble, Ingress Controller on LAN</title>
				<link>https://mkz.me/weblog/posts/cilium-enable-ingress-controller/</link>
				<pubDate>Tue, 26 Sep 2023 15:31:14 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/cilium-enable-ingress-controller/</guid>
				<description>Enable some Cilium features: Hubble, Ingress on LAN, etc.</description>
			</item>
			<item>
				<title>Installing Kubernetes With Cilium</title>
				<link>https://mkz.me/weblog/posts/installing-kubernetes-with-cilium/</link>
				<pubDate>Mon, 25 Sep 2023 11:50:17 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/installing-kubernetes-with-cilium/</guid>
				<description>Installing Kubernetes 1.28 with cilium on proxmox hosted ubuntu VMs</description>
			</item>
			<item>
				<title>Packer and Terraform With Proxmox</title>
				<link>https://mkz.me/weblog/posts/packer-and-terraform-with-proxmox/</link>
				<pubDate>Fri, 22 Sep 2023 11:40:09 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/packer-and-terraform-with-proxmox/</guid>
				<description>Building system images with packer &amp;amp; deploying them with Terraform</description>
			</item>
			<item>
				<title>ssh: Cleaning known_hosts obsolete entries</title>
				<link>https://mkz.me/weblog/posts/ssh-cleaning-known-host-entries/</link>
				<pubDate>Thu, 21 Sep 2023 20:36:54 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/ssh-cleaning-known-host-entries/</guid>
				<description>ssh: Disable strict host checking or removing them</description>
			</item>
			<item>
				<title>Advent of Code 2022</title>
				<link>https://mkz.me/weblog/posts/advent-of-code-2022/</link>
				<pubDate>Fri, 02 Dec 2022 20:46:16 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/advent-of-code-2022/</guid>
				<description>My journey doing the AOC 2022</description>
			</item>
			<item>
				<title>100 Days of K8S with Typescript</title>
				<link>https://mkz.me/weblog/posts/100-days-of-k8s-with-typescript/</link>
				<pubDate>Sun, 25 Sep 2022 20:54:51 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/100-days-of-k8s-with-typescript/</guid>
				<description>Let&amp;rsquo;s write some stuff in typescript</description>
			</item>
			<item>
				<title>101 Chunks of Rust</title>
				<link>https://mkz.me/weblog/posts/101-chunks-of-rust/</link>
				<pubDate>Tue, 28 Dec 2021 18:31:03 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/101-chunks-of-rust/</guid>
				<description>Keeping a track of usefull Rust snippets.</description>
			</item>
			<item>
				<title>Playing With Minikube</title>
				<link>https://mkz.me/weblog/posts/playing-with-minikube/</link>
				<pubDate>Wed, 01 Dec 2021 20:38:20 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/playing-with-minikube/</guid>
				<description>How I spent an evening doing basic kubernetes things for fun and really no profit</description>
			</item>
			<item>
				<title>Building a Simple Webapi Using Actix</title>
				<link>https://mkz.me/weblog/posts/building-a-simple-webapi-using-actix/</link>
				<pubDate>Mon, 22 Nov 2021 11:32:13 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/building-a-simple-webapi-using-actix/</guid>
				<description>Building a real simple API using Actix</description>
			</item>
			<item>
				<title>Trying Out Opentelemetry in Dotnet</title>
				<link>https://mkz.me/weblog/posts/trying-out-opentelemetry-in-dotnet/</link>
				<pubDate>Wed, 10 Nov 2021 22:01:08 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/trying-out-opentelemetry-in-dotnet/</guid>
				<description>Quick introduction of using Opentelemetry in C#/dotnet.</description>
			</item>
			<item>
				<title>Testing Jaeger With Opentelemetry Part 2</title>
				<link>https://mkz.me/weblog/posts/testing-jaeger-with-opentelemetry-part-2/</link>
				<pubDate>Tue, 09 Nov 2021 12:05:15 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/testing-jaeger-with-opentelemetry-part-2/</guid>
				<description>Using Opentelemetry logging, extending spans, propagating traces in a multiple component project</description>
			</item>
			<item>
				<title>Testing Jaeger With Opentelemetry</title>
				<link>https://mkz.me/weblog/posts/testing-jaeger-with-opentelemetry/</link>
				<pubDate>Tue, 09 Nov 2021 10:27:04 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/testing-jaeger-with-opentelemetry/</guid>
				<description>Testing Python &amp;amp; Golang opentelemetry &amp;amp; send traces to Jaeger</description>
			</item>
			<item>
				<title>Projects</title>
				<link>https://mkz.me/projects/</link>
				<pubDate>Sat, 06 Nov 2021 21:08:41 +0100</pubDate>
				<guid>https://mkz.me/projects/</guid>
				<description>&lt;p&gt;My past and current projects.&lt;/p&gt;&#xA;&lt;h2 id=&#34;running&#34;&gt;&#xA;  Running&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#running&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/k8s-home&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;k8s-home&lt;/a&gt; - my homelab&amp;rsquo;s Kubernetes&#xA;configuration, as code.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/clipboard-applet&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;clipboard-manager&lt;/a&gt; -&#xA;clipboard-applet to manipulate regular, primary clipboards&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/nix-home-env&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;nix-home-env&lt;/a&gt; - home-manager&#xA;configuration&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/challenges&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;challenges&lt;/a&gt; - Advent of Code,&#xA;data-onion, synacor and other puzzle solutions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;tools&#34;&gt;&#xA;  Tools&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#tools&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/bgutil-rs&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;bgutil-rs&lt;/a&gt; - an implementation of&#xA;&lt;a href=&#34;https://github.com/criteo/biggraphite&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;biggraphite&lt;/a&gt;&amp;rsquo;s &lt;code&gt;bgutil&lt;/code&gt; tool. Mostly&#xA;written to learn the biggraphite intervals during my journey at Criteo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/log-rebuilder&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;log-rebuilder&lt;/a&gt; - send logs from&#xA;text files to rsyslog, rebuilding multiline log records.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/helloTipiBackup&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;helloTipiBackup&lt;/a&gt; - backup tool&#xA;for your hellotipi contents.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;older&#34;&gt;&#xA;  Older&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#older&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Link to heading&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Link to heading&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Bitcoin balances, formerly &lt;code&gt;balances.crypto-nerdz.org&lt;/code&gt;, based on&#xA;&lt;a href=&#34;https://github.com/mycroft/chainstate&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;chainstate&lt;/a&gt;, a Bitcoin/altcoins&#xA;chainstate (UTXO database) parser.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/mnkPasswordKeeper&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mnkPasswordKeeper&lt;/a&gt; - password&#xA;wallet for Windows, Linux and Mac OS X.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mycroft/nsc&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;nsc&lt;/a&gt; - NetSoul console client for&#xA;Unix/Linux systems.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>DG&#39;hAck: Jobboard and Involucrypt2</title>
				<link>https://mkz.me/weblog/posts/dghack-jobboard-and-involucrypt2/</link>
				<pubDate>Fri, 04 Dec 2020 08:56:30 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/dghack-jobboard-and-involucrypt2/</guid>
				<description>DG&amp;rsquo;hAck 2020 exercises: Jobboard &amp;amp; Involucrypt2</description>
			</item>
			<item>
				<title>DG&#39;hAck: Sad Crypto and Stickitup</title>
				<link>https://mkz.me/weblog/posts/dghack-sad-crypto-and-stickitup/</link>
				<pubDate>Wed, 02 Dec 2020 13:43:03 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/dghack-sad-crypto-and-stickitup/</guid>
				<description>Another DG&amp;rsquo;hAck 2020 challenges: sad crypto &amp;amp; stickitup</description>
			</item>
			<item>
				<title>DG&#39;hAck: Gitbad, Bwing &amp; Shadowmallet, Time for something different</title>
				<link>https://mkz.me/weblog/posts/dghack-gitbad-shadowmallet-bwing-time-for-something-different/</link>
				<pubDate>Tue, 01 Dec 2020 21:02:53 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/dghack-gitbad-shadowmallet-bwing-time-for-something-different/</guid>
				<description>Another set of DG&amp;rsquo;hAck 2020 writeups</description>
			</item>
			<item>
				<title>DG&#39;hAck: Easy Challenges</title>
				<link>https://mkz.me/weblog/posts/dghack-easy-challenges/</link>
				<pubDate>Mon, 30 Nov 2020 19:45:41 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/dghack-easy-challenges/</guid>
				<description>Short write-up of the easiest DG&amp;rsquo;hAck challenges.</description>
			</item>
			<item>
				<title>DG&#39;hAck 2020: The &#39;dharma.exe&#39; challenge</title>
				<link>https://mkz.me/weblog/posts/dghack-dharma/</link>
				<pubDate>Sat, 28 Nov 2020 23:03:43 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/dghack-dharma/</guid>
				<description>dharma binary analysis: Breaking binary protections</description>
			</item>
			<item>
				<title>Kubernetes: Launching &amp; accessing running applications inside the cluster</title>
				<link>https://mkz.me/weblog/posts/kubernetes-launching-accessing-running-applications-inside-cluster/</link>
				<pubDate>Wed, 22 May 2019 14:24:52 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/kubernetes-launching-accessing-running-applications-inside-cluster/</guid>
				<description>Launching &amp;amp; getting into running apps in kubernetes</description>
			</item>
			<item>
				<title>Setup &amp; running kubernetes</title>
				<link>https://mkz.me/weblog/posts/setup-running-kubernetes/</link>
				<pubDate>Wed, 15 May 2019 11:25:35 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/setup-running-kubernetes/</guid>
				<description>First steps trying to use kubernetes</description>
			</item>
			<item>
				<title>Setup &amp; running systemd user services</title>
				<link>https://mkz.me/weblog/posts/setup-running-systemd-user-services/</link>
				<pubDate>Sat, 12 May 2018 11:26:20 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/setup-running-systemd-user-services/</guid>
				<description>How to manage new services for users with systemd.</description>
			</item>
			<item>
				<title>Bitcoin: Parsing the chainstate</title>
				<link>https://mkz.me/weblog/posts/bitcoin-parsing-the-chainstate/</link>
				<pubDate>Fri, 27 Apr 2018 15:11:55 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/bitcoin-parsing-the-chainstate/</guid>
				<description>How to track the spendable transaction in Bitcoin by exploring the chainstate database</description>
			</item>
			<item>
				<title>Ethereum: Up &amp; Running</title>
				<link>https://mkz.me/weblog/posts/ethereum-up-and-running/</link>
				<pubDate>Sun, 01 Apr 2018 08:48:14 +0200</pubDate>
				<guid>https://mkz.me/weblog/posts/ethereum-up-and-running/</guid>
				<description>Quick introduction to running Ethereum</description>
			</item>
			<item>
				<title>Recreating a ecdsa key pair using Openssl</title>
				<link>https://mkz.me/weblog/posts/recreating-a-ecdsa-key-pair-using-openssl/</link>
				<pubDate>Sat, 24 Mar 2018 16:05:02 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/recreating-a-ecdsa-key-pair-using-openssl/</guid>
				<description>Quick tip to how generate a ecdsa key pair using command line openssl tools</description>
			</item>
			<item>
				<title>Generating a genesis block</title>
				<link>https://mkz.me/weblog/posts/generating-a-genesis-block/</link>
				<pubDate>Sun, 18 Mar 2018 13:34:56 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/generating-a-genesis-block/</guid>
				<description>How to generate a Bitcoin Genesis block</description>
			</item>
			<item>
				<title>Sending a message in the blockchain</title>
				<link>https://mkz.me/weblog/posts/sending-a-message-in-blockchain/</link>
				<pubDate>Sun, 11 Mar 2018 08:33:17 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/sending-a-message-in-blockchain/</guid>
				<description>USing bitcoin scripting to send and store a message in the blockchain</description>
			</item>
			<item>
				<title>Understanding bitcoin addresses (part 2)</title>
				<link>https://mkz.me/weblog/posts/understanding-bitcoin-addresses-part-2/</link>
				<pubDate>Thu, 08 Mar 2018 07:14:09 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/understanding-bitcoin-addresses-part-2/</guid>
				<description>Decrypting the Bitcoin addresses format (Part 2)</description>
			</item>
			<item>
				<title>Accessing Bitcoin core RPCs</title>
				<link>https://mkz.me/weblog/posts/accessing-bitcoin-core-rpcs/</link>
				<pubDate>Sun, 04 Mar 2018 08:56:27 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/accessing-bitcoin-core-rpcs/</guid>
				<description>How to access the bitcoin core daemon using RPCs &amp;amp; Python</description>
			</item>
			<item>
				<title>Understanding bitcoin addresses (part 1)</title>
				<link>https://mkz.me/weblog/posts/understanding-bitcoin-addresses/</link>
				<pubDate>Thu, 01 Mar 2018 07:58:09 +0100</pubDate>
				<guid>https://mkz.me/weblog/posts/understanding-bitcoin-addresses/</guid>
				<description>Decrypting the Bitcoin addresses format</description>
			</item>
			<item>
				<title>Reading memory information under Linux systems</title>
				<link>https://mkz.me/weblog/posts/reading-memory-information-under-linux-systems/</link>
				<pubDate>Sat, 15 Jun 2013 13:24:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/reading-memory-information-under-linux-systems/</guid>
				<description>Some bits to understand the Linux memory numbers</description>
			</item>
			<item>
				<title>VirtualBox and external dhcp management with dnsmasq</title>
				<link>https://mkz.me/weblog/posts/virtualbox-external-dhcp-management-with-dnsmasq/</link>
				<pubDate>Thu, 18 Apr 2013 13:28:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/virtualbox-external-dhcp-management-with-dnsmasq/</guid>
				<description>Tweaking VirtualBox to setup a dnsmasq as a dhcp server</description>
			</item>
			<item>
				<title>Sending/recieving events through Rabbitmq with Pika &amp; Tornado</title>
				<link>https://mkz.me/weblog/posts/sending-recieving-events-through-rabbitmq-pika-tornado/</link>
				<pubDate>Tue, 16 Oct 2012 10:02:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/sending-recieving-events-through-rabbitmq-pika-tornado/</guid>
				<description>Quick test of Pika, Tornado &amp;amp; Rabbitmq.</description>
			</item>
			<item>
				<title>PHP: Misknown OOP functions</title>
				<link>https://mkz.me/weblog/posts/php-misknown-oop-functions/</link>
				<pubDate>Wed, 25 Jul 2012 11:49:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/php-misknown-oop-functions/</guid>
				<description>Some of unknown useful PHP functions</description>
			</item>
			<item>
				<title>Python: Reload source files</title>
				<link>https://mkz.me/weblog/posts/python-reload-source-file/</link>
				<pubDate>Sat, 26 Mar 2011 00:00:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/python-reload-source-file/</guid>
				<description>Reload Python scripts without restarting whole apps</description>
			</item>
			<item>
				<title>Cleaning PostgreSQL tables</title>
				<link>https://mkz.me/weblog/posts/postgresql-cleaning-tables/</link>
				<pubDate>Wed, 26 May 2010 17:52:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/postgresql-cleaning-tables/</guid>
				<description>Quick note on how making some cleanup in postgresql database</description>
			</item>
			<item>
				<title>Encrypt your usb key under Linux with LUKS</title>
				<link>https://mkz.me/weblog/posts/crypt-usb-key-with-luks-under-linux/</link>
				<pubDate>Fri, 14 May 2010 00:00:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/crypt-usb-key-with-luks-under-linux/</guid>
				<description>Learn LUKS to add some security on your USB keys</description>
			</item>
			<item>
				<title>xhprof, profiling PHP: Installation &amp; configuration</title>
				<link>https://mkz.me/weblog/posts/xhprof-profiling-php-installation-configuration/</link>
				<pubDate>Mon, 10 May 2010 00:00:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/xhprof-profiling-php-installation-configuration/</guid>
				<description>Profile PHP code like nobody else with xhprof</description>
			</item>
			<item>
				<title>OpenSSL: First steps with Hashing and crypt functions</title>
				<link>https://mkz.me/weblog/posts/openssl-first-steps-with-hashing-and-crypt-functions/</link>
				<pubDate>Fri, 07 May 2010 00:00:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/openssl-first-steps-with-hashing-and-crypt-functions/</guid>
				<description>Basic play with OpenSSL hashing &amp;amp; crypt functions</description>
			</item>
			<item>
				<title>Hello World</title>
				<link>https://mkz.me/weblog/posts/hello-world/</link>
				<pubDate>Thu, 06 May 2010 00:00:00 +0000</pubDate>
				<guid>https://mkz.me/weblog/posts/hello-world/</guid>
				<description>Every weblog should have a hello world page.</description>
			</item>
	</channel>
</rss>
