<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>koleir</title>
    <subtitle>Shaping software, teams &amp; imaginary realms. Personal website of François &amp;quot;koleir&amp;quot; Vaux.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://koleir.dev/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://koleir.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-08-11T00:00:00+00:00</updated>
    <id>https://koleir.dev/atom.xml</id>
    <entry xml:lang="en">
        <title>Blueprint 0.9.0</title>
        <published>2026-08-11T00:00:00+00:00</published>
        <updated>2026-08-11T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/blueprint-0-9-0/"/>
        <id>https://koleir.dev/blog/blueprint-0-9-0/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/blueprint-0-9-0/">&lt;h3 id=&quot;sparkles-added&quot;&gt;✨ Added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Add a &lt;code&gt;chunk&lt;/code&gt; tag that behaves like a &lt;code&gt;section&lt;/code&gt; but only renders the exact content of a section, without its subsections (#36)&lt;/li&gt;
&lt;li&gt;Properly handle nested properties, non-destructively (#19)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;link-links&quot;&gt;🔗 Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Community page: &lt;a rel=&quot;external&quot; href=&quot;https://community.obsidian.md/plugins/blueprint&quot;&gt;https://community.obsidian.md/plugins/blueprint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub repo: &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin&quot;&gt;https://github.com/madx/blueprint-obsidian-plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin#documentation&quot;&gt;https://github.com/madx/blueprint-obsidian-plugin#documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>The Widow of the Weirwood</title>
        <published>2026-07-31T00:00:00+00:00</published>
        <updated>2026-07-31T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/the-widow-of-the-weirwood/"/>
        <id>https://koleir.dev/blog/the-widow-of-the-weirwood/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/the-widow-of-the-weirwood/">&lt;p&gt;I entered this DURF adventure as part of the &lt;a rel=&quot;external&quot; href=&quot;https://itch.io/jam/appx-n-jam-2026&quot;&gt;Appx. N Jam 2026&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was my first participation in this jam, and I look forward to partaking again next year!&lt;/p&gt;
&lt;p&gt;The feedback has been super helpful, and there&#39;s a bunch of interesting and talented designers to learn from.&lt;/p&gt;
&lt;p&gt;The comunity over on the &lt;a rel=&quot;external&quot; href=&quot;https://www.cultofthelizardking.com/&quot;&gt;Cult of the Lizard King&lt;/a&gt; Discord has also been fantastic, with everyone supporting each other, giving constructive feedback and generally be kind and benevolent.&lt;/p&gt;
&lt;p&gt;I&#39;m especially grateful for the thorough review I got from &lt;a rel=&quot;external&quot; href=&quot;https://watcherdm.com/&quot;&gt;WatcherDM&lt;/a&gt; (a &lt;em&gt;SEVEN&lt;/em&gt; page review for my two-page module!).
I&#39;ll take some time to build this little one shot in a mini campaign, in a 8 or 16 page booklet, which will give me more room to develop the ideas I had.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Blueprint 0.8.0</title>
        <published>2026-07-16T00:00:00+00:00</published>
        <updated>2026-07-16T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/blueprint-0-8-0/"/>
        <id>https://koleir.dev/blog/blueprint-0-8-0/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/blueprint-0-8-0/">&lt;h3 id=&quot;sparkles-added&quot;&gt;✨ Added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Add a &lt;code&gt;___END___&lt;/code&gt; pseudo-section in ranges to include everything until the end of the file&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wrench-fixed&quot;&gt;🔧 Fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Return default content when section range boundaries are not found&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;link-links&quot;&gt;🔗 Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Community page: &lt;a rel=&quot;external&quot; href=&quot;https://community.obsidian.md/plugins/blueprint&quot;&gt;https://community.obsidian.md/plugins/blueprint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub repo: &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin&quot;&gt;https://github.com/madx/blueprint-obsidian-plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin#documentation&quot;&gt;https://github.com/madx/blueprint-obsidian-plugin#documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Blueprint 0.7.0</title>
        <published>2026-07-13T00:00:00+00:00</published>
        <updated>2026-07-13T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/blueprint-0-7-0/"/>
        <id>https://koleir.dev/blog/blueprint-0-7-0/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/blueprint-0-7-0/">&lt;h3 id=&quot;sparkles-added&quot;&gt;✨ Added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Add &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin#section-ranges&quot;&gt;section ranges&lt;/a&gt; support. This is still a bit experimental so proceed with caution!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;memo-changes&quot;&gt;📝  Changes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated dependencies.&lt;/li&gt;
&lt;li&gt;[dev] TypeScript 6.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;link-links&quot;&gt;🔗 Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Community page: &lt;a rel=&quot;external&quot; href=&quot;https://community.obsidian.md/plugins/blueprint&quot;&gt;https://community.obsidian.md/plugins/blueprint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub repo: &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin&quot;&gt;https://github.com/madx/blueprint-obsidian-plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a rel=&quot;external&quot; href=&quot;https://github.com/madx/blueprint-obsidian-plugin#documentation&quot;&gt;https://github.com/madx/blueprint-obsidian-plugin#documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Moving things forward with a d6</title>
        <published>2025-07-01T00:00:00+00:00</published>
        <updated>2025-07-01T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/moving-things-forward-with-a-d6/"/>
        <id>https://koleir.dev/blog/moving-things-forward-with-a-d6/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/moving-things-forward-with-a-d6/">&lt;p&gt;Generally, when my Quest players take actions, I don&#39;t necessarily call for a &lt;code&gt;d20&lt;/code&gt; roll.
Instead, I adjust how the situation unfolds based on their roleplay, the circumstances, and their background, using a simple &lt;code&gt;d6&lt;/code&gt;.
I first decide the overall direction of the outcome: positive or negative, then I use one of the following two scales:&lt;/p&gt;
&lt;h3 id=&quot;positive-scale&quot;&gt;Positive scale&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1-3&lt;/strong&gt;: The action proceeds as expected, NPCs react in a predictable way&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4-5&lt;/strong&gt;: The situation yields an advantage for the player, NPCs are more receptive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6&lt;/strong&gt;: An opportunity presents itself, NPCs prove particularly cooperative&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;negative-scale&quot;&gt;Negative scale&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt;: The situation will turn out to be more complicated than expected, NPCs are on the verge of opposition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2-3&lt;/strong&gt;: Obstacles get in the player&#39;s way, NPCs are on the defensive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4-6&lt;/strong&gt;: The action proceeds as expected, NPCs react in a predictable way&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>An Imperfection</title>
        <published>2025-04-09T00:00:00+00:00</published>
        <updated>2025-04-09T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/an-imperfection/"/>
        <id>https://koleir.dev/blog/an-imperfection/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/an-imperfection/">&lt;p&gt;Leaning against the rough, damp stone of the corridor, Naher struggled to catch their breath.
Their ragged panting had yet to calm, while the creature before them drew its last. The fight had been brief, but incredibly violent, and their limbs still bore its bloody marks. They tightened their grip on the khépesh and, with some effort, stood up to rejoin their siblings in the main hall, leaving behind the mutilated, blood-soaked corpse of the humanoid beast that had confronted them moments earlier.&lt;/p&gt;
&lt;p&gt;Earlier that morning, the alarm horns had echoed throughout the fortress, and they had leapt up to rush to their assigned post.
Weeks before, a horde of dreunders had landed near the Iseret woods, on the western edge of Mlaar. Day after day, they had infiltrated the land, slaughtering every varyliar they came across. Despite the varyliars&#39; resistance, the dreunders had eventually drawn close to the stronghold — the last bastion before access to the Source, the most sacred place for all varyliars.&lt;/p&gt;
&lt;p&gt;Where refinement, excellence, and subtlety defined each of the semi-magical varyliars, dreunders were infused with brutality, crudeness, and simplicity from birth.
These semi-primitive beings — at least from the varyliars&#39; point of view — were no less formidable. Their extraordinary strength, unyielding constitution, and natural resistance to the magic of the Nine Moons made them deadly foes. And in numbers, they overwhelmed: when one fell on the front line, five more, thirsting for blood and destruction, would immediately take its place. Opposite them, the varyliars fell one by one, slowly, like the last drops from a punctured waterskin drying out inexorably.&lt;/p&gt;
&lt;p&gt;Naher had run into one while trying to reach the walkway of the second wall.
They hadn&#39;t thought the enemy had already penetrated so deep into the building, which meant only a few meters separated them from what clearly was their target: the Source itself, from which the varyliars drew their very essence. They turned back, their conscience pushing them to retrace their steps.&lt;/p&gt;
&lt;p&gt;They entered the great hall via a small mezzanine lined with a balustrade, its gilding glinting under the flickering flames of the lanterns suspended from the imposing chandeliers overhead.
The white stone and pale marble reflected the light in every direction, bathing the entire room in a soft yet steady glow. And yet, the grandeur of the place felt far less comforting than usual. Looking down, they noticed the lifeless bodies of several of their kind strewn across the once-immaculate floor. Horror, which they had tried to resist, quickly gripped them, paralyzing every limb and causing spasms in their chest. Around thirty lay there, motionless,&lt;/p&gt;
&lt;p&gt;their mutilated bodies soaked in blood and viscera, their faces twisted by terror or pain.
Several dreunders also lay dead, some bearing marks only the weapons of their own kin could have inflicted.&lt;/p&gt;
&lt;p&gt;A cold hand landed on their arm and they spun around with a cry of terror, blade at the ready.
They quickly recognized the familiar face of Nisena, a young mage from House Saqqar, who gently urged them to lower their weapon. They obeyed, then burst into tears. Though their houses had often opposed each other in the past, today they stood united against a common threat. The mage pulled Naher out of sight and spoke in a whisper:&lt;/p&gt;
&lt;p&gt;— The devils got through, they said.
A small group of us is heading to the Grand Basin to hold them off until reinforcements arrive. Come with us!&lt;/p&gt;
&lt;p&gt;— They… there are too many of them… Naher replied, voice trembling.&lt;/p&gt;
&lt;p&gt;— Maybe so.
But we must do all we can to protect the Source, said Nisena, their tone firm and absolute.&lt;/p&gt;
&lt;p&gt;— I&#39;ll follow you, said Naher, trying to gather themself.&lt;/p&gt;
&lt;p&gt;The two allies joined the motley group Nisena had mentioned — warriors, mages, and many civilians armed with whatever they could find, or with weapons retrieved from the fallen.
At their head stood a commander of the White Guard, clad in intricately sculpted silver armor, coordinating the troops and laying out a hastily-formed plan. They were more imposing than most varyliars present, and though their helm concealed most of their face, Naher could sense the anxiety and resignation in the soldier&#39;s demeanor.&lt;/p&gt;
&lt;p&gt;The group moved out after a few minutes and quickly reached the antechamber leading to the Grand Basins.
By approaching from the upper floor, they hoped to catch their enemies off guard — or at least that was their hope. The metallic tang of blood grew stronger with every step toward the place they all believed might be their grave. The sounds of battle grew louder, reverberating off the thick stone walls, crashing into their eardrums. Screams of rage and cries of pain battered their spirits and sapped their will even before they reached the balconies where they had planned to strike.&lt;/p&gt;
&lt;p&gt;The warriors would plunge into the fray while the mages stayed above, covering their allies and staying out of reach of the dreunders&#39; brute strength.
That had been the plan — and so it was done.&lt;/p&gt;
&lt;p&gt;Naher had rarely seen the Source since their Renaissance.
They still remembered the place, but barely recognized it as they leapt from the balcony onto one of the stone bridges spanning the Grand Basins. The dreunders had already breached the main gate and clashed with the guards. The commander&#39;s plan had worked: they had gotten ahead of their enemies. Naher readied their bow and took position, loosing arrow after arrow at the crimson-skinned barbarians. From above, the mages cast spells, drawing power from the Source — so close — and from the shards of moonstone adorning their accessories. Lightning and fire tore through the air, charring the dreunders where they stood, leaving only darkened smears on the alabaster floor.&lt;/p&gt;
&lt;p&gt;Suddenly, a side door burst open, unleashing a frenzied horde that overwhelmed the defenders, caught off guard.
Naher turned, loosed a few deadly arrows, then holstered their bow and drew their khépesh and a curved dagger, ready for close combat. Their position gave them an edge: the bridge was narrow, preventing the enemies from fully exploiting their superior numbers. Outside the hall, the deep horns of the reinforcements finally sounded in the distance, bringing a sliver of hope to the children of Dirn who still held the line. They fought with renewed vigor, repelling wave after wave of Krenne&#39;s spawn. Those attacking Naher hesitated briefly, until one of them locked eyes with the varyliar, his gaze ablaze with fury. He raised his twin jagged axes to the ceiling and charged, mouth foaming with bile and venom.&lt;/p&gt;
&lt;p&gt;The clash of blades echoed through the hall, and the impact forced Naher back several meters.
They parried strike after strike, slashing the beast&#39;s thick hide while nimbly dodging the slower but powerful blows. But fatigue set in, and after several long seconds, they made a mistake. The monster sank its axe into their thigh. Staggered by the blow&#39;s force, they faltered. As the dreunder prepared to deliver a likely fatal strike, Naher plunged the curved blade of their khépesh into the creature&#39;s side and pulled it close, unbalancing it.&lt;/p&gt;
&lt;p&gt;Both of them toppled into the shimmering basin to which Naher had always been destined, under the horrified gaze of the sanctuary&#39;s last defenders.
As their body met the iridescent waters, Naher caught one final glimpse of the great door, from which the rest of the White Guard was emerging.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Table of School Supplies</title>
        <published>2024-09-15T00:00:00+00:00</published>
        <updated>2024-09-15T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/table-of-school-supplies/"/>
        <id>https://koleir.dev/blog/table-of-school-supplies/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/table-of-school-supplies/">&lt;p&gt;A rollable table of school supplies created by members of the &lt;a rel=&quot;external&quot; href=&quot;https://discord.com/invite/obsidianmd&quot;&gt;Obsidian Members Group Discord server&lt;/a&gt;.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;dice: 1d37&lt;/th&gt;&lt;th&gt;Supplies&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Arcane Abacus&lt;/strong&gt;: A magical device that helps with complex spell calculations, up to the level of cantrip. &lt;em&gt;Fanceh&lt;/em&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Enchanted Quill&lt;/strong&gt;: Writes on its own, capable of drafting spell scrolls or completing long homework assignments. Matches literacy of the user.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Pocket-Sized Alchemy Set&lt;/strong&gt;: A portable kit for mixing potions and crafting minor alchemical items on the go. Easily lost.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Gravity-Defying Stylus&lt;/strong&gt;: A sleek writing tool that works flawlessly in zero-G environments or in anti-gravity classrooms. It has a habit of floating away if not secured.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Quantum Eraser&lt;/strong&gt;: A device that can erase not only written errors but also unintended actions or short periods of time. Use sparingly—time loops are no fun.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Infinity Ruler&lt;/strong&gt;: An extensible metal ruler that can grow as much as needed and indicates its total length where the user holds it. Doubles as a blunt weapon.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Stable Stapler&lt;/strong&gt;: An orange-red coloured stapler. It signifies stability, as well as the true evolution of everything becoming a crab. Can staple lips, time, and matter.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Enchanted Paperweights&lt;/strong&gt;: Dragon-shaped paperweights that keep parchments straight and breathe fire onto intruders within 5ft if in guard mode.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Piece of the Astronomy Tower&lt;/strong&gt;: The orrery for studying planar alignment.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Pouch of Infinite Pencil Crayons&lt;/strong&gt;: A small bag that always contains the exact shade needed, with pencils staying sharp for up to an hour. Can summon 24 at a time.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Spellbound Glasses&lt;/strong&gt;: Glasses bound to a spellcaster&#39;s spellbook, allowing them to read or edit it as long as it&#39;s on the same plane. Doubles as a spellcasting focus.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Blackhole Backpack&lt;/strong&gt;: Anything placed inside disappears to another plane and can be found when not needed. Roll on this table to see what comes out when looking inside.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Fountain Pen (Cursed)&lt;/strong&gt;: Takes everything literally. When writing with it, it turns into a fountain of any nearby liquid.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Enchanted Highlighters (set of 4)&lt;/strong&gt;: Highlights text that glows neon and sheds light in a 20ft radius.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Exsanguinating Quill&lt;/strong&gt;: This quill draws ink from blood, working only on creatures that can bleed. Ideal for young vampires.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Too-nah&#39;s Toiletry Bag&lt;/strong&gt;: A magical bag that contains self-care items that adapt to the species of the user.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Soap of Prestidigitation&lt;/strong&gt;: A bar of soap that cleanses with the effects of Prestidigitation, ensuring cleanliness without water.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Comb of Tangle-Banishment&lt;/strong&gt;: Removes knots and tangles, casting Lesser Restoration on your hair.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Comb of Tangle-Banishment (Undead)&lt;/strong&gt;: Removes knots and tangles from undead hair, as if casting Gentle Repose.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Mirror of True Reflection&lt;/strong&gt;: Shows your true appearance, dispelling illusions and disguises (including bedhead).&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Toothpaste of Dragon’s Breath&lt;/strong&gt;: Cleans teeth and leaves breath with a hint of lightning, fire, or frost.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Towel of Drying&lt;/strong&gt;: Instantly dries anything it touches, enchanted with Absorb Elements.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Flask of Ever-Fresh Water&lt;/strong&gt;: Refillable flask producing endless clean water.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Deodorant of Masking Scent&lt;/strong&gt;: Neutralizes body odor and keeps the user scent-free for 24 hours.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Nail Clippers of the Mountain Dwarf&lt;/strong&gt;: Enchanted clippers that file and clip even the toughest claws, nails, or scales.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Cleansing Powder&lt;/strong&gt;: A magically infused powder that can clean clothes and armor like the Mending spell when mixed with water.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Razor of Sharpness&lt;/strong&gt;: A razor that never dulls, providing a perfect shave or trim.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Scented Balm of the Feywild&lt;/strong&gt;: Floral balm that soothes and grants temporary HP equal to your level when applied to cuts or bruises.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Toothpick of Detection&lt;/strong&gt;: Grants the ability to detect poisons for one minute when placed in the mouth.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Teacher&#39;s Mana Dampener&lt;/strong&gt;: An orb used in exam rooms that casts an Antimagic Field to prevent cheating during tests.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Phantom Paperclip&lt;/strong&gt;: An invisible paperclip used to clip papers together or pick locks with a +1 bonus to Stealth when lockpicking.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Talara&#39;s Literate Blackboard&lt;/strong&gt;: A blackboard that answers any question written on it about science, art, history, or religion.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Interplanar Chalks&lt;/strong&gt;: Opens a portal to a friendly demiplane when used in hopscotch or can be thrown to deal 1d4 stunning damage.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Text of Concealing&lt;/strong&gt;: Appears as the correct textbook for the class, while hiding a comic or other reading material.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Snake-rs&lt;/strong&gt;: Sneakers worn by cool mages that tie themselves automatically with just a glance.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;36&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Shade Shades&lt;/strong&gt;: Sunglasses that let you see ghosts when worn at night.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Combatulator Tu-94&lt;/strong&gt;: A calculator for computing success chances in alchemy, precise trajectories, and wormholes.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>REKT code</title>
        <published>2021-04-21T00:00:00+00:00</published>
        <updated>2021-04-21T00:00:00+00:00</updated>
        
        <author>
          <name>koleir</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://koleir.dev/blog/rekt-code/"/>
        <id>https://koleir.dev/blog/rekt-code/</id>
        
        <content type="html" xml:base="https://koleir.dev/blog/rekt-code/">&lt;p&gt;I have a few key indicators that I follow when writing or reviewing code in order
to make sure its quality is acceptable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Being &lt;strong&gt;Readable&lt;/strong&gt; is in my opinion the most important factor. Code is meant
to be read and understood by humans before computers (they can often figure
it out anyways) and to achieve this it has to be a pleasant experience: it
should be well spaced out, use descriptive variable and function names, be
organized in logical units split across a well thought out file tree, use
comments where it makes sense, etc. Readable code is maintainable code.&lt;/li&gt;
&lt;li&gt;Quality code should be &lt;strong&gt;Expressive&lt;/strong&gt;: it does what it looks to be doing. It
might sound like this is the same thing as readability but here we are more
concerned about the fact that the programmer&#39;s intent shows through the code
without the need to resort to comments to explain what they want to achieve.&lt;/li&gt;
&lt;li&gt;The code should also be &lt;strong&gt;Kept simple&lt;/strong&gt; because being simple means it will be
easy to pick up on it a few weeks or month later and easier for devs of all
levels to understand. To keep it simple it should not rely on numerous
complex abstractions for the sake of having some. Classes and modules should
keep a small and specific API surface, functions should operate on a small
number of parameters, etc.&lt;/li&gt;
&lt;li&gt;Finally, it should remain &lt;strong&gt;on Topic&lt;/strong&gt; which is a way of saying that it
should do what it is expected to do and nothing more. This is an application
of the &lt;a rel=&quot;external&quot; href=&quot;https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it&quot;&gt;YAGNI&lt;/a&gt; (You Aren&#39;t Gonna Need It) principle which dictates
that you should not implement things ahead of time and focus on what is asked
at a given moment. I think that this principle pairs well with the fact that
code should be &lt;strong&gt;tested&lt;/strong&gt; to ensure that it does what it is asked to do. When
reviewing code the topic is easy to define as it is most commonly the
story/task/issue/bug you are working on, so the code should address that and
nothing else (i.e. do not commit a huge Prettier reformatting of the code
base in the same PR where you are fixing a bug!).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes, that makes REKT as an acronym and yes I find it mildly funny 😄&lt;/p&gt;
</content>
        
    </entry>
</feed>
