<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>twobiers</title><link>https://twobiers.github.io/</link><description>Recent content on twobiers</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 08 Apr 2026 19:30:12 +0000</lastBuildDate><atom:link href="https://twobiers.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Asciidoc Syntax Overview</title><link>https://twobiers.github.io/dev/asciidoc-syntax-overview/</link><pubDate>Wed, 08 Apr 2026 19:30:12 +0000</pubDate><guid>https://twobiers.github.io/dev/asciidoc-syntax-overview/</guid><description>&lt;div class="sect1"&gt;
&lt;h2 id="_basic_text_formatting"&gt;Basic Text Formatting&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bold&lt;/strong&gt;: &lt;code&gt;&lt;strong&gt;bold text&lt;/strong&gt;&lt;/code&gt; or &lt;code&gt;&lt;strong&gt;bold text&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Italic&lt;/em&gt;: &lt;code&gt;&lt;em&gt;italic text&lt;/em&gt;&lt;/code&gt; or &lt;code&gt;&lt;em&gt;italic text&lt;/em&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Monospace&lt;/code&gt;: &lt;code&gt; &lt;code&gt;monospace text&lt;/code&gt; &lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Superscript: &lt;code&gt;&lt;sup&gt;superscript&lt;/sup&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Subscript: &lt;code&gt;&lt;sub&gt;subscript&lt;/sub&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_headings"&gt;Headings&lt;/h2&gt;
&lt;div class="sectionbody"&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;h1 id="_document_title_level_0" class="sect0"&gt;Document Title (Level 0)&lt;/h1&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_level_1_section"&gt;Level 1 Section&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_level_2_section"&gt;Level 2 Section&lt;/h3&gt;
&lt;div class="sect3"&gt;
&lt;h4 id="_level_3_section"&gt;Level 3 Section&lt;/h4&gt;
&lt;div class="sect4"&gt;
&lt;h5 id="_level_4_section"&gt;Level 4 Section&lt;/h5&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_lists"&gt;Lists&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_unordered_lists"&gt;Unordered Lists&lt;/h3&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Item 1&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Item 2&lt;/p&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Nested item&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Item 3&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_ordered_lists"&gt;Ordered Lists&lt;/h3&gt;
&lt;div class="olist arabic"&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;
&lt;p&gt;First item&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Second item&lt;/p&gt;
&lt;div class="olist loweralpha"&gt;
&lt;ol class="loweralpha" type="a"&gt;
&lt;li&gt;
&lt;p&gt;Nested item&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Third item&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_links_and_images"&gt;Links and Images&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Link: &lt;code&gt;&lt;a href="https://example.com"&gt;Link Text&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Image: &lt;code&gt;image::path/to/image.png[Alt Text]&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Block image: &lt;code&gt;image::path/to/image.png[Alt Text, width=300]&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item><item><title>Markdown Admonition Overview</title><link>https://twobiers.github.io/dev/markdown-admonition-demo/</link><pubDate>Wed, 08 Apr 2026 19:30:12 +0000</pubDate><guid>https://twobiers.github.io/dev/markdown-admonition-demo/</guid><description>&lt;h2 id="error-test"&gt;Error Test&lt;/h2&gt;

 &lt;link rel="stylesheet" href="https://twobiers.github.io/css/vendors/admonitions.4fd9a0b8ec8899f2ca952048d255a569f433f77dfb3f52f5bc87e7d65cdce449.css" integrity="sha256-T9mguOyImfLKlSBI0lWlafQz9337P1L1vIfn1lzc5Ek=" crossorigin="anonymous"&gt;
 &lt;div class="admonition note"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"&gt;&lt;path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Note&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Helpful advice for doing things better or more easily.&lt;/p&gt;</description></item><item><title>Markdown Syntax Overview</title><link>https://twobiers.github.io/dev/markdown-syntax-overview/</link><pubDate>Wed, 08 Apr 2026 19:30:12 +0000</pubDate><guid>https://twobiers.github.io/dev/markdown-syntax-overview/</guid><description>&lt;p&gt;This page provides an overview of the Markdown syntax supported by Hugo, along with some additional features and extensions.&lt;/p&gt;
&lt;h2 id="basic-syntax"&gt;Basic Syntax&lt;/h2&gt;
&lt;p&gt;Below are examples of basic Markdown syntax elements.&lt;/p&gt;
&lt;h3 id="headings"&gt;Headings&lt;/h3&gt;
&lt;h1 id="h1-heading"&gt;H1 Heading&lt;/h1&gt;
&lt;h2 id="h2-heading"&gt;H2 Heading&lt;/h2&gt;
&lt;h3 id="h3-heading"&gt;H3 Heading&lt;/h3&gt;
&lt;h4 id="h4-heading"&gt;H4 Heading&lt;/h4&gt;
&lt;h5 id="h5-heading"&gt;H5 Heading&lt;/h5&gt;
&lt;h6 id="h6-heading"&gt;H6 Heading&lt;/h6&gt;
&lt;h3 id="emphasis"&gt;Emphasis&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;italic text&lt;/em&gt; or &lt;em&gt;italic text&lt;/em&gt;
&lt;strong&gt;bold text&lt;/strong&gt; or &lt;strong&gt;bold text&lt;/strong&gt;
&lt;em&gt;&lt;strong&gt;bold and italic&lt;/strong&gt;&lt;/em&gt; or &lt;em&gt;&lt;strong&gt;bold and italic&lt;/strong&gt;&lt;/em&gt;
&lt;del&gt;strikethrough&lt;/del&gt;&lt;/p&gt;
&lt;h3 id="lists"&gt;Lists&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Unordered Lists:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Item 1&lt;/li&gt;
&lt;li&gt;Item 2
&lt;ul&gt;
&lt;li&gt;Nested item&lt;/li&gt;
&lt;li&gt;Another nested item&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ordered Lists:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2025-11-23/</link><pubDate>Sun, 23 Nov 2025 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2025-11-23/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Hello, World!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This blog now supports AsciiDoc content via the &lt;a href="https://asciidoctor.org/"&gt;Asciidoctor&lt;/a&gt; toolchain.
Syntax highlighting is provided by &lt;a href="https://github.com/twobiers/asciidoctor-chroma"&gt;Asciidoctor Chroma&lt;/a&gt;, which integrates seamlessly with this setup.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_code_examples"&gt;Code Examples&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Here’s a Python function demonstrating basic syntax:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;div class="highlight"&gt;&lt;pre class="chroma"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Generate Fibonacci sequence up to n terms.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fibonacci&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_advanced_features"&gt;Advanced Features&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;AsciiDoc supports various features:&lt;/p&gt;
&lt;/div&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bold&lt;/strong&gt; and &lt;em&gt;italic&lt;/em&gt; text&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inline &lt;code&gt;code snippets&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tables, admonitions, and more&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;table class="tableblock frame-all grid-all stretch"&gt;
&lt;colgroup&gt;
&lt;col style="width: 33.3333%;"/&gt;
&lt;col style="width: 50%;"/&gt;
&lt;col style="width: 16.6667%;"/&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Feature&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Description&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Support&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Syntax Highlighting&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Code blocks with language-specific formatting&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;✓&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Tables&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Structured data presentation&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;✓&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Admonitions&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Important notes and warnings&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;✓&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Cross-references&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Internal document linking&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;✓&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Here’s a Java example with exception handling:&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Least Privilege in GitHub Actions</title><link>https://twobiers.github.io/random/2025-03-14_b2564be9-8c21-45ec-b355-e9d57f95947c/</link><pubDate>Fri, 14 Mar 2025 11:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2025-03-14_b2564be9-8c21-45ec-b355-e9d57f95947c/</guid><description>&lt;p&gt;In GitHub Actions it&amp;rsquo;s possible to remove all permissions from the token at the workflow level and then assign them on the job level:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Release&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{}&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# No permissions&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;main &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;release&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;write&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;packages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;write&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id-token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;write&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Microdata</title><link>https://twobiers.github.io/random/2025-03-08_e0b439d2-30c8-4f10-8b91-4701859363be/</link><pubDate>Sat, 08 Mar 2025 11:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2025-03-08_e0b439d2-30c8-4f10-8b91-4701859363be/</guid><description>&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Microdata" title="Microdata
(https://developer.mozilla.org/en-US/docs/Web/HTML/Microdata)"&gt;Microdata&lt;/a&gt; enables it to describe Metadata in HTML and give a meaning to the markup. That&amp;rsquo;s handy for Crawler or other integrations. For instance, can an E-Mail render a &amp;ldquo;discount&amp;rdquo; (or something else) in the client.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;itemscope&lt;/span&gt; &lt;span class="na"&gt;itemtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://schema.org/DiscountOffer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;meta&lt;/span&gt; &lt;span class="na"&gt;itemprop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;description&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;20% off&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Hedonic Treadmill</title><link>https://twobiers.github.io/random/2025-03-04_f0a5934c-fd32-41fa-9f0c-14f3431e7954/</link><pubDate>Tue, 04 Mar 2025 11:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2025-03-04_f0a5934c-fd32-41fa-9f0c-14f3431e7954/</guid><description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Hedonic_treadmill"&gt;Hedonic treadmill - Wikipedia&lt;/a&gt;&lt;/p&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2025-02-22_32078759-e56a-4122-8cf6-8e07312120f3/</link><pubDate>Sat, 22 Feb 2025 11:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2025-02-22_32078759-e56a-4122-8cf6-8e07312120f3/</guid><description>&lt;p&gt;A prison for polar bears: &lt;a href="https://en.wikipedia.org/wiki/Polar_bear_jail" title="https://en.wikipedia.org/wiki/Polar_bear_jail"&gt;Polar Bear Jail&lt;/a&gt;&lt;/p&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2025-01-26_b7354050-3753-4e44-ba4c-c2b7770f055d/</link><pubDate>Sun, 26 Jan 2025 11:10:34 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-26_b7354050-3753-4e44-ba4c-c2b7770f055d/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/E6JUA_XH_tE"&gt;I Am SO Glad I’m Uncoordinated!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Get Decoded Kubernetes Secret</title><link>https://twobiers.github.io/random/2025-01-21_19c46e8e-7d0f-4e8d-8070-752c0e47db7d/</link><pubDate>Tue, 21 Jan 2025 09:27:01 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-21_19c46e8e-7d0f-4e8d-8070-752c0e47db7d/</guid><description>&lt;p&gt;Useful and memorizable snippet for getting Kubernetes secrets in decoded form:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get secret &amp;lt;secret&amp;gt; -o json | jq &amp;#39;.data | map_values(@base64d)&amp;#39; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2025-01-18_62fd685c-5603-4c68-82af-f4770df05a0d/</link><pubDate>Sat, 18 Jan 2025 13:27:47 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-18_62fd685c-5603-4c68-82af-f4770df05a0d/</guid><description>&lt;p&gt;One of the best NoSQL talks I&amp;rsquo;ve ever heard &lt;a href="https://youtu.be/HaEPXoXVf2k"&gt;https://youtu.be/HaEPXoXVf2k&lt;/a&gt;&lt;/p&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2025-01-16_fad450fc-35ac-48cf-8a51-47183ebade67/</link><pubDate>Thu, 16 Jan 2025 07:23:55 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-16_fad450fc-35ac-48cf-8a51-47183ebade67/</guid><description>&lt;p&gt;&lt;a href="http://beza1e1.tuxen.de/lore/index.html"&gt;Software Folklore ― Andreas Zwinkau&lt;/a&gt;&lt;/p&gt;</description></item><item><title>A deep dive into DNS</title><link>https://twobiers.github.io/random/2025-01-13_2ca1a0f0-aa3f-4a80-9ef2-cb763e6c3514/</link><pubDate>Mon, 13 Jan 2025 20:20:20 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-13_2ca1a0f0-aa3f-4a80-9ef2-cb763e6c3514/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=drWd9HIhJdU"&gt;A deep dive into DNS&lt;/a&gt; is not a &amp;ldquo;tutorial&amp;rdquo; on DNS but good material on getting to know some interesting details about DNS.&lt;/p&gt;</description></item><item><title>A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography</title><link>https://twobiers.github.io/random/2025-01-13_cf60fdb5-9c2b-44d3-b4a2-f7563c6fe1c6/</link><pubDate>Mon, 13 Jan 2025 16:50:13 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-13_cf60fdb5-9c2b-44d3-b4a2-f7563c6fe1c6/</guid><description>&lt;p&gt;&lt;a href="https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/"&gt;A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography&lt;/a&gt; gives a great overview of how elliptic curves and how they are used in cryptography. I will probably never understand the details, but this gives me enough information to build a reasonable mental model&lt;/p&gt;</description></item><item><title>Azure CLI stuck</title><link>https://twobiers.github.io/random/2025-01-13_be3a72ff-267c-4cc1-ab40-a4c0de4c3a9b/</link><pubDate>Mon, 13 Jan 2025 09:05:08 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-13_be3a72ff-267c-4cc1-ab40-a4c0de4c3a9b/</guid><description>&lt;p&gt;From time to time, my Azure CLI is stuck in the phase &lt;code&gt;urllib3.connectionpool: Starting new HTTPS connection (1): login.microsoftonline.com:443&lt;/code&gt; traced with the &lt;code&gt;--debug&lt;/code&gt;flag.
Disabling IPv6 solves the &lt;a href="https://github.com/Azure/azure-cli/issues/28548"&gt;issue&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Supernotes</title><link>https://twobiers.github.io/random/2025-01-12_91fc0baf-5364-4752-a460-7d34977c0c3c/</link><pubDate>Sun, 12 Jan 2025 20:34:04 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-12_91fc0baf-5364-4752-a460-7d34977c0c3c/</guid><description>&lt;p&gt;For several years I&amp;rsquo;m searching for a nice note-taking solution for my personal use. I feel like my requirements are pretty low with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-Device sync&lt;/li&gt;
&lt;li&gt;Markdown Bailout&lt;/li&gt;
&lt;li&gt;Web and Android Support&lt;/li&gt;
&lt;li&gt;Good UX, simple to use&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yet, I haven&amp;rsquo;t found one to this day. Now I&amp;rsquo;ve found &lt;a href="https://supernotes.app/"&gt;Supernotes&lt;/a&gt; and giving it a try. In fact, this part of my blog is now driven by Supernotes Cards. On a daily basis a &lt;a href="https://github.com/twobiers/twobiers.github.io/blob/849482d16deae4120b0ddf1e6520457c07457cbb/.github/workflows/fetch-from-supernotes.yml"&gt;GitHub Actions workflow&lt;/a&gt; is running a &lt;a href="https://github.com/twobiers/twobiers.github.io/blob/0d90522e3f5b89fb09f5ecbd19c1df6b6737f9b1/hack/fetch-random-from-supernotes.sh"&gt;script&lt;/a&gt; which is fetching all note cards with &lt;code&gt;#random&lt;/code&gt; and &lt;code&gt;#blog&lt;/code&gt; tags and storing them in the Git repository driving this blog. Let&amp;rsquo;s see how it evolves over time.&lt;/p&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2025-01-04/</link><pubDate>Sat, 04 Jan 2025 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2025-01-04/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GNOME now has default shortcuts for switching between applications. Therefore, the Toggle in the &amp;ldquo;Dash to Dock&amp;rdquo; extension to disable shortcuts does not work. To disable them, use the command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;for i in {1..9}; do gsettings set org.gnome.shell.keybindings switch-to-application-$i &amp;#34;[]&amp;#34;; done
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2024-10-12/</link><pubDate>Sat, 12 Oct 2024 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2024-10-12/</guid><description>&lt;ul&gt;
&lt;li&gt;Project Valhalla seems to be finally tangible to reach. Brian Goetz did a few talks on &lt;a href="https://www.youtube.com/watch?v=eL1yyTwu4hc"&gt;Devoxx Belgium&lt;/a&gt; and the &lt;a href="https://youtu.be/IF9l8fYfSnI"&gt;JVM Language Summit&lt;/a&gt;. I&amp;rsquo;m pretty impressed by the little complexity &amp;ldquo;leaked&amp;rdquo; to the developer.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2024-09-29/</link><pubDate>Sun, 29 Sep 2024 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2024-09-29/</guid><description>&lt;ul&gt;
&lt;li&gt;Today, by watching &lt;a href="https://www.youtube.com/watch?v=2vBVvQTTdXg"&gt;this video&lt;/a&gt;, I learned about the &lt;a href="https://en.wikipedia.org/wiki/Polish_notation"&gt;Polish notation&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Reverse_Polish_notation"&gt;Reverse Polish notation&lt;/a&gt; which are pretty important concepts for the invention of our current computing model using stacks.
With the polish notations we can formulate a mathematical/logical expression without the need for parentheses by placing operators in front (or behind) the operands.&lt;/li&gt;
&lt;li&gt;Google published a &lt;a href="https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s01-hochschild.pdf"&gt;paper about mercurial cores&lt;/a&gt;.
Basically, as a Hyperscaler they observe their CPUs are miscalculating operations sometimes due to e.g. manufactoring issues. This issue occurs so often (a few cores per thousand machines) and is even increasing by pushing the hardware further to the physical limits, that its not a negligable problem.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title/><link>https://twobiers.github.io/random/2024-09-28/</link><pubDate>Sat, 28 Sep 2024 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/random/2024-09-28/</guid><description>&lt;ul&gt;
&lt;li&gt;One skill, I would really like to develop and improve in is listeing to people.
&lt;a href="https://thought.is/the-myth-of-the-good-listener/"&gt;How To Be A Good Listener&lt;/a&gt; gives great advice to that.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve built this random page on top of &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; with &lt;a href="https://github.com/twobiers/twobiers.github.io/tree/83a7ddf8ebc3bc4b7717cf357c16e26270bf76d3/content/random"&gt;Markdown files&lt;/a&gt; that contain just lists, a &lt;a href="https://github.com/twobiers/twobiers.github.io/blob/main/layouts/random/list.html"&gt;list layout&lt;/a&gt; and &lt;a href="https://github.com/twobiers/twobiers.github.io/blob/83a7ddf8ebc3bc4b7717cf357c16e26270bf76d3/assets/css/custom.css#L17-L25"&gt;some CSS&lt;/a&gt;.
However, I could have also used shortcodes like I do for &lt;a href="https://github.com/twobiers/twobiers.github.io/blob/83a7ddf8ebc3bc4b7717cf357c16e26270bf76d3/layouts/shortcodes/details.html"&gt;details&lt;/a&gt;. This might be a future improvement. Let&amp;rsquo;s see first where we&amp;rsquo;re going.&lt;/li&gt;
&lt;li&gt;All continents on earth have female, latin names: Europa, Africa, America, Asia, Australia, Antarctica&lt;/li&gt;
&lt;li&gt;The highest inflation ever recorded took place in &lt;a href="https://en.wikipedia.org/wiki/Hungarian_peng%C5%91#Hyperinflation"&gt;Hungary in 1945/46&lt;/a&gt; with a maximum monthly rate of 41.9 quadrillion percent. The stability of the Hungarian economy could only be achieved with the introduction of a new currency. Thus, on August 1, 1946, the forint was introduced, which was exchanged at 400 quadrillions (a 4 with 29 zeros; written out 400,000,000,000,000,000,000,000,000,000,000) pengő.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Setup git with multiple authors automatically</title><link>https://twobiers.github.io/posts/conditional_git_author/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/posts/conditional_git_author/</guid><description>&lt;p&gt;I&amp;rsquo;m pretty sure, I&amp;rsquo;m not the only one working in multiple git contexts with multiple authors.
Maybe you also find yourself in situations where you need to juggle with multiple author configs, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Work&lt;/li&gt;
&lt;li&gt;Private&lt;/li&gt;
&lt;li&gt;Anonymous&lt;/li&gt;
&lt;li&gt;and others&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I found myself multiple times already in situations where I&amp;rsquo;ve created a commit with my author set from work and vice versa.
After countless errors, I finally found a way to manage this issue at my scale and I&amp;rsquo;m pretty happy with the solution.&lt;/p&gt;</description></item><item><title>SSH and GPG Relay inside WSL2 with systemd boot</title><link>https://twobiers.github.io/posts/wsl_systemd_gpg_ssh_relay/</link><pubDate>Sun, 23 Jul 2023 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/posts/wsl_systemd_gpg_ssh_relay/</guid><description>&lt;p&gt;In this post I will explain how I&amp;rsquo;m using the Windows OpenSSH and Gpg4Win agents inside WSL2 with systemd.
This post is not explained in detail and serves mainly as a reference manual for future setups.&lt;/p&gt;
&lt;p&gt;There are also other tools available in the wild, that help with the process, like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/demonbane/wsl-gpg-systemd"&gt;wsl-gpg-systemd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download &lt;a href="https://github.com/NZSmartie/npiperelay"&gt;npiperelay&lt;/a&gt; and &lt;a href="https://github.com/benpye/wsl-ssh-pageant"&gt;wsl-ssh-pageant&lt;/a&gt;.
Place both in a suitable directory on the windows side. I created &lt;code&gt;C:\tools&lt;/code&gt; for that purpose.
Configure wsl-ssh-pageant for autostart. I chose a simple shortcut in the startup directory for that.
It should be started like this: &lt;code&gt;wsl-ssh-pageant-amd64-gui.exe -force -systray -verbose -wsl C:\tools\wsl-ssh-pageant\wsl-ssh-agent.sock -winssh winssh-pageant&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Do You Know the Power Intake of Your Computer?</title><link>https://twobiers.github.io/posts/static-power-draw/</link><pubDate>Thu, 15 Jun 2023 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/posts/static-power-draw/</guid><description>I&amp;rsquo;ve measured the power draw of my computer and noticed that it only demands about 35W in idle and about 100W if doing CPU-heavy work</description></item><item><title>The @Transactional-Kotlin Mismatch</title><link>https://twobiers.github.io/posts/transactional-kotlin/</link><pubDate>Sat, 19 Nov 2022 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/posts/transactional-kotlin/</guid><description>The JEE/Spring @Transactional Annotation in Kotlin behaves unintuitively when exceptions are thrown and does not rollback by default</description></item><item><title>twobiers</title><link>https://twobiers.github.io/posts/twobiers/</link><pubDate>Fri, 22 Apr 2022 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/posts/twobiers/</guid><description>Why twobiers?</description></item><item><title>Is The Negation Of Life Goals The Key To Success?</title><link>https://twobiers.github.io/posts/2022-01-05_negotiate_life_goals/</link><pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate><guid>https://twobiers.github.io/posts/2022-01-05_negotiate_life_goals/</guid><description>Setting upper bounds for failures instead of success goals might improve your mindset</description></item></channel></rss>