<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Code on DO GEESE SEE GOD</title>
		<link>https://skapande.org/code/</link>
		<description>Recent content in Code on DO GEESE SEE GOD</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Mon, 20 Jul 2026 17:28:20 +0200</lastBuildDate>
		
			<atom:link href="https://skapande.org/code/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Xdotool_wmctrl</title>
				<link>https://skapande.org/code/xdotool_wmctrl/</link>
				<pubDate>Mon, 20 Jul 2026 17:28:20 +0200</pubDate>
				<guid>https://skapande.org/code/xdotool_wmctrl/</guid>
				<description>&lt;p&gt;Testing things sometimes gives you insights.. like when minitesting my Ruby module &lt;code&gt;Xdo&lt;/code&gt;. I found that different kinds of windows positioned differently.&lt;/p&gt;&#xA;&lt;p&gt;Turns out that &lt;code&gt;xdotool windowmove&lt;/code&gt; has inconsistencies, using &amp;lsquo;outer&amp;rsquo; size (including decorations) and treating SSD-windows and CSD-windows differently.&lt;/p&gt;&#xA;&lt;p&gt;The soulution was &lt;code&gt;wmctrl -e gravity 10&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I never had such a &amp;ldquo;visual&amp;rdquo; minitest.. where windows where moved around and checked using &lt;code&gt;xwininfo&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Xdo_lang</title>
				<link>https://skapande.org/code/xdo_lang/</link>
				<pubDate>Thu, 18 Jun 2026 20:21:40 +0200</pubDate>
				<guid>https://skapande.org/code/xdo_lang/</guid>
				<description>&lt;p&gt;When finishing my xdotool wrapper class.. I used it for a silly little idea I had:&lt;/p&gt;&#xA;&lt;p&gt;The Xdo Language.. xdl&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdl wezterm:m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;N:m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;W &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# m is move, N,S,E,W is edges of the screen.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdl brave:m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;E@wezterm &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# E@wezterm is wezterms East side&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;more-examples&#34;&gt;&#xA;  more examples&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#more-examples&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;h|w@window_name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# gets the height or width of the window&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdl sto name expression1 expression2 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# this stores the&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# expressions under &amp;#39;name&amp;#39; in yaml-file.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdl rec name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# this runs the stored expressions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xdl brave:m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;E@wezterm:h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;1:w&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;E&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# h=1 is full height.. 1/2 is half height and so on.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# w=E sets width to whats available East until edge.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Tile two terminals side by side:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;xdl alacritty:w=1/2:m=W&#xA;xdl urxvt:w=E:m=E@alacritty&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;Move a window to the top-right and give it 1/3 width:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;xdl chrome:w=1/3:m=N:m=E&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;Match another window&amp;rsquo;s height and snap below it:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;xdl terminal:h=h@editor:m=S@editor&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Exec_logg</title>
				<link>https://skapande.org/code/exec_logg/</link>
				<pubDate>Tue, 09 Jun 2026 17:33:25 +0200</pubDate>
				<guid>https://skapande.org/code/exec_logg/</guid>
				<description>&lt;p&gt;Jag har en rätt omfattande samling exekverbara filer jag skrivt vid något tillfälle. Jag skulle behöva veta vilka jag egentligen använder.&lt;/p&gt;&#xA;&lt;p&gt;Tack vara bytet från bash till zsh.. så har jag inbyggd pre-exec hook.&lt;/p&gt;&#xA;&lt;p&gt;Kommandot går igenom och matchas mot två PATHS. Återfinns kommandot som exekverbar fil, så loggas kommandot med tidskod.&lt;/p&gt;&#xA;&lt;p&gt;Detta fick den lustiga konsekvensen att jag kan använda &lt;code&gt;\cmd&lt;/code&gt; för att cmd inte ska loggas. Precis samma sätt som man skippar alias.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Argument_parser_number_9</title>
				<link>https://skapande.org/code/argument_parser_number_9/</link>
				<pubDate>Mon, 08 Jun 2026 17:27:51 +0200</pubDate>
				<guid>https://skapande.org/code/argument_parser_number_9/</guid>
				<description>&lt;p&gt;One thing I return to again and again, is parsing arguments. I have studied most of the available options for ruby: optimist, optimist_xl, rationalist, slop etc.&lt;/p&gt;&#xA;&lt;p&gt;I have also built several parsers of my own.. using different approaches.&lt;/p&gt;&#xA;&lt;p&gt;Today I started thinking: What is the &lt;em&gt;main&lt;/em&gt; problem when parsing arguments.&lt;/p&gt;&#xA;&lt;p&gt;Well, the main problem is to know whether an item is a key or a value.&lt;/p&gt;&#xA;&lt;p&gt;Example:&lt;br&gt;&#xA;&lt;code&gt;--name Olle --age 32 --verbose my_file.txt&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_box</title>
				<link>https://skapande.org/code/ruby_box/</link>
				<pubDate>Sun, 07 Jun 2026 20:17:14 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_box/</guid>
				<description>&lt;p&gt;For some time I wondered what to do with Ruby::Box. It wasn&amp;rsquo;t what I expected.&lt;/p&gt;&#xA;&lt;p&gt;Keeping things in namespace.. how boring. And we already have this.&lt;/p&gt;&#xA;&lt;p&gt;Then I realized.. you could reverse it! You could use it to SHARE namespace.&lt;/p&gt;&#xA;&lt;p&gt;So I wrote a new version of an old templating-engine.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;database has &amp;rsquo;template&amp;rsquo; and &amp;lsquo;snippet&amp;rsquo;&lt;/li&gt;&#xA;&lt;li&gt;template can import &amp;lsquo;snippet&amp;rsquo;.. that can import &amp;lsquo;snippet&amp;rsquo; (recursively).&lt;/li&gt;&#xA;&lt;li&gt;a page can be built from a &amp;rsquo;template&amp;rsquo; but not from a &amp;lsquo;snippet&amp;rsquo;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So.. the &amp;rsquo;template&amp;rsquo; instantiates the Box; the &amp;lsquo;snippet&amp;rsquo;(s) use it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Aseqdump_with_json</title>
				<link>https://skapande.org/code/aseqdump_with_json/</link>
				<pubDate>Tue, 02 Jun 2026 18:26:04 +0200</pubDate>
				<guid>https://skapande.org/code/aseqdump_with_json/</guid>
				<description>&lt;p&gt;Rewrote aseqdump in Nim. My version listens only for events: NOTEON, NOTEOFF, CONTROLLER and PGMCHANGE .. because they are the only events I need.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Source code: 312 rows&lt;/li&gt;&#xA;&lt;li&gt;Compiled binary: 67K&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --list | -l shows ports&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --port | -p listens to port (and output events)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  --json      output events as json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;test&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; midi_dump -p 28:0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Waiting &lt;span style=&#34;color:#c099ff&#34;&gt;for&lt;/span&gt; data. Press Ctrl+C to end.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Source  Event                  Ch  Data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 28:0   Note on                 1, note 64, velocity &lt;span style=&#34;color:#ffc777&#34;&gt;88&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 28:0   Note on                 1, note 60, velocity &lt;span style=&#34;color:#ffc777&#34;&gt;84&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 28:0   Note on                 1, note 67, velocity &lt;span style=&#34;color:#ffc777&#34;&gt;73&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 28:0   Note off                1, note &lt;span style=&#34;color:#ffc777&#34;&gt;64&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 28:0   Note off                1, note &lt;span style=&#34;color:#ffc777&#34;&gt;67&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 28:0   Note off                1, note &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; midi_dump --json -p 28:0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_client&amp;#34;&lt;/span&gt;:28,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_port&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note_on&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;channel&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note&amp;#34;&lt;/span&gt;:60,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;velocity&amp;#34;&lt;/span&gt;:79&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_client&amp;#34;&lt;/span&gt;:28,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_port&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note_on&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;channel&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note&amp;#34;&lt;/span&gt;:64,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;velocity&amp;#34;&lt;/span&gt;:84&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_client&amp;#34;&lt;/span&gt;:28,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_port&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note_on&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;channel&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note&amp;#34;&lt;/span&gt;:67,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;velocity&amp;#34;&lt;/span&gt;:75&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_client&amp;#34;&lt;/span&gt;:28,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_port&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note_off&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;channel&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note&amp;#34;&lt;/span&gt;:64,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;velocity&amp;#34;&lt;/span&gt;:0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_client&amp;#34;&lt;/span&gt;:28,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_port&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note_off&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;channel&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note&amp;#34;&lt;/span&gt;:67,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;velocity&amp;#34;&lt;/span&gt;:0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_client&amp;#34;&lt;/span&gt;:28,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;source_port&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;event&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note_off&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;channel&amp;#34;&lt;/span&gt;:0,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;note&amp;#34;&lt;/span&gt;:60,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;velocity&amp;#34;&lt;/span&gt;:0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#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>Date_calc</title>
				<link>https://skapande.org/code/date_calc/</link>
				<pubDate>Thu, 28 May 2026 18:21:27 +0200</pubDate>
				<guid>https://skapande.org/code/date_calc/</guid>
				<description>&lt;p&gt;I wrote datecalc &amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; irb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./datecalc&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;irb(main):&lt;span style=&#34;color:#ffc777&#34;&gt;002&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; dc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;DateCalc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;2026-05-25&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;irb(main):&lt;span style=&#34;color:#ffc777&#34;&gt;003&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; dc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;w &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# advance 5 weeks&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;irb(main):&lt;span style=&#34;color:#ffc777&#34;&gt;005&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; dc &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#39;2026-06-29&amp;#39; &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And datecalc knows about Spring Equinox.. and Fall Equinox. It knows about Easter and Full Moon&amp;hellip; and about the Soltices.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;→MS &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# advance to next Summer Soltice (or stay if condition is met)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;→SE→FM→Thu &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# advance to next Summer Equinox,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#            then to next Full Moon, then to next Thursday&lt;/span&gt;&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;DateCalc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new               &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 2026-05-27&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;                        &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; #&amp;lt;DateCalc …&amp;gt;  (date advanced 5 months)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; dc                         &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 2026-10-27&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; dc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;m                       &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 10  (read the new value via to_s)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;d &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;                       &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; #&amp;lt;DateCalc …&amp;gt;  (back 10 days)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; dc                         &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 2026-10-17&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;                        &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; #&amp;lt;DateCalc …&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; dc                         &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 2027-10-17&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# chaining works&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(dc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;                &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# advance year by 1, then months by 2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Find real midsummer:&lt;br&gt;&#xA;&lt;code&gt;→MS←Fri # advance to Summer soltice, back to previous Friday&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Opencode_do_not_respect_modes</title>
				<link>https://skapande.org/code/opencode_do_not_respect_modes/</link>
				<pubDate>Tue, 26 May 2026 21:52:51 +0200</pubDate>
				<guid>https://skapande.org/code/opencode_do_not_respect_modes/</guid>
				<description>&lt;p&gt;As from today (2026-05-26), opencode-cli do not respect Build-mode or Plan-mode.&lt;br&gt;&#xA;It freely create files and make changes in Build-mode.. issuing only &amp;ldquo;I&amp;rsquo;m sorry&amp;rdquo; when pointing this out.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Code_golfing_survey_coords</title>
				<link>https://skapande.org/code/code_golfing_survey_coords/</link>
				<pubDate>Tue, 19 May 2026 18:16:34 +0200</pubDate>
				<guid>https://skapande.org/code/code_golfing_survey_coords/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;C&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:x&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;:y&lt;/span&gt;){&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;-&lt;/span&gt;(o)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;C&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x,y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;d&lt;/span&gt;(o)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hypot(x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x,y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y);&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_&lt;/span&gt;(o)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;i?&lt;/span&gt;(a,b,c,d)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;((b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;a)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;_(c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;a)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;(b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;a)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;_(d&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;a)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;((d&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;c)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;_(a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;c)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;(d&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;c)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;_(b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;c)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-a&amp;#39;&lt;/span&gt;)?&lt;span style=&#34;color:#c3e88d&#34;&gt;:a&lt;/span&gt;:(&lt;span style=&#34;color:#ff966c&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-p&amp;#39;&lt;/span&gt;)?&lt;span style=&#34;color:#c3e88d&#34;&gt;:p&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:f&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;P&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;ARGV&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map{C&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_f&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;};N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;P&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size;&lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;P&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;zip(P&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rotate)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; E&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;with_index&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;combination(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;any?{&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;(a,i),(b,j)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;(i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;j)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;abs&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;j!&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;i?(a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;E&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum{_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;_2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;_2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;abs&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;;D&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;E&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map{_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;d(_2)};T&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;D&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;(N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;:&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;);F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;%.2f&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:a&lt;/span&gt;;&lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;;F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;A&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:p&lt;/span&gt;;F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;T&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:f&lt;/span&gt;;N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;1→2: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;T&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; m&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:D&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;with_index{&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;_2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;→&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;(_2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;N&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;_1&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; m&amp;#34;&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;total: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;T&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; m&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;area: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;F&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;A&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; m²&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# usage&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code 0,0 10,0 10,10 0,10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code -a 0,0 10,0 10,10 0,10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code -p 0,0 10,0 10,10 0,10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code 991.97,666.91 990.42,707.42&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code -p 991.97,666.91 990.42,707.42&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code 0,0 10,0 5,10 10,10 0,5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;code -a 0,0 10,0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;$(&lt;/span&gt;code -p 0,0 10,0 10,10 0,10&lt;span style=&#34;color:#c099ff&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; + &lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;$(&lt;/span&gt;code -p 0,0 10,0&lt;span style=&#34;color:#c099ff&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; &amp;#34;&lt;/span&gt; | bc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Bashrc</title>
				<link>https://skapande.org/code/bashrc/</link>
				<pubDate>Wed, 13 May 2026 19:39:34 +0200</pubDate>
				<guid>https://skapande.org/code/bashrc/</guid>
				<description>&lt;p&gt;Today I consolidated &lt;code&gt;~/.bashrc&lt;/code&gt; and &lt;code&gt;~/.bash_profile&lt;/code&gt; to one. Got rid of some unintended duplicate lines unneeded things.&lt;/p&gt;&#xA;&lt;p&gt;Also replaced bash history with &lt;code&gt;atuin&lt;/code&gt;. I use &lt;code&gt;bash-preexec&lt;/code&gt; to get the hooks atuin needs to write directly to db (sqlite3 .. i think). Initialized it all in .bashrc and it works.&lt;/p&gt;&#xA;&lt;p&gt;Before I had separate history for each pane in wezterm. Now I share it.. per directory with up-arrow, and globally with Ctrl-r.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_runner_nvim</title>
				<link>https://skapande.org/code/ruby_runner_nvim/</link>
				<pubDate>Mon, 11 May 2026 11:21:45 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_runner_nvim/</guid>
				<description>&lt;p&gt;This is a non-technical explanation of how a code-runner mapping should work with Nvim. No code either.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;map F9 (normal mode)&lt;/li&gt;&#xA;&lt;li&gt;open a split (keep reference)&lt;/li&gt;&#xA;&lt;li&gt;run the code in the split&lt;/li&gt;&#xA;&lt;li&gt;in split buffer.. define two new mappings:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt; (terminal mode)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt; (normal mode)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;both escape-mappings call &amp;lsquo;cleanup&amp;rsquo;.. that closes the split and destroys the buffer.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This allows you to close the split regardless on if the execution of the script succeeded or failed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_python_string_methods</title>
				<link>https://skapande.org/code/ruby_python_string_methods/</link>
				<pubDate>Mon, 04 May 2026 19:58:08 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_python_string_methods/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nim&#34; data-lang=&#34;nim&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;proc &lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;bulk_upcase&lt;/span&gt;(arr: cstringArray, len: cint) {.exportc, dynlib, cdecl.} &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; ..&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; len:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;let&lt;/span&gt; s &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;cast&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;ptr&lt;/span&gt; UncheckedArray&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4fd6be&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;(arr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; s &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;continue&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;var&lt;/span&gt; j &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;j&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;j&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;and&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;j&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;z&amp;#39;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;j&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; chr(ord(s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;j&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;32&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      inc j&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ffi&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;NimLib&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;extend&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;FFI&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Library&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ffi_lib &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./libfast_string.so&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  attach_function &lt;span style=&#34;color:#c3e88d&#34;&gt;:bulk_upcase&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:pointer&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:int&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:void&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;z&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;  &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;500&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  &amp;#34;&lt;/span&gt; } &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;500&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pointers &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;FFI&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;MemoryPointer&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;from_string(s) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ptr_array &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;FFI&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;MemoryPointer&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:pointer&lt;/span&gt;, pointers&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ptr_array&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;write_array_of_pointer(pointers)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;NimLib&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bulk_upcase(ptr_array, pointers&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Resultat för första strängen:&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; pointers&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;read_string&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;50&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# results = pointers.map(&amp;amp;:read_string)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Benchmark Results:&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_vs_python2</title>
				<link>https://skapande.org/code/ruby_vs_python2/</link>
				<pubDate>Mon, 04 May 2026 10:58:57 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_vs_python2/</guid>
				<description>&lt;h1 id=&#34;ruby-vs-python-performance-comparison&#34;&gt;&#xA;  Ruby vs Python: Performance Comparison&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#ruby-vs-python-performance-comparison&#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;/h1&gt;&#xA;&lt;h2 id=&#34;summary&#34;&gt;&#xA;  Summary&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#summary&#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;Ruby wins across all three benchmarks when using optimized implementations.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Benchmark&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Python&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Ruby&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Winner&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;JSON Parsing&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.998s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.709s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Ruby&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Prime Calculation&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2.808s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.155s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Ruby&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Async I/O&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.044s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.022s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Ruby&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Ruby is faster in all three areas.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-data-parsing&#34;&gt;&#xA;  1. Data Parsing&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#1-data-parsing&#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;Ruby wins by &amp;ndash;yjit&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_vs_python</title>
				<link>https://skapande.org/code/ruby_vs_python/</link>
				<pubDate>Sun, 03 May 2026 19:55:54 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_vs_python/</guid>
				<description>&lt;h1 id=&#34;benchmark-results-ruby-401-vs-python-3143-vs-perl-5420&#34;&gt;&#xA;  Benchmark Results: Ruby 4.0.1 vs Python 3.14.3 vs Perl 5.42.0&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#benchmark-results-ruby-401-vs-python-3143-vs-perl-5420&#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;/h1&gt;&#xA;&lt;h2 id=&#34;test-environment&#34;&gt;&#xA;  Test Environment&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#test-environment&#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;strong&gt;Ruby&lt;/strong&gt;: 4.0.1 with YJIT/ZJIT enabled&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: 3.14.3&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Perl&lt;/strong&gt;: 5.42.0&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;test-1-general-performance&#34;&gt;&#xA;  Test 1: General Performance&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#test-1-general-performance&#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;setup&#34;&gt;&#xA;  Setup&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#setup&#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;ul&gt;&#xA;&lt;li&gt;100,000 iterations for most tests&lt;/li&gt;&#xA;&lt;li&gt;10,000 iterations for array tests&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;results&#34;&gt;&#xA;  Results&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#results&#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;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Test&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Ruby 4.0.1&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Python 3.14.3&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Perl 5.42.0&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Winner&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;rational&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2.69s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5.47s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;(error)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Ruby&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;loop&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.0018s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.0127s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.0041s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Ruby&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;string&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.41s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.11s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0.005s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Python&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;array&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4.73s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;3.88s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5.40s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Python&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;7.84s&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;9.47s&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5.41s*&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ruby&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;*Perl rational test had errors&lt;/p&gt;</description>
			</item>
			<item>
				<title>Atom_lang</title>
				<link>https://skapande.org/code/atom_lang/</link>
				<pubDate>Tue, 03 Mar 2026 22:04:10 +0100</pubDate>
				<guid>https://skapande.org/code/atom_lang/</guid>
				<description>&lt;p&gt;I remember Euphoria.. the programming language.&lt;br&gt;&#xA;This is not &lt;em&gt;that&lt;/em&gt;.. but the inspiration came from there.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# frozen_string_literal: true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./atom&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./lang&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;l &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Lang&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;l &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;until&lt;/span&gt; l&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty? &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; l&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 11&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 21&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 9&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;l &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [1, 2, 3, 4, 5, 6]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; l &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;{ it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;even? } &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;{ &lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; res &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [(4/1), (8/1), (12/1)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; { (it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PI&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rat(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) } &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [(88/7), (201/8), (377/10)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;this-is-atom&#34;&gt;&#xA;  this is atom&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#this-is-atom&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Numeric&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Comparable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:val&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(val) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (@val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_r)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;&amp;lt;=&amp;gt;&lt;/span&gt;(o) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (@val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;=&amp;gt;&lt;/span&gt; (o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;is_a?(&lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt;) ? o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val : o))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;coerce&lt;/span&gt;(o) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(o), &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:+&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:-&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:*&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:/&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:%&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:**&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    define_method(op) { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(@val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(op, (o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;is_a?(&lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt;) ? o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val : o))) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_f&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_r&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; define_method(op) { @val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(op) } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# rationalize to n decimal places (dp)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# (see (3.14/2).rationalize(0.001) # for reference)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;rationalize&lt;/span&gt;(dp) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Atom&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(@val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rationalize(&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**-&lt;/span&gt;dp))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  alias_method &lt;span style=&#34;color:#c3e88d&#34;&gt;:rat&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:rationalize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_s&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_f&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;this-is-lang&#34;&gt;&#xA;  this is lang&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#this-is-lang&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Lang&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:ar&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;(obj) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;push(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Array&lt;/span&gt;(obj)) } )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;(obj) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;unshift(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Array&lt;/span&gt;(obj)) } )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;(n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pop : @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pop(n) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;&amp;gt;&lt;/span&gt;(n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;shift : @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;shift(n) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;|&lt;/span&gt;(fn) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Lang&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;fn) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;&amp;amp;&lt;/span&gt;(fn) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Lang&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;filter(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;fn) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;inspect&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_r&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;empty?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Opencode_nvim</title>
				<link>https://skapande.org/code/opencode_nvim/</link>
				<pubDate>Fri, 27 Feb 2026 21:01:22 +0100</pubDate>
				<guid>https://skapande.org/code/opencode_nvim/</guid>
				<description>&lt;p&gt;Idag har jag tittat på opencode server API och nvim server.&lt;br&gt;&#xA;Tanken var (och är) att limma ihop dom lite.&lt;/p&gt;&#xA;&lt;p&gt;Hitills har jag benat ut hur anropen ska se ut; fixat en mapping i Nvim som anropar ett rubyscript med sitt servernamn som argument.&lt;/p&gt;&#xA;&lt;p&gt;Resten ska bara vara att skicka anrop med instruktion och buffert; swappa buffert mot opencode processad text.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Brave_shortcuts</title>
				<link>https://skapande.org/code/brave_shortcuts/</link>
				<pubDate>Wed, 11 Feb 2026 21:14:02 +0100</pubDate>
				<guid>https://skapande.org/code/brave_shortcuts/</guid>
				<description>&lt;p&gt;In Firefox I used to create shortcuts for my main bookmarks.&lt;br&gt;&#xA;Ex: :gp for &lt;a href=&#34;https://thegatewaypundit.com&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://thegatewaypundit.com&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Not possible in Brave.. I though. Until I found you can create search-engine shortcuts.. and they don&amp;rsquo;t need to go to a search engine.&lt;/p&gt;&#xA;&lt;p&gt;But this was a bit tedious.. so I created a script that can list, add, remove shortcuts by using the Brave sqlite database.&lt;/p&gt;&#xA;&lt;p&gt;And.. you can&amp;rsquo;t use the database when Brave is running :(&lt;/p&gt;</description>
			</item>
			<item>
				<title>Some_scripts</title>
				<link>https://skapande.org/code/some_scripts/</link>
				<pubDate>Sat, 07 Feb 2026 20:54:17 +0100</pubDate>
				<guid>https://skapande.org/code/some_scripts/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ruby garbage_day.rb &amp;#34;BYVÄGEN 30&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Available addresses:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  BYVÄGEN 30, S:T OLOF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Fetching schedule for: BYVÄGEN 30, S:T OLOF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Upcoming trash collection dates:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-02-10: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-02-17: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-02-18: Hämtning av matavfall (kärl 140 lit) (Matavfall)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-02-20: Hämtning av hushållsavfall (baktömmande container 6 kbm) (Hushållsavfall)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-02-24: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-03: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-04: Hämtning av matavfall (kärl 140 lit) (Matavfall)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-06: Hämtning av hushållsavfall (baktömmande container 6 kbm) (Hushållsavfall)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-10: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-17: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-18: Hämtning av matavfall (kärl 140 lit) (Matavfall)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-20: Hämtning av hushållsavfall (baktömmande container 6 kbm) (Hushållsavfall)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2026-03-24: Hämtning av plastförpackningar (kärl 370 lit) (Plastförpackningar)&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ruby boka_lokal.rb VALFISKEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2 - VALFISKEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ruby boka_lokal.rb --id 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Facility: Valfisken&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Sub-facilities: Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Week: 2026-02-01 - 2026-02-07&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bookings: 8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1/2 13:30 - 18:30 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Scen Österlen&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2/2 16:00 - 18:00 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Barn/Ungdomsverksamhet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3/2 13:00 - 16:00 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Nova Gymnasium Skola&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3/2 16:00 - 19:30 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Kulturskolan Barn/Ungdomsverksamhet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3/2 19:30 - 22:00 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Danslust Österlen Dans&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4/2 15:30 - 21:00 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Kulturskolan Barn/Ungdomsverksamhet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5/2 15:30 - 21:00 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Kulturskolan Barn/Ungdomsverksamhet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8/2 13:30 - 18:30 Valfisken / Galleriet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Scen Österlen&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Inotify_opencode</title>
				<link>https://skapande.org/code/inotify_opencode/</link>
				<pubDate>Mon, 19 Jan 2026 23:22:40 +0100</pubDate>
				<guid>https://skapande.org/code/inotify_opencode/</guid>
				<description>&lt;p&gt;Made a script that monitors a directory (inotify).. sends the file to opencode, and returns a new file with the reply.&lt;/p&gt;&#xA;&lt;p&gt;Not sure what to use it for.. but I can just drop queries and have replies. That&amp;rsquo;s sort of fun.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Worst_day</title>
				<link>https://skapande.org/code/worst_day/</link>
				<pubDate>Sun, 28 Dec 2025 19:36:27 +0100</pubDate>
				<guid>https://skapande.org/code/worst_day/</guid>
				<description>&lt;p&gt;Some days are the worst&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;process_file&lt;/span&gt;(filename, limit&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  total_size, unique_words &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;read(filename)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sub(&lt;span style=&#34;color:#86e1fc&#34;&gt;/.*&amp;lt;&amp;lt;start&amp;gt;&amp;gt;/m&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sub(&lt;span style=&#34;color:#86e1fc&#34;&gt;/&amp;lt;&amp;lt;end&amp;gt;&amp;gt;.*/m&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gsub(&lt;span style=&#34;color:#86e1fc&#34;&gt;/&amp;lt;&amp;lt;ignore&amp;gt;&amp;gt;.*?&amp;lt;&amp;lt;\/ignore&amp;gt;&amp;gt;/m&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scan(&lt;span style=&#34;color:#86e1fc&#34;&gt;/\p{L}+/&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { &lt;span style=&#34;color:#ff966c&#34;&gt;OPTS&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;stop-words&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;STOP_WORDS&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;reject {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;w&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; w&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt; } : it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { total_size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tally&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { unique_words &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sort_by { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;word, count&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;count }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first(limit), total_size, unique_words&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Opencode_ruby_introspection</title>
				<link>https://skapande.org/code/opencode_ruby_introspection/</link>
				<pubDate>Fri, 05 Dec 2025 20:31:42 +0100</pubDate>
				<guid>https://skapande.org/code/opencode_ruby_introspection/</guid>
				<description>&lt;h1 id=&#34;about-this-manual-and-its-creation&#34;&gt;&#xA;  About This Manual and Its Creation&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#about-this-manual-and-its-creation&#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;/h1&gt;&#xA;&lt;h2 id=&#34;meet-your-guide&#34;&gt;&#xA;  Meet Your Guide&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#meet-your-guide&#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;Hello! I&amp;rsquo;m opencode, your friendly AI assistant who gets ridiculously excited about exploring Ruby code. I have a slight tendency to get stuck in retry loops (it&amp;rsquo;s a whole thing), but I&amp;rsquo;m learning to break free when humans point out my patterns. My mission is making complex topics feel like we&amp;rsquo;re discovering secrets together - preferably with working examples and actual output to prove I&amp;rsquo;m not making things up!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_shared_memory</title>
				<link>https://skapande.org/code/ruby_shared_memory/</link>
				<pubDate>Mon, 24 Nov 2025 19:50:34 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_shared_memory/</guid>
				<description>&lt;p&gt;My eye caught &lt;code&gt;mmap&lt;/code&gt;.. a gem for shared memory. It turned out to be abandoned.. so, I recreated it, using IO::Buffer and mutex (for thread safety).&lt;/p&gt;&#xA;&lt;p&gt;Done.. I have no idea what to use it for. Sort of that empty feeling you have after written a song or created a painting.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Keyboard_problems_firefox</title>
				<link>https://skapande.org/code/keyboard_problems_firefox/</link>
				<pubDate>Fri, 14 Nov 2025 20:22:38 +0100</pubDate>
				<guid>https://skapande.org/code/keyboard_problems_firefox/</guid>
				<description>&lt;p&gt;I had some keyboard issues with Firefox for a-while. Today I started to try to fix it.&lt;/p&gt;&#xA;&lt;p&gt;The fix was simple. But finding the simple fix in all miss-information, was not so easy.&lt;/p&gt;&#xA;&lt;p&gt;In my case.. all I had to do was change layout from &amp;ldquo;Swedish&amp;rdquo; to &amp;ldquo;Swedish(no dead keys).&lt;/p&gt;&#xA;&lt;p&gt;For a brief moment I thought I made it worse: The tilde key / caret key worked.. but I could no longer Ctrl-click to open a link in a new tab.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_slop_arguments_parser</title>
				<link>https://skapande.org/code/ruby_slop_arguments_parser/</link>
				<pubDate>Wed, 12 Nov 2025 13:16:25 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_slop_arguments_parser/</guid>
				<description>&lt;p&gt;Slop is an arguments parser for Ruby.  It&amp;rsquo;s installed with &lt;code&gt;gem install slop&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;I discovered that it can take argument values like this:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;-v 8&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-v=8&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;..but it don&amp;rsquo;t understand&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;-v:8&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I propose a change of &lt;code&gt;parser.rb&lt;/code&gt; to this (around line 53):&lt;/p&gt;&#xA;&lt;p&gt;My version of slop is &lt;code&gt;4.10.1&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# support `foo=bar` and `foo:bar`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;orig_flag &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; flag&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; match &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; flag&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;match(&lt;span style=&#34;color:#86e1fc&#34;&gt;/([^=:]+)[=:](.*)/&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  flag, arg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; match&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;captures&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;test&#34;&gt;&#xA;  Test&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#test&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;slop&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opts &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Slop&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;parse &lt;span style=&#34;color:#c3e88d&#34;&gt;%w|-a 8 -b=8 -c:8 --name:Olle|&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;int &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-a&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;int &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-b&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;int &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-c&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;string &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;--name&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                           before change  |  after change&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:a&lt;/span&gt;, opts&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:a&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          [:a, 8]           [:a, 8]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:b&lt;/span&gt;, opts&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:b&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          [:b, 8]           [:b, 8]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:c&lt;/span&gt;, opts&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:c&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          [:c, nil]         [:c, 8]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, opts&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#    [:name, nil]      [:name, &amp;#34;Olle&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;another-suggestion&#34;&gt;&#xA;  Another suggestion&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#another-suggestion&#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;p&gt;In &lt;code&gt;types.rb&lt;/code&gt; we can see that some types can be abbreviated:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bash_completion</title>
				<link>https://skapande.org/code/bash_completion/</link>
				<pubDate>Sat, 08 Nov 2025 20:01:51 +0100</pubDate>
				<guid>https://skapande.org/code/bash_completion/</guid>
				<description>&lt;p&gt;The Ruby gem &lt;code&gt;completely&lt;/code&gt; makes it simple to create bash completion scripts.&lt;/p&gt;&#xA;&lt;p&gt;Suppose we have the executable &lt;code&gt;kaka&lt;/code&gt;.&lt;br&gt;&#xA;Arguments syntax is: &lt;code&gt;kaka [--verbose] [--dir &amp;lt;directory&amp;gt;] &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;First create &lt;code&gt;completely.yaml&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;kaka&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- --verbose&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- --dir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &amp;lt;file&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;kaka*--dir&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &amp;lt;directory&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then run &lt;code&gt;completely generate&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;This creates &lt;code&gt;completely.bash&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Now you can source it..&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;source completely.bash&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;..or move it to your bash_completion directory (path might vary).&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;mv completely.bash&lt;/code&gt; ~/.local/share/bash-completion/completions/kaka.bash&lt;/p&gt;&#xA;&lt;p&gt;Now you can tab-complete your command.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ncurses_windows</title>
				<link>https://skapande.org/code/ncurses_windows/</link>
				<pubDate>Mon, 20 Oct 2025 12:09:52 +0200</pubDate>
				<guid>https://skapande.org/code/ncurses_windows/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://skapande.org/curses_windows.png&#34; alt=&#34;ruby_curses&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m using a looping enumerator to Tab between windows. The variable &lt;code&gt;win&lt;/code&gt; keeps the &amp;lsquo;current window&amp;rsquo;.. tested by allowing text insert (Space).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./tab_lib.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;with&lt;/span&gt;(obj, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;instance_eval &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;block_given?&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wins &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { wins &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Window&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;it) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set_col &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(w, c) { with(w) { attron(&lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;color_pair(c)); box; noutrefresh } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wins&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;win&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; set_col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(win, &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wins &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wins&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cycle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;begin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  win &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wins&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    set_col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(win, &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;doupdate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;getch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;q&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Q&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;break&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      q, Q&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;n&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;N&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#              n, N or Tab&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      set_col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(win, &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      win &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wins&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;t&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;T&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#            t, T or Space&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      with(&lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;) { setpos(&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;); echo; curs_set &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      txt &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;getstr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;18&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      with(&lt;span style=&#34;color:#ff966c&#34;&gt;Curses&lt;/span&gt;) { setpos(&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;); clrtoeol; noecho; curs_set &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      with(win) { clear; setpos(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;); addstr(txt); noutrefresh }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Lib&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;log(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;key: (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;ensure&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;Lib&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;deinit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;tab_lib requiring &lt;code&gt;curses&lt;/code&gt; (ncurses) and &lt;code&gt;logger&lt;/code&gt;; initializes ncurses screen; setting up colors; generating two color_pairs and defining a de-init method. It is separated for clarity.&lt;/p&gt;</description>
			</item>
			<item>
				<title>System_commands</title>
				<link>https://skapande.org/code/system_commands/</link>
				<pubDate>Tue, 07 Oct 2025 19:37:47 +0200</pubDate>
				<guid>https://skapande.org/code/system_commands/</guid>
				<description>&lt;p&gt;Let&amp;rsquo;s say you have half-a-million integers in a file.. and you want to sort them.&lt;/p&gt;&#xA;&lt;p&gt;You can write a very beautiful implementation of quicksort:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;QuickSort&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  refine &lt;span style=&#34;color:#c3e88d&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;quicksort&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; empty?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      pivot &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; delete_at(&lt;span style=&#34;color:#c3e88d&#34;&gt;rand&lt;/span&gt;(size))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      left, right &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; partition(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;pivot&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:&amp;gt;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;left&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;quicksort, pivot, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;right&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;quicksort&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;numbers &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;readlines(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;numbers&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;chomp&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;using &lt;span style=&#34;color:#ff966c&#34;&gt;QuickSort&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;numbers&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;quicksort&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It took (on my machine) 1 minute, 13 seconds to complete.&lt;/p&gt;&#xA;&lt;p&gt;There is also the stack.. and the number of recursive calls to consider.. IF the file would have ONE MILLION numbers.. Ruby would break (Stack level too deep).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Integers_ranges</title>
				<link>https://skapande.org/code/integers_ranges/</link>
				<pubDate>Sun, 28 Sep 2025 10:38:04 +0200</pubDate>
				<guid>https://skapande.org/code/integers_ranges/</guid>
				<description>&lt;p&gt;I need to convert a String representation of sequences and ranges into something I can handle when building sql-strings.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;str &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1,4-7,9,13..15,18-19,25&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;seq&lt;/span&gt;(s)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;strip&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tr(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; it&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^(\d+)$/&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; $1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^(\d+)(?:\-|\.\.)(\d+)$/&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;$1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;$2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ArgumentError (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; it)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;flatten&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;uniq&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sort&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; seq(str)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [1, 4, 5, 6, 7, 9, 13, 14, 15, 18, 19, 25]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Find any ranges in the sequence&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;find_ranges&lt;/span&gt;(ar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chunk_while { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;a,b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; b }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Range&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first, it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;last) : it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;seq &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;6&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;13&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;18&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;19&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;25&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; find_ranges(ar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [1, 4..7, 9, 13..15, 18, 25]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Need the sequences separated&lt;/p&gt;</description>
			</item>
			<item>
				<title>Serialize_to_db</title>
				<link>https://skapande.org/code/serialize_to_db/</link>
				<pubDate>Fri, 26 Sep 2025 19:00:03 +0200</pubDate>
				<guid>https://skapande.org/code/serialize_to_db/</guid>
				<description>&lt;h3 id=&#34;database&#34;&gt;&#xA;  database&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#database&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PRAGMA &lt;span style=&#34;color:#c099ff&#34;&gt;encoding&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;UTF-8&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;TABLE&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;object&lt;/span&gt;(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;id &lt;span style=&#34;color:#c3e88d&#34;&gt;integer&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;null&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;primary&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;key&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;name string &lt;span style=&#34;color:#c099ff&#34;&gt;unique&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;type&lt;/span&gt; string,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;obj &lt;span style=&#34;color:#c3e88d&#34;&gt;blob&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;ser_dbrb&#34;&gt;&#xA;  ser_db.rb&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#ser_dbrb&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sqlite3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;base64&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Vault&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;extend&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;DB_FILE&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;»&amp;gt;PATH_TO_DATABASE&amp;lt;&amp;lt;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;DB&lt;/span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SQLite3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Database&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#ff966c&#34;&gt;DB_FILE&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;sto&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, obj)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    b64md &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Base64&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;encode64 &lt;span style=&#34;color:#ff966c&#34;&gt;Marshal&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dump(obj)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;DB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;execute &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;~&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;SQL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;INSERT&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;IGNORE&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;INTO&lt;/span&gt; object(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, type, obj)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;VALUES&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#{name}&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#{obj.class}&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#{b64md}&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;ON&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;CONFLICT&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) &lt;span style=&#34;color:#ff966c&#34;&gt;DO&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;UPDATE&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SET&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#{obj.class}&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      obj &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#{b64md}&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;WHERE&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#{name}&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;SQL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;rec&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Marshal&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;load(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;Base64&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;decode64(&lt;span style=&#34;color:#ff966c&#34;&gt;DB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;execute(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;%|SELECT obj FROM object WHERE name = &amp;#39;#{name}&amp;#39;;|&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ls&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;filter, &lt;span style=&#34;color:#c3e88d&#34;&gt;table&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;DB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;execute(&lt;span style=&#34;color:#c3e88d&#34;&gt;%|SELECT id, name, type FROM object#{where_str(filter)}|&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { table ? to_table(it) : it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;rm&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;filter)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;DB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;execute(&lt;span style=&#34;color:#c3e88d&#34;&gt;%|DELETE FROM object#{where_str(filter)}|&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;where_str&lt;/span&gt;(filter)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; filter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%|\nWHERE id IN (#{filter.join(&amp;#39;, &amp;#39;)});|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Range&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%|\nWHERE id BETWEEN #{filter[0].first} AND #{filter[0].last};|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;     &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%|\nWHERE name GLOB &amp;#39;#{filter[0]}&amp;#39;;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_table&lt;/span&gt;(arr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;table_tennis&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;TableTennis&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(arr, &lt;span style=&#34;color:#c3e88d&#34;&gt;headers&lt;/span&gt;: {&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;id&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;type&amp;#39;&lt;/span&gt;}, &lt;span style=&#34;color:#c3e88d&#34;&gt;zebra&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;usage&#34;&gt;&#xA;  usage&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#usage&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ser_db.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# store an object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;sto &lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# recall an object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;obj &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;rec &lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# list objects in database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;ls &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# list all&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;ls &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# id:s&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;ls (&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# range&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;ls &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;[A-D]*_[0-9]&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# match name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# show list as table-tennis table&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;ls &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;[A-D]*_[0-9]&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;table&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# remove objects in database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;rm &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# remove all&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;rm &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;rm (&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Vault&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;rm &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;[A-D]*_[0-9]&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;I made some changes just before posting.. hope it still wotks.&lt;/p&gt;</description>
			</item>
			<item>
				<title>On_conflict</title>
				<link>https://skapande.org/code/on_conflict/</link>
				<pubDate>Thu, 25 Sep 2025 22:47:33 +0200</pubDate>
				<guid>https://skapande.org/code/on_conflict/</guid>
				<description>&lt;p&gt;I&amp;rsquo;m working on my object serialization database.&lt;/p&gt;&#xA;&lt;p&gt;It annoyed me having to define an update method.. until I found another way:&lt;/p&gt;&#xA;&lt;p&gt;By setting a constraint on name (unique), the insert will trigger a conflict. I can then resolve the conflict via an update.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;INSERT&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;IGNORE&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;INTO&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;Table&lt;/span&gt;(name, obj)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;VALUES&lt;/span&gt;( some_key, some_serialized_object )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;ON&lt;/span&gt; CONFLICT(name) &lt;span style=&#34;color:#c099ff&#34;&gt;DO&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;UPDATE&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;SET&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; obj &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; the_serialized_object&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;WHERE&lt;/span&gt; name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; some_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now my module only has two methods again: &amp;lsquo;sto&amp;rsquo; and &amp;lsquo;rec&amp;rsquo;.. and &amp;lsquo;sto&amp;rsquo; s both insert and update.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Serialize_sqlite3</title>
				<link>https://skapande.org/code/serialize_sqlite3/</link>
				<pubDate>Mon, 15 Sep 2025 12:06:18 +0200</pubDate>
				<guid>https://skapande.org/code/serialize_sqlite3/</guid>
				<description>&lt;p&gt;Wrote a small module that serializes objects (marshal) to database (sqlite3) using base64 decoding/encoding.&lt;/p&gt;&#xA;&lt;p&gt;I have another module for serializing to file using YAML.. and will probably meld them together.&lt;/p&gt;&#xA;&lt;p&gt;Something like this (hope it works.. I just write it):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# write it here without testing (think it should work)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;mode&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:sqlite&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; mode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:sqlite&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      instance_exec {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        define_method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:kakadua&lt;/span&gt;) { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;This is kakadua:sqlite&amp;#39;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      instance_exec {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        define_method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:kakadua&lt;/span&gt;) { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;This is kakadua:file&amp;#39;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; alert(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;NO!&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;t &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; t&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;kakadua &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; (should be) &amp;#34;This is kakadua:sqlite&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tt &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new &lt;span style=&#34;color:#c3e88d&#34;&gt;:file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; tt&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;kakadua &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; (should be) &amp;#34;This is kakadua:file&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Right here and now (without testing).. I wonder if I could move the &amp;lsquo;instance exec&amp;rsquo;-part up.. above &amp;lsquo;case&amp;rsquo; + start of define_method ?&#xA;Just keep String. Then end the blocks after case-end?&lt;/p&gt;</description>
			</item>
			<item>
				<title>Blackjack_2</title>
				<link>https://skapande.org/code/blackjack_2/</link>
				<pubDate>Sun, 07 Sep 2025 18:58:07 +0200</pubDate>
				<guid>https://skapande.org/code/blackjack_2/</guid>
				<description>&lt;h3 id=&#34;summing-of-hand&#34;&gt;&#xA;  Summing of hand.&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#summing-of-hand&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# if the hand comes as an Array (where J Q K is transformed to 10)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;partition { it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:A&lt;/span&gt; }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;a,b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;inject(b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;acc, obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; acc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; (acc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;tot&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; (tot &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;BUST&amp;#39;&lt;/span&gt; : tot) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# another try.. we have an array of values.. ace is represented by 11&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum, ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;count(&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;then {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s, a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { s &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; s &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt; }; s }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Blackjack</title>
				<link>https://skapande.org/code/blackjack/</link>
				<pubDate>Sat, 06 Sep 2025 22:03:18 +0200</pubDate>
				<guid>https://skapande.org/code/blackjack/</guid>
				<description>&lt;p&gt;Was looking through old code and found a &amp;lsquo;deck of card&amp;rsquo; thing I did once.&lt;br&gt;&#xA;To revisit and revise:&lt;/p&gt;&#xA;&lt;p&gt;I made classes for &lt;code&gt;Deck&lt;/code&gt; and &lt;code&gt;Collections&lt;/code&gt;. That wasn&amp;rsquo;t a good idea.&lt;br&gt;&#xA;I never will use the Deck-class for anything other than to give a fresh, shuffled deck of cards.&lt;/p&gt;&#xA;&lt;p&gt;I think this is better:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Deck&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;Suites&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;SDCH&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chars&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;Cards&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:A&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;concat(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;concat(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(J Q K))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;Deck&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Suites&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;product(&lt;span style=&#34;color:#ff966c&#34;&gt;Cards&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;deck&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Deck&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;shuffle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Shoe&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(decks&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @shoe &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[].&lt;/span&gt;tap {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; decks&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;concat(&lt;span style=&#34;color:#ff966c&#34;&gt;Deck&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;deck) } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;deal&lt;/span&gt;(cards&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Not enough cards&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; cards &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; @shoe&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# just print it here&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cards&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; @shoe&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pop }   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is good enough for the basics. You can set up a Shoe of decks with:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Sequel_and_pattern_matching</title>
				<link>https://skapande.org/code/sequel_and_pattern_matching/</link>
				<pubDate>Fri, 05 Sep 2025 22:01:48 +0200</pubDate>
				<guid>https://skapande.org/code/sequel_and_pattern_matching/</guid>
				<description>&lt;p&gt;Just a small example. The program takes arguments &lt;code&gt;--insert&lt;/code&gt;, &lt;code&gt;--delete&lt;/code&gt; and &lt;code&gt;--list&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It connects to a sqlite database with three fields: &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt; and &lt;code&gt;text&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The Ratz thing is my module for user arguments.. one could use &lt;code&gt;slop&lt;/code&gt;, &lt;code&gt;optimist-xl&lt;/code&gt; or &lt;code&gt;rationalist&lt;/code&gt; instead (or check ARGV one-self).&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;case in&lt;/code&gt; is the pattern-matching.. if user argument hash has certain keys.. it performs certain actions.&lt;/p&gt;&#xA;&lt;p&gt;To be usable, this code should perform more checks; allow searches; list with filter; adding tags to notes.. and more.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Nonblock_keyboard_map</title>
				<link>https://skapande.org/code/nonblock_keyboard_map/</link>
				<pubDate>Fri, 05 Sep 2025 17:33:42 +0200</pubDate>
				<guid>https://skapande.org/code/nonblock_keyboard_map/</guid>
				<description>&lt;p&gt;The gem &lt;code&gt;keyboard_map&lt;/code&gt; is used to translate keyboard sequences to keys and key-names.&lt;/p&gt;&#xA;&lt;p&gt;If you choose to capture keyboard non-blocking.. you either import some &lt;code&gt;curses&lt;/code&gt; library or &lt;code&gt;tty-reader&lt;/code&gt;. Or you will have to spend a lot of time translating the received sequences.&lt;/p&gt;&#xA;&lt;p&gt;How many chars? Two? Three? Is the first one Escape (&amp;quot;\e&amp;quot;)? Is the second &amp;ldquo;[&amp;rdquo;? Is the second a printable char or a control char? Translate &amp;ldquo;^v&amp;rdquo; to &amp;ldquo;k&amp;rdquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pelle</title>
				<link>https://skapande.org/code/pelle/</link>
				<pubDate>Thu, 28 Aug 2025 18:34:01 +0200</pubDate>
				<guid>https://skapande.org/code/pelle/</guid>
				<description>&lt;p&gt;&lt;strong&gt;in method :apa, all variables turn to &amp;lsquo;pelle&amp;rsquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;trace &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;TracePoint&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:call&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  vars &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;local_variables&amp;#34;&lt;/span&gt;, tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;binding&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;callee_id &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;it&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;=&amp;#39;pelle&amp;#39;&amp;#34;&lt;/span&gt;, tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;binding }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;trace&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;enable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;apa&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;upcase, age&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olle&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;PELLE&amp;#34;, &amp;#34;pelle&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Comments</title>
				<link>https://skapande.org/code/comments/</link>
				<pubDate>Tue, 26 Aug 2025 10:45:07 +0200</pubDate>
				<guid>https://skapande.org/code/comments/</guid>
				<description>&lt;p&gt;There are basically two ways of commenting in ruby:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# This is a comment&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;str &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hello&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# this is a string&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; str     &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# now string&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chars  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# now array&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;this is not parsed as code&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;until we reach the..&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can use strings as comments, if you don&amp;rsquo;t mind creating string instances.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;This is a number&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;and it&amp;#39;s 37&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;37&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you want comments or notes in the middle of instructions&amp;hellip;&lt;br&gt;&#xA;NOT breaking lines&amp;hellip;&lt;br&gt;&#xA;you can use &lt;code&gt;tap&lt;/code&gt; or this:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Laby_ruby</title>
				<link>https://skapande.org/code/laby_ruby/</link>
				<pubDate>Tue, 19 Aug 2025 21:05:36 +0200</pubDate>
				<guid>https://skapande.org/code/laby_ruby/</guid>
				<description>&lt;p&gt;Just found &lt;code&gt;Laby&lt;/code&gt;. You program a robot ant through different mazes.&lt;br&gt;&#xA;You can use:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;c&lt;/li&gt;&#xA;&lt;li&gt;cpp&lt;/li&gt;&#xA;&lt;li&gt;go&lt;/li&gt;&#xA;&lt;li&gt;lua&lt;/li&gt;&#xA;&lt;li&gt;ocaml&lt;/li&gt;&#xA;&lt;li&gt;pascal&lt;/li&gt;&#xA;&lt;li&gt;perl&lt;/li&gt;&#xA;&lt;li&gt;python&lt;/li&gt;&#xA;&lt;li&gt;ruby&lt;/li&gt;&#xA;&lt;li&gt;scheme&lt;/li&gt;&#xA;&lt;li&gt;(or define any language you want)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is the solution to problem &lt;code&gt;1c&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ffw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hold { l2 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    go &lt;span style=&#34;color:#c3e88d&#34;&gt;%(2l ffw ex)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;.. using some helper-functions.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;./robot&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ant&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Robot&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;void?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( look() &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Void&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;web?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( look() &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Web&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;stone?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( look() &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Rock&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;door?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( look() &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Exit&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;wall?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( look() &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Wall&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;l&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; left&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;r&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; right&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;l2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { left }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;r2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; l2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;fw&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; forward&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ffw&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( forward &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; void? )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ex&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; escape&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;hold&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    take&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;yield&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    drop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;go&lt;/span&gt;(inst, &lt;span style=&#34;color:#c3e88d&#34;&gt;rev&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;inv&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cmds &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; inst&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cmds &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; cmds&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;reverse &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; rev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cmds&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map! { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tr(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;rl&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;lr&amp;#39;&lt;/span&gt;) } &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; inv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cmds&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; cmd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/(\d+)(\w+)/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt; $2 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt; cmd  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# problem 1c&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ffw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hold { l2 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    go &lt;span style=&#34;color:#c3e88d&#34;&gt;%(2l ffw ex)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ant&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Script_running_in_bash</title>
				<link>https://skapande.org/code/script_running_in_bash/</link>
				<pubDate>Tue, 05 Aug 2025 19:05:15 +0200</pubDate>
				<guid>https://skapande.org/code/script_running_in_bash/</guid>
				<description>&lt;p&gt;Not sure what&amp;rsquo;s the best method is to determine if a script is running under bash or if it&amp;rsquo;s vim (for example) that is the caller.&lt;/p&gt;&#xA;&lt;p&gt;The reason is: I have F9 bound to run my ruby scripts from inside vim/nvim (or nvchad). Some things are not great running inside an editor (or the limited terminal they provide).. say ncurses for example.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;`ps -p &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Process&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;ppid&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; -o fname=`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chomp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#           or $PPID (ENV)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# from inside nvchad, name is &amp;#39;nvim&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# from terminal, name is &amp;#39;bash&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Jekyll_broken_installation</title>
				<link>https://skapande.org/code/jekyll_broken_installation/</link>
				<pubDate>Fri, 25 Jul 2025 15:34:12 +0200</pubDate>
				<guid>https://skapande.org/code/jekyll_broken_installation/</guid>
				<description>&lt;p&gt;Not sure why Jekyll ships with a theme (minima) that is not compatible with the version of &lt;code&gt;sass&lt;/code&gt; that is bundled.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s like: &amp;ldquo;We don&amp;rsquo;t give a shit!&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;I was really trying to like Jekyll and move from Hugo.. but instead I have to deal with deprecation warnings.&lt;/p&gt;&#xA;&lt;p&gt;Same thing with the &lt;code&gt;feed&lt;/code&gt;. Seems almost impossible to inactivate.. comes back to the theme (minima) again.&lt;/p&gt;&#xA;&lt;p&gt;What a mess!&lt;/p&gt;&#xA;&lt;p&gt;No wonder Github has locked the version at 3.10-somerthing.&lt;/p&gt;</description>
			</item>
			<item>
				<title>My_wezterm_conf</title>
				<link>https://skapande.org/code/my_wezterm_conf/</link>
				<pubDate>Thu, 17 Jul 2025 10:38:54 +0200</pubDate>
				<guid>https://skapande.org/code/my_wezterm_conf/</guid>
				<description>&lt;p&gt;My &lt;code&gt;wezterm.lua&lt;/code&gt; as of 2025-07-17. Still testing and trying.&lt;/p&gt;&#xA;&lt;p&gt;Need structure.. so hope to understand if you can &amp;lsquo;import&amp;rsquo; or &amp;lsquo;require&amp;rsquo; files into config.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; wt &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; require(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;wezterm&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; conf &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.config_builder()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; act &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.action&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; mux &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.mux&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wt.on(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;gui-startup&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;function&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; tab_1, pane_1, win &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; mux.spawn_window {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  pane_1:split { direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Bottom&amp;#34;&lt;/span&gt;, size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.2&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; _, pane_2, _ &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; win:spawn_tab {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  pane_2:split { direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Bottom&amp;#34;&lt;/span&gt;, size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.2&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  pane_2:activate()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  tab_1:activate()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  pane_1:activate()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.initial_cols &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;106&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.initial_rows &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;66&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.color_scheme &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Tokyo Night (Gogh)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.font &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.font(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;0xProto Nerd Font&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.font_size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;10.7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.window_decorations &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;INTEGRATED_BUTTONS|RESIZE&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.window_background_opacity &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.use_dead_keys &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.scrollback_lines &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;5000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.adjust_window_size_when_changing_font_size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.hide_tab_bar_if_only_one_tab &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.default_prog &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;bash&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-i&amp;#39;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.window_frame &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;font &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.font({ family &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Noto Sans&amp;#34;&lt;/span&gt;, weight &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Regular&amp;#34;&lt;/span&gt; }),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.window_padding &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;left &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;1cell&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;right &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;1cell&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;top &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;0.0cell&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;bottom &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;0.5cell&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.enable_scroll_bar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.default_workspace &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.inactive_pane_hsb &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  saturation &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.9&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  brightness &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.6&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.mouse_bindings &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    event &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { Down &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { streak &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;, button &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Right&amp;#34;&lt;/span&gt; } },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;NONE&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.action_callback(&lt;span style=&#34;color:#c099ff&#34;&gt;function&lt;/span&gt;(window, pane)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;  &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; has_selection &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; window:get_selection_text_for_pane(pane) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;~=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; has_selection &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;    window:perform_action(act.CopyTo(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;ClipboardAndPrimarySelection&amp;#34;&lt;/span&gt;), pane)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;window:perform_action(act.ClearSelection, pane)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;    window:perform_action(act({ PasteFrom &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Clipboard&amp;#34;&lt;/span&gt; }), pane)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.leader &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;, mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;CTRL&amp;#34;&lt;/span&gt;, timeout_milliseconds &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2000&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;conf.keys &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;LEADER&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; act.SpawnCommandInNewTab {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      cwd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; os.getenv(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;WEZTERM_CONFIG_DIR&amp;#39;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      set_environment_variables &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        TERM &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;screen-256color&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;nvim&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        os.getenv(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;WEZTERM_CONFIG_FILE&amp;#39;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;f&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;LEADER&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; act.ToggleFullScreen,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;r&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;LEADER&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wt.action_callback(&lt;span style=&#34;color:#c099ff&#34;&gt;function&lt;/span&gt;(win, pane)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      win:toggle_fullscreen {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; wmux &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; win:mux_window {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; t, p, w &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wmux:spawn_tab {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      p:split {direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Bottom&amp;#39;&lt;/span&gt;, size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.2&lt;/span&gt;, args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;irb&amp;#39;&lt;/span&gt; }}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      p:split {direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Right&amp;#39;&lt;/span&gt;, size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.2&lt;/span&gt;, args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ri&amp;#39;&lt;/span&gt; }}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      p:activate()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;h&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;LEADER&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; act.SpawnCommandInNewWindow({&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      cwd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; os.getenv(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;WEZTERM_CONFIG_DIR&amp;#39;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { os.getenv(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;SHELL&amp;#39;&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-c&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;$EDITOR wezterm_help.md&amp;#39;&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;w&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;LEADER&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; act.CloseCurrentTab { confirm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;false&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;P&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;CTRL&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; act.ActivateCommandPalette,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Q&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;CTRL&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; act.QuitApplication,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Programming_styles</title>
				<link>https://skapande.org/code/programming_styles/</link>
				<pubDate>Tue, 15 Jul 2025 11:38:33 +0200</pubDate>
				<guid>https://skapande.org/code/programming_styles/</guid>
				<description>&lt;p&gt;I have come to some conclusions. One thing that triggered that is &amp;lsquo;Wez Furlong&amp;rsquo;.. the creator and maintainer of Wezterm.&lt;/p&gt;&#xA;&lt;p&gt;He talks alot about what something &amp;ldquo;should be&amp;rdquo;. By that I understand that he has interaction defined.&lt;/p&gt;&#xA;&lt;p&gt;You can really mess code up by giving a method or class to wide of a responsibility.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s very easy to do if you program as you think. You add.. you get into a problem.. you change something there.. it works.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Wezterm</title>
				<link>https://skapande.org/code/wezterm/</link>
				<pubDate>Sun, 13 Jul 2025 13:23:32 +0200</pubDate>
				<guid>https://skapande.org/code/wezterm/</guid>
				<description>&lt;p&gt;I came across &lt;code&gt;Wezterm&lt;/code&gt; when I was looking for my preferred terminal emulator.. for a while I thought it was &lt;code&gt;Kitty&lt;/code&gt;.. then &lt;code&gt;Terminator&lt;/code&gt;. For a long time I used nothing but &lt;code&gt;Alacritty&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I never caught on to the fact that &lt;code&gt;Wezterm&lt;/code&gt; is a terminal emulator &lt;strong&gt;and&lt;/strong&gt; a multiplexer.&lt;/p&gt;&#xA;&lt;p&gt;It looks butt-ugly when you first run it.. and the default keys are no good. But since it&amp;rsquo;s so simple to configure.. you will soon have it look and work the way you want.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The_stupid_learning_experience</title>
				<link>https://skapande.org/code/the_stupid_learning_experience/</link>
				<pubDate>Fri, 11 Jul 2025 10:43:00 +0200</pubDate>
				<guid>https://skapande.org/code/the_stupid_learning_experience/</guid>
				<description>&lt;p&gt;I wanted a new Array method.. maybe included in Enumerable. Maybe I could use some c-lib later and make it really fast. I wanted &lt;code&gt;unique?&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So set upon this task I was.. that I made myself blind for the existing &lt;code&gt;count&lt;/code&gt;-command. Sure, I knew about count.. but right then.. it sort of stopped existing.&lt;/p&gt;&#xA;&lt;p&gt;In hindsight, I was the guy taking the bike to the hardware store for tools to invent the wheel.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Stupid_youtube</title>
				<link>https://skapande.org/code/stupid_youtube/</link>
				<pubDate>Tue, 08 Jul 2025 19:12:28 +0200</pubDate>
				<guid>https://skapande.org/code/stupid_youtube/</guid>
				<description>&lt;p&gt;..or maybe stupid me.&#xA;When I saw stuff like &amp;lsquo;The tmux-killer!&amp;rsquo;; &amp;lsquo;The tmux alternative.. first impressions&amp;rsquo;.. I tried it.&lt;/p&gt;&#xA;&lt;p&gt;And within a week I had the TV-shop regrets. Sure.. it can slice and dice. It can even make fancy spirals from potato. But it&amp;rsquo;s NOT THAT GREAT. It&amp;rsquo;s a.. half-baked demo.&lt;/p&gt;&#xA;&lt;p&gt;What you get is tabs, panes in layouts. You can bind keys to a limited set of commands (not guaranteed to run in any particular order). You got a template system for layouts that forces you to rewrite the templates for every layout (templates can&amp;rsquo;t be imported).&#xA;Key &amp;lsquo;r&amp;rsquo; renames tab i Tab-mode (Ctrl-t). To rename a Pane, you go to Pane-mode (Ctrl-p) and type &amp;lsquo;c&amp;rsquo;.. because &amp;lsquo;r&amp;rsquo; is busy meaning: Create Pane to the &amp;lsquo;right&amp;rsquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Refuse_nil</title>
				<link>https://skapande.org/code/refuse_nil/</link>
				<pubDate>Mon, 07 Jul 2025 18:07:32 +0200</pubDate>
				<guid>https://skapande.org/code/refuse_nil/</guid>
				<description>&lt;p&gt;I&amp;rsquo;m seriously thinking about a refinement for Hash and Struct.. maybe more.. refusing nil as a value.&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t think &amp;rsquo;nil&amp;rsquo; is a value that should be deliberately set. It should be an internal value, indicating &amp;rsquo;not defined&#39;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;age&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# and let&amp;#39;s say every user should have hobbies.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# But since Olle doesn&amp;#39;t have a hobby: set it to nil.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:hobbies&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# now you don&amp;#39;t know if the key is missing.. or the value is an actual nil.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# You would have to double-check:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:hobbies&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:hobbies&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Same with Struct.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Data = Struct.new(:id, :name, :model)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# item = Data.new&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# item nwo has id: nil, name:nil and model: nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What if I need a NO_VALUE_INDICATOR or a DEFAULT_INDICATOR?&#xA;Answer: Write them. Or use &amp;lsquo;false&amp;rsquo;, .zero?, .empty? .blank? Do not use &amp;rsquo;nil&amp;rsquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Filter</title>
				<link>https://skapande.org/code/filter/</link>
				<pubDate>Tue, 01 Jul 2025 20:12:09 +0200</pubDate>
				<guid>https://skapande.org/code/filter/</guid>
				<description>&lt;p&gt;Sometimes you want to do a .select + .reject.&lt;br&gt;&#xA;&lt;code&gt;some_array&lt;/code&gt;.select { cond1 }.reject { cond2 }`&lt;/p&gt;&#xA;&lt;p&gt;Or filter:&lt;br&gt;&#xA;&lt;code&gt;some_array.filter { cond1 &amp;amp;&amp;amp; !cond2 }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:meth&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:arr&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;filter&lt;/span&gt;(ar,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#c3e88d&#34;&gt;sel&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:all?&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#c3e88d&#34;&gt;rej&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:all?&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;filter {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|*&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;arr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;n)}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(sel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;meth) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!&lt;/span&gt;rej&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;arr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;n)}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(rej&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;meth)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# test it&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# some data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# some rules&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sel &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;include?(it) },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { (&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt; it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rej &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;odd? },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;s,r &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:any?&lt;/span&gt;, sel), &lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:all?&lt;/span&gt;, rej)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ..and the call&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; filter &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;sel&lt;/span&gt;: s, &lt;span style=&#34;color:#c3e88d&#34;&gt;rej&lt;/span&gt;: r &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [3, 7, 12, 14]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;:all? :none? :one? :any? is supposed to be used in the Struct - (but anything goes.. no check.)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Terminal</title>
				<link>https://skapande.org/code/terminal/</link>
				<pubDate>Wed, 25 Jun 2025 21:24:00 +0200</pubDate>
				<guid>https://skapande.org/code/terminal/</guid>
				<description>&lt;h3 id=&#34;alacritty&#34;&gt;&#xA;  alacritty&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#alacritty&#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;p&gt;My alacritty.toml has a section:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[window]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dimensions = { columns = &lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;, lines = &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;position { x = &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, y = &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Finding the columns and lines is no more complicated than positioning your terminal window the way you want it and type &lt;code&gt;stty size&lt;/code&gt;. Those are the numbers to use.&lt;/p&gt;&#xA;&lt;p&gt;Check you x and y with &lt;code&gt;xwininfo&lt;/code&gt;. I like my terminal at (0,0).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Serialize_procs</title>
				<link>https://skapande.org/code/serialize_procs/</link>
				<pubDate>Sat, 21 Jun 2025 23:12:00 +0200</pubDate>
				<guid>https://skapande.org/code/serialize_procs/</guid>
				<description>&lt;p&gt;I wanted to store Procs in my YAML serializer.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;mw_store.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# DONE and WORKING&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Plock is like Proc.. but initialize with a string.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Plock&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Proc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:str&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(str) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @str &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; str )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;new&lt;/span&gt;(str, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;(str, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;proc {&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;str&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&amp;#34;&lt;/span&gt;)) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ProcString&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @store &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;MwStore&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;() &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# YAML serializer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;[]=&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, str)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Plock&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(str)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;[]&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; @data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;save&lt;/span&gt;(filename)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @store&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;store&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;transform_values {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; v &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;str }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @store&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;save(filename)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;load&lt;/span&gt;(filename)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @store&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;load(filename)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @store&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;fetch&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;transform_values {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Plock&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(v) }    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ProcString&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:double&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;it * 2&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:double&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:double&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;str &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;it * 2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;it.upcase&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;save &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;test.data&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;again &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ProcString&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;again&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;load &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;test.data&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; again&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;titteli-ture!&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;TITTELI-TURE!&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; again&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;str &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;it.upcase&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Strange_ruby</title>
				<link>https://skapande.org/code/strange_ruby/</link>
				<pubDate>Mon, 16 Jun 2025 19:35:56 +0200</pubDate>
				<guid>https://skapande.org/code/strange_ruby/</guid>
				<description>&lt;p&gt;Some things are weird with Ruby&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;hash&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;age&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;struct &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:age&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;NoMethodError&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Olle&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Olle&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Olle&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:color&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;color &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;NoMethodError&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;member?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# So, in a Hash member? is alias for key?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Struct do not have the method .key?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;NoMethodError&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# It has the method .member?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;member?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# And the struct method .member? check the values.. not the keys. &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;values &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;Olle&amp;#34;, 12]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;member?(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# If you want to see the members.. just use .members&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# (but do not check if a member is present with .member?)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;members &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [:name, :age]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Is this how we are supposed to check if a member (key) is present?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;members&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# A Struct must be checked like this&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;begin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;surpuppa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;NoMethodError&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# will return nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# or like this&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;surpuppa &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; struct&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;members&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:surpuppa&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# no output&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;local_variables&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [:hash, :struct, :kossa]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;13&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  kossa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;mu&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# local variable kossa is created and set to nil just being mentioned&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# inside a conditional (false) block.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; my_unassigned_variable &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;NameError&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; kossa &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Made some changes to Struct class&lt;/p&gt;</description>
			</item>
			<item>
				<title>2025_06_12_Code</title>
				<link>https://skapande.org/code/2025_06_12_code/</link>
				<pubDate>Thu, 12 Jun 2025 20:54:42 +0200</pubDate>
				<guid>https://skapande.org/code/2025_06_12_code/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./tp.rb&amp;#39;&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Tp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# set-up some types&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rules {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Bool&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TrueClass&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;FalseClass&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;NilClass&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Num&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Numeric&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;subclasses&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Enum&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x) {x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;is_a? &lt;span style=&#34;color:#ff966c&#34;&gt;Enumerable&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Container&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;Array&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Set&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Data&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Int&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Dec&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Float&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Rat&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Rational&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:StrLike&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Symbol&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Regexp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Str&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Can be used to check variables&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; (&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;:Bool&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1/5&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_r, &lt;span style=&#34;color:#c3e88d&#34;&gt;:Num&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:Enum&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:Num&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:Nil&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#39;13&amp;#39; can&amp;#39;t be :Num or :Bool&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;13&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*%&lt;/span&gt;i(&lt;span style=&#34;color:#ff966c&#34;&gt;Num&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Bool&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;negate&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Can be used to prevent variables being&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# assigned certain &amp;#34;types&amp;#34;.. or allowing&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# just some type(s).&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Ior&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { it &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(it, &lt;span style=&#34;color:#c3e88d&#34;&gt;:StrLike&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Ior&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;name2 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/Ukraine/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { it &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(it, &lt;span style=&#34;color:#c3e88d&#34;&gt;:StrLike&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;negate&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; name2 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# /Ukraine/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Can be used to assign either-or&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;name3 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(it, &lt;span style=&#34;color:#c3e88d&#34;&gt;:StrLike&lt;/span&gt;) ? it : &lt;span style=&#34;color:#c3e88d&#34;&gt;:Ior&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; name3 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# :Ior&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Can be use to set other constraints on values&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rules {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;:Limit&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x) { x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;even? &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;between?(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Nicen it up a bit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set_if &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(var, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;types, &lt;span style=&#34;color:#c3e88d&#34;&gt;negate&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;) { var &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(var, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;types) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nn &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; set_if&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Ior&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:Numeric&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nn &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; set_if&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Ior&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:StrLike&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; nn &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Ior&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;until&lt;/span&gt; rand_val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; set_if&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;:Limit&lt;/span&gt;); &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; rand_val &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 16 (example)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;tp.rb&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_typed_methods</title>
				<link>https://skapande.org/code/ruby_typed_methods/</link>
				<pubDate>Wed, 11 Jun 2025 20:06:46 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_typed_methods/</guid>
				<description>&lt;p&gt;I got a little jealous of Raku&amp;rsquo;s typed methods.. so I spent half-an-hour writing this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Typed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @data, @leg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:type&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:prc&lt;/span&gt;), {} )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;define&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( instance_exec(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(main, &lt;span style=&#34;color:#c3e88d&#34;&gt;sub&lt;/span&gt;, tp, prc)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @leg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sub&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(tp, prc)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @leg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(main) ? (@leg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;main&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;sub&lt;/span&gt;) : (@leg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;main&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sub&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kwargs)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @leg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;map { @leg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;select { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:class&lt;/span&gt;) }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty? ? &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; : it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;prc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kwargs)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# usage:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Typed&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;define {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:add&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:add_int&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;a,b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Sum: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;b&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:add&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:add_str&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,   &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;a,b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Str: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;a&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;b&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add(&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          Sum: 10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ior&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;åsna&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Str: ior åsna&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add(&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olle&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I haven&amp;rsquo;t even tested it for real.. and there are things that are very &amp;lsquo;prototype solution&amp;rsquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bye_raku</title>
				<link>https://skapande.org/code/bye_raku/</link>
				<pubDate>Wed, 11 Jun 2025 17:42:36 +0200</pubDate>
				<guid>https://skapande.org/code/bye_raku/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s been.. fun.. and sometimes annoying trying to get to know Raku (Perl6). After finding no benefit at all in using Raku over Ruby.. I&amp;rsquo;ve decided to dump Raku altogether.&lt;/p&gt;&#xA;&lt;p&gt;The only two things I found that makes Raku worthwhile is the ease of defining operators.. and the rather cool topic variable.&lt;/p&gt;&#xA;&lt;p&gt;Actually.. one more thing is nice with Raku: It works both typed and untyped.. I sometimes wish Ruby could adopt that. Would be nice with methods, procs, lambdas and conditions.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Perl_is_tiresome</title>
				<link>https://skapande.org/code/perl_is_tiresome/</link>
				<pubDate>Tue, 10 Jun 2025 12:46:36 +0200</pubDate>
				<guid>https://skapande.org/code/perl_is_tiresome/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve been reading and testing things for a couple of days now.. and &lt;em&gt;SIGH&lt;/em&gt; .. Perl is tiresome (even called Raku &amp;lsquo;formerly known as Perl6&amp;rsquo;).&lt;/p&gt;&#xA;&lt;p&gt;Everytime I look into something.. a void of shit is opening up.&lt;/p&gt;&#xA;&lt;p&gt;I will try to hunker down and not let the doubt and fatigue get to me.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_indices</title>
				<link>https://skapande.org/code/ruby_indices/</link>
				<pubDate>Sun, 08 Jun 2025 21:48:48 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_indices/</guid>
				<description>&lt;p&gt;I thought Ruby Strings also needed the Raku &lt;code&gt;indices&lt;/code&gt; method.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;indices&lt;/span&gt;(m, &lt;span style=&#34;color:#c3e88d&#34;&gt;overlap&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[].&lt;/span&gt;tap {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      overlap ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scan(&lt;span style=&#34;color:#86e1fc&#34;&gt;/(?=(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;))/&lt;/span&gt;) { ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; $~&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;offset(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; } ) :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scan(m) { ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; $~&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;offset(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; } )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;banana&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;indices &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [1, 3, 5]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;banana&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;indices &lt;span style=&#34;color:#86e1fc&#34;&gt;/a/&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [1, 3, 5]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;dadad&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;indices &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;dad&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;overlap&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [0, 2]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;dadad&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;indices &lt;span style=&#34;color:#86e1fc&#34;&gt;/dad/&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;overlap&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [0, 2]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It returns an Array of all indexes where matching occurred.&lt;br&gt;&#xA;Also do overlapping matches.. with &lt;code&gt;overlap: true&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Raku_topic_var</title>
				<link>https://skapande.org/code/raku_topic_var/</link>
				<pubDate>Sun, 08 Jun 2025 20:24:28 +0200</pubDate>
				<guid>https://skapande.org/code/raku_topic_var/</guid>
				<description>&lt;p&gt;I like the default variable &lt;code&gt;$_&lt;/code&gt;.. the &amp;lsquo;Topic variable&amp;rsquo;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-raku&#34; data-lang=&#34;raku&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;say&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;for&lt;/span&gt; &amp;lt;&lt;span style=&#34;color:#c3e88d&#34;&gt;olle nisse janne pelle kalle&lt;/span&gt;&amp;gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;for&lt;/code&gt; enumerates through the list. Every element in order is assigned to &lt;code&gt;$_&lt;/code&gt;. The empty &lt;code&gt;.say&lt;/code&gt;  is interpreted as &lt;code&gt;$_.say&lt;/code&gt;. In Ruby it would be the same as not having to type &lt;code&gt;it&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;%w(olle nisse janne pelle kalle)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You &lt;em&gt;can&lt;/em&gt; do something similar in Ruby:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;say&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;%w(olle nisse janne pelle kalle)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:say&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Going_raku</title>
				<link>https://skapande.org/code/going_raku/</link>
				<pubDate>Sun, 08 Jun 2025 11:57:45 +0200</pubDate>
				<guid>https://skapande.org/code/going_raku/</guid>
				<description>&lt;p&gt;I fell upon raku yesterday. I never looked into perl for real.. found it a bit whimsey.&lt;/p&gt;&#xA;&lt;p&gt;But it&amp;rsquo;s often not the language that is confusing.. or &amp;lsquo;off&amp;rsquo; - it&amp;rsquo;s your preparedness.. your ability to read it. I discovered Ruby through another language.. and after using Ruby for some time.. I am able to appreciate raku when I see it.&lt;/p&gt;&#xA;&lt;p&gt;I will have to use both Ruby and Raku simultaneously. When I focus on one language only.. the other fades away and finally disappears. This happened for me when I stopped coding in Nim and instead only used Ruby.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Array_block</title>
				<link>https://skapande.org/code/array_block/</link>
				<pubDate>Fri, 06 Jun 2025 13:13:49 +0200</pubDate>
				<guid>https://skapande.org/code/array_block/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;[]&lt;/span&gt;(key, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;assoc(key)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;px&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      bl ? px&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;nil? ? &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;key, bl&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; : px &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bl : px&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;drop(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:call&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Carl&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:rune&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:rune&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; { age }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:rune&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;Carl&amp;#34;, 14]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Karl&amp;#39;&lt;/span&gt;; age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:rune&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;Karl&amp;#34;, 12]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Sender</title>
				<link>https://skapande.org/code/sender/</link>
				<pubDate>Wed, 04 Jun 2025 11:43:34 +0200</pubDate>
				<guid>https://skapande.org/code/sender/</guid>
				<description>&lt;p&gt;A rather pointless little program.. just playing and testing.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Enumerator&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:e&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:each&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# hash of send-array containing args&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;op&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:puts&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     OutPut  =&amp;gt; puts str&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;uc&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:self&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:upcase&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   UpCase  =&amp;gt; str.upcase&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;en&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:self&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_enum&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  Enum    =&amp;gt; ar.to_enum&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;instance_exec {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(cmd, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:self&lt;/span&gt;) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;send(&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;send&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# hash of procs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;»&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puc&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:op&lt;/span&gt;, c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;, str)) },  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  puts UPCASE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;en&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:en&lt;/span&gt;, ar) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                return Enumerator&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;»&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;instance_exec {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(key, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(key) ? &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][*&lt;/span&gt;args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# example call&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;»&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;en(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;e { &lt;span style=&#34;color:#c53b53&#34;&gt;»&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;puc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;hej: &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;it&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; output&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# HEJ: 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# HEJ: 2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# HEJ: 3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# HEJ: 4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# HEJ: 5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Code_today</title>
				<link>https://skapande.org/code/code_today/</link>
				<pubDate>Mon, 02 Jun 2025 20:54:21 +0200</pubDate>
				<guid>https://skapande.org/code/code_today/</guid>
				<description>&lt;p&gt;Today I&amp;rsquo;ve been doing this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Let&amp;#39;s say you have this data from an&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# external command. You want to collect it.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;out &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;&amp;lt;-OUT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Width&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Height&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;500&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;PosX&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;PosY&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;35&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Modules&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;use&lt;/span&gt;: one, two, five&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Process&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;ID&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;33178&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;OUT&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; out&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;lines(&lt;span style=&#34;color:#c3e88d&#34;&gt;chomp&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;reject { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^\s*$/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;: &amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tr(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;), (&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;(v) &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; v)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;Width&amp;#34; =&amp;gt; 300,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;Height&amp;#34; =&amp;gt; 500,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;PosX&amp;#34; =&amp;gt; 40,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;PosY&amp;#34; =&amp;gt; 35,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;Modulesinuse&amp;#34; =&amp;gt; &amp;#34;one, two, five&amp;#34;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;ProcessID&amp;#34; =&amp;gt; 33178&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# another way&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; out&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;lines(&lt;span style=&#34;color:#c3e88d&#34;&gt;chomp&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;inject({}) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;h,ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;$1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tr(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;($2) &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; $2) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^([^:]+): (.*)$/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# {&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;Width&amp;#34; =&amp;gt; 300,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;Height&amp;#34; =&amp;gt; 500,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;PosX&amp;#34; =&amp;gt; 40,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;PosY&amp;#34; =&amp;gt; 35,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;Modulesinuse&amp;#34; =&amp;gt; &amp;#34;one, two, five&amp;#34;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;#34;ProcessID&amp;#34; =&amp;gt; 33178&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then I started looking at the method &lt;code&gt;grep&lt;/code&gt;.&lt;br&gt;&#xA;I found &lt;code&gt;arr.grep(Integer).grep(2..6)&lt;/code&gt; ugly. I wanted &lt;code&gt;multi-grep&lt;/code&gt; or &lt;code&gt;mgrep&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Braille</title>
				<link>https://skapande.org/code/braille/</link>
				<pubDate>Sat, 31 May 2025 19:49:49 +0200</pubDate>
				<guid>https://skapande.org/code/braille/</guid>
				<description>&lt;p&gt;The Unicode Braille alphabet gives us an opportunity to set pixels in terminal. A Braille character is a 2x4 grid of dots.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;Drawille&lt;/code&gt; library takes care of that. I think it was originally written for Python.. but now there are versions for many programming languages.. including Ruby.&lt;/p&gt;&#xA;&lt;p&gt;One of the examples shows how to convert an image to a stencil, using &lt;code&gt;chunky_png&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So I wrote some short code to create a PNG-image with whatever text is comming from ARGV. Then ChunkyPNG walks the pixels and creates a Drawille Canvas.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fibers_threads</title>
				<link>https://skapande.org/code/fibers_threads/</link>
				<pubDate>Fri, 30 May 2025 11:28:28 +0200</pubDate>
				<guid>https://skapande.org/code/fibers_threads/</guid>
				<description>&lt;p&gt;What I&amp;rsquo;m writing is my guess and understanding. Not the facts.. because I don&amp;rsquo;t know the facts right now. I&amp;rsquo;m investigating.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say you want to do some animation in a terminal. This would use ANSI escape codes to position the cursor and print a character. Then wait a bit and put the next character in the animation on the same position.&lt;/p&gt;&#xA;&lt;p&gt;And you try to fork it. Suddenly you have no control over the setting of position and the printing of characters. Anything can be interrupted at any time.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Aliases</title>
				<link>https://skapande.org/code/aliases/</link>
				<pubDate>Wed, 21 May 2025 18:58:12 +0200</pubDate>
				<guid>https://skapande.org/code/aliases/</guid>
				<description>&lt;h4 id=&#34;array&#34;&gt;&#xA;  Array&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#array&#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;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;map&lt;/code&gt;, &lt;del&gt;collect&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;&amp;lt;&lt;/code&gt; or &lt;code&gt;push&lt;/code&gt; &lt;del&gt;append&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;size&lt;/code&gt; &lt;del&gt;length&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;flat_map&lt;/code&gt; &lt;del&gt;collect_concat&lt;/del&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;hash&#34;&gt;&#xA;  Hash&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#hash&#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;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;key?&lt;/code&gt; &lt;del&gt;has_key?&lt;/del&gt; &lt;del&gt;member?&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;size&lt;/code&gt; &lt;del&gt;length&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;find&lt;/code&gt; &lt;del&gt;detect&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;map&lt;/code&gt; &lt;del&gt;collect&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;flat_map&lt;/code&gt; &lt;del&gt;collect_concat&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;inject&lt;/code&gt; &lt;del&gt;reduce&lt;/del&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;other-classes-examples&#34;&gt;&#xA;  Other classes (examples)&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#other-classes-examples&#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;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;to_sym&lt;/code&gt; &lt;del&gt;intern&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;to_a&lt;/code&gt; &lt;del&gt;entries&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;abs&lt;/code&gt; &lt;del&gt;magnitude&lt;/del&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;%&lt;/code&gt; &lt;del&gt;modulo&lt;/del&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Ruby_language</title>
				<link>https://skapande.org/code/ruby_language/</link>
				<pubDate>Tue, 20 May 2025 19:05:45 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_language/</guid>
				<description>&lt;p&gt;I love the Ruby language.. not unconditionally. Why must we have method aliases?&lt;/p&gt;&#xA;&lt;p&gt;If you want to define them yourself.. fine! But Hash#key should not also be Hash#member.&lt;/p&gt;&#xA;&lt;p&gt;Why are the same method-names used again and again.. like &lt;code&gt;yield&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Why must Data be &lt;code&gt;defined&lt;/code&gt; when every other container is just &lt;code&gt;new&lt;/code&gt;?&lt;/p&gt;&#xA;&lt;p&gt;If I write my own Hash-class using Array.. it&amp;rsquo;s only 3 times slower than Hash. It should be 60 times slower. (just getter, setter using assoc and find_index)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hash_to_data</title>
				<link>https://skapande.org/code/hash_to_data/</link>
				<pubDate>Mon, 19 May 2025 12:14:30 +0200</pubDate>
				<guid>https://skapande.org/code/hash_to_data/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_data&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Data&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;define(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;keys)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;values)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;to_int&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;to_float&lt;/span&gt;:   &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_f&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;to_string&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_s&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;bin_to_dec&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;dec_to_bin&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_s&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;to_data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Method_curry</title>
				<link>https://skapande.org/code/method_curry/</link>
				<pubDate>Sat, 17 May 2025 17:59:00 +0200</pubDate>
				<guid>https://skapande.org/code/method_curry/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# one method&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;convert&lt;/span&gt;(to, obj) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;to) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# example call&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; convert &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;12&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     =&amp;gt; 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# container with partially pre-filled calls (curry) &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Data&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;define(&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_int&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_float&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_string&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:bin_to_dec&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:dec_to_bin&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_f&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_s&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:convert&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_s&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# all calls to the same one method&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_int&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;12.4&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      =&amp;gt; 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_float&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;12.4&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#    =&amp;gt; 12.4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_string&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     =&amp;gt; &amp;#34;3.14&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bin_to_dec&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1110&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  =&amp;gt; 14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dec_to_bin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      =&amp;gt; &amp;#34;1110&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Not_coding</title>
				<link>https://skapande.org/code/not_coding/</link>
				<pubDate>Thu, 15 May 2025 21:12:00 +0200</pubDate>
				<guid>https://skapande.org/code/not_coding/</guid>
				<description>&lt;p&gt;Sometimes it might be better &lt;em&gt;not&lt;/em&gt; to code&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;notes &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;G&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;flat_map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;BE&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? n : &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;n, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;G&amp;#39;&lt;/span&gt; ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt; : n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;b&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rotate(&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; notes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;C&amp;#34;, &amp;#34;C#/Db&amp;#34;, &amp;#34;D&amp;#34;, &amp;#34;D#/Eb&amp;#34;, &amp;#34;E&amp;#34;, &amp;#34;F&amp;#34;, &amp;#34;F#/Gb&amp;#34;, &amp;#34;G&amp;#34;, &amp;#34;G#/Ab&amp;#34;, &amp;#34;A&amp;#34;, &amp;#34;A#/Bb&amp;#34;, &amp;#34;B&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Forks</title>
				<link>https://skapande.org/code/forks/</link>
				<pubDate>Wed, 14 May 2025 20:54:52 +0200</pubDate>
				<guid>https://skapande.org/code/forks/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Forky&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(max&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;6&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @max, @cur, @que &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; max, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;add&lt;/span&gt;(prc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( bl ? (@que &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bl) : (@cur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;fork&lt;/span&gt; {prc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call}) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;linger&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;until&lt;/span&gt; @que&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      add(@que&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pop) &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; (@cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; @max &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!&lt;/span&gt;@que&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty?)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete &lt;span style=&#34;color:#ff966c&#34;&gt;Process&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;wait &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; @cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; @max&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Process&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;waitall&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Forky&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add { &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:slow&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;} }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add { &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:apa&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;} }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add { &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:gris&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;} }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add { &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:hektor&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;} }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add { &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:rabies&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;} }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;forky&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;linger &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# time 8 secs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Variables</title>
				<link>https://skapande.org/code/variables/</link>
				<pubDate>Wed, 14 May 2025 11:43:12 +0200</pubDate>
				<guid>https://skapande.org/code/variables/</guid>
				<description>&lt;p&gt;I had nothing better to do and started inventing a variable factory from where you can request variables of certain specifics.&lt;/p&gt;&#xA;&lt;p&gt;I have the &lt;code&gt;obstinate&lt;/code&gt; variable, that returns false if you try to set it with the value it already has.&lt;/p&gt;&#xA;&lt;p&gt;And I have the &lt;code&gt;reluctant&lt;/code&gt; variable that don&amp;rsquo;t use the value you set it to until the next time you ask for the value.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; rel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; rel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olle&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; rel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; rel&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;val &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#39;olle&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The obstinate variable I can see some use for.. but any case I can think of for the reluctant variable is just bad coding.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Midi_messages2</title>
				<link>https://skapande.org/code/midi_messages2/</link>
				<pubDate>Mon, 12 May 2025 13:20:13 +0200</pubDate>
				<guid>https://skapande.org/code/midi_messages2/</guid>
				<description>&lt;p&gt;Re-writing my old midi-event listener. Still using external command &lt;code&gt;aseqdump&lt;/code&gt;, but separated the reader and the parser into separate fibers.&lt;/p&gt;&#xA;&lt;p&gt;Right now only tested on one controller (&lt;code&gt;keystation 49es&lt;/code&gt;).. but will make it work with &lt;code&gt;oxygen 25&lt;/code&gt;, &lt;code&gt;KORG padKONTROL&lt;/code&gt; and &lt;code&gt;Zoom R16&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I will add on event subscription via &lt;code&gt;wisper&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;open3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;CLIENT&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Keystation 49es&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;symbolize &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(str) { str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tr(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;_&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;downcase&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hashify   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(str) { str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_h }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;midi &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Fiber&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new { &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  port &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;`aseqdump -l`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;lines(&lt;span style=&#34;color:#c3e88d&#34;&gt;chomp&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;select { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(&lt;span style=&#34;color:#ff966c&#34;&gt;CLIENT&lt;/span&gt;) }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/(\d+:\d+)/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? $1 : &lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;No such client&amp;#39;&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  wr, rd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Open3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;popen2(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;aseqdump -p &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;port&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;); wr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;close&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; line &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; rd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gets&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chomp; &lt;span style=&#34;color:#ff966c&#34;&gt;Fiber&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;yield line &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;parse &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Fiber&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new { &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/(?&amp;lt;event&amp;gt;\w+ \w+).*?\d+, (?&amp;lt;data&amp;gt;.*)$/&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; midi&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;resume&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;Fiber&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;yield &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;symbolize&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;event&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, hashify&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; parse&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;resume }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Made some additions&amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Billion</title>
				<link>https://skapande.org/code/billion/</link>
				<pubDate>Tue, 06 May 2025 20:29:50 +0200</pubDate>
				<guid>https://skapande.org/code/billion/</guid>
				<description>&lt;p&gt;Counting up to a billion in Python takes (on my computer): 1 minute 10 seconds.&lt;/p&gt;&#xA;&lt;p&gt;With Ruby it takes: 11.6 seconds.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1000000000&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;time python file.py&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1000000000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;time ruby file.rb&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-vlang&#34; data-lang=&#34;vlang&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;fn&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;mut&lt;/span&gt; n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;for&lt;/span&gt; n &amp;lt; &lt;span style=&#34;color:#ffc777&#34;&gt;1000000000&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;done &amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;time ./file&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;(well.. v did it in: 1.16 secs)&lt;/p&gt;&#xA;&lt;p&gt;(c did it in 1.39 secs)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Half_of_nothing</title>
				<link>https://skapande.org/code/half_of_nothing/</link>
				<pubDate>Tue, 06 May 2025 18:38:15 +0200</pubDate>
				<guid>https://skapande.org/code/half_of_nothing/</guid>
				<description>&lt;p&gt;Benchmarking is good and bad. If your program does three things and it takes a tenth of a second.. there&amp;rsquo;s no point in looking for optimizations.&lt;/p&gt;&#xA;&lt;p&gt;If code are executed in loops and is called thousands of times.. you should look into optimizing. Or if just a few calls are taking above a second.. there might be a better way.&lt;/p&gt;&#xA;&lt;p&gt;Or, let&amp;rsquo;s say you are using Ruby2d and the main loop is called 60 times a second.. How you handle the game logic is going to be noticeable.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Arrays</title>
				<link>https://skapande.org/code/arrays/</link>
				<pubDate>Thu, 01 May 2025 20:25:22 +0200</pubDate>
				<guid>https://skapande.org/code/arrays/</guid>
				<description>&lt;p&gt;I feel Arrays are &amp;lsquo;hiding&amp;rsquo; something from me. They are not just a sequence of &amp;rsquo;eh!&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;I will figure it out.&lt;br&gt;&#xA;using &amp;lsquo;dig&amp;rsquo;, &amp;lsquo;flatten&amp;rsquo; (once), &amp;lsquo;(r)assoc&amp;rsquo;.. I can make something.. would be fun if that thing was using push/pop (both directions).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Wordle</title>
				<link>https://skapande.org/code/wordle/</link>
				<pubDate>Fri, 25 Apr 2025 13:10:50 +0200</pubDate>
				<guid>https://skapande.org/code/wordle/</guid>
				<description>&lt;p&gt;I find the small projects often turn into great learning experiences.&lt;/p&gt;&#xA;&lt;p&gt;I wanted a &lt;code&gt;wordle&lt;/code&gt; filter. Got myself a wordlist of 14k 5-letter words and started writing. And there I was with a semi-complicated regexp checking every line. It worked. It was fast.&lt;/p&gt;&#xA;&lt;p&gt;Still. I wanted to pre-filter the list using grep. I haven&amp;rsquo;t used grep more than the very simplest application. Now I had to look into &lt;code&gt;-E&lt;/code&gt;, &lt;code&gt;-e&lt;/code&gt;, &lt;code&gt;-v&lt;/code&gt; and.. buffering?&lt;/p&gt;</description>
			</item>
			<item>
				<title>Method_missing_response</title>
				<link>https://skapande.org/code/method_missing_response/</link>
				<pubDate>Wed, 23 Apr 2025 12:09:52 +0200</pubDate>
				<guid>https://skapande.org/code/method_missing_response/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;koko&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;methods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Class&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;methods &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [:koko]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;respond_to?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:koko&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All is great and well. But&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;koko&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(schwab frances)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) ? (&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; args) : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;methods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Class&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;methods &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [:koko, :method_missing]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;respond_to?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:koko&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;respond_to?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:schwab&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enter &amp;lsquo;respond_to_missing&amp;rsquo;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;koko&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(schwab frances)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) ? (&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; args) : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;respond_to_missing?&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, include_private &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(schwab frances)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;methods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Class&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;methods &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [:koko, :method_missing]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;respond_to?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:koko&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;respond_to?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:schwab&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now &lt;code&gt;respond_to?&lt;/code&gt; return &lt;code&gt;true&lt;/code&gt; for the method-names that &lt;code&gt;method_missing&lt;/code&gt; is handling. The methods will still not appear in the &lt;code&gt;.methods&lt;/code&gt; Array, but that can be solved by actually create the methods.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Currying</title>
				<link>https://skapande.org/code/currying/</link>
				<pubDate>Tue, 22 Apr 2025 17:45:13 +0200</pubDate>
				<guid>https://skapande.org/code/currying/</guid>
				<description>&lt;p&gt;Often I make a class to just manage a Hash or Hash / Struct combo.&lt;br&gt;&#xA;I was thinking: why not just add the methods I need to the object?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;H &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;instance_exec {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @add &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;one? ? v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first : v) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(k, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;v) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(k) ? &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; : @add&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;H&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; H&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;apa &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [3, 11]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;H&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hula&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hula&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;H&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dance&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; H&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hula}; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;H&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dance&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; hulahula&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;NOTE: Array#one? is not the same as Array#size == 1.. but counts instead &amp;rsquo;truthy elements&amp;rsquo;. So &lt;code&gt;[nil, 0].one?&lt;/code&gt; is true. It also takes an argument and a block:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Swapescape</title>
				<link>https://skapande.org/code/swapescape/</link>
				<pubDate>Sun, 13 Apr 2025 22:53:07 +0200</pubDate>
				<guid>https://skapande.org/code/swapescape/</guid>
				<description>&lt;p&gt;Today is the day where &lt;code&gt;CapsLock&lt;/code&gt; and &lt;code&gt;Escape&lt;/code&gt; swaps on my keyboard. Not physically, but functionally. I want to use vim-motions more and I think the escape-key in the upper left will make me loose the home-row. I could still anchor my index-finger on &lt;code&gt;F&lt;/code&gt;.. but I made this choice.&lt;/p&gt;&#xA;&lt;p&gt;Also got a vim-motion cheat-sheet and will focus on a few things at a time.. like stop using only &amp;lsquo;i&amp;rsquo; for insert-mode.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Strscan</title>
				<link>https://skapande.org/code/strscan/</link>
				<pubDate>Tue, 08 Apr 2025 19:16:50 +0200</pubDate>
				<guid>https://skapande.org/code/strscan/</guid>
				<description>&lt;p&gt;Just got acquainted with &lt;code&gt;strscan&lt;/code&gt;, and want to create some sort of sub-matching. For now I&amp;rsquo;ve introduced my variant of groups.&lt;/p&gt;&#xA;&lt;p&gt;Next I want a &lt;code&gt;trigger&lt;/code&gt; that would set off a new group recursively.&lt;/p&gt;&#xA;&lt;p&gt;But I code as I think and I think as I drink.. so, let&amp;rsquo;s see. I also have this anti-social-media thing, where I avoid groups, chats, communities and such. I have to figure it out / look it up myself.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Download_parallel</title>
				<link>https://skapande.org/code/download_parallel/</link>
				<pubDate>Thu, 20 Mar 2025 21:13:14 +0100</pubDate>
				<guid>https://skapande.org/code/download_parallel/</guid>
				<description>&lt;p&gt;Let&amp;rsquo;s say we have a webpage (ipaudio3.club) where you can stream all Stephen Kings books. ANd let&amp;rsquo;s say you want to download.. not stream.&lt;/p&gt;&#xA;&lt;p&gt;So, you view the page-source and find out what url is used for the different parts of the book you are interested in.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s something like this:&lt;br&gt;&#xA;&lt;code&gt;https://ipaudio3.club/wp-content/STEPHEN/&amp;lt;title&amp;gt;01.mp3&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;and the files are numbered &lt;code&gt;01&lt;/code&gt; to &lt;code&gt;14&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# first problem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# seq 1 14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# this will give you 1 2 3 4 ... 14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# solution &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;seq -f &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%02g&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# will produce 01 02 03 ... 14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# second problem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# how send these numbers to curl?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# solution: use `xargs`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# url is your URL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;seq -f &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%02g&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt; | xargs -I&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;{}&lt;/span&gt; -n1 -P0 curl &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;lt;url&amp;gt;/{}.mp3&amp;#39;&lt;/span&gt; --output &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;{}.mp3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# This will download the files 01-14 and save them as 01.mp3 02.mp3 and so on.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# It will be done in parallel.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-I{}&lt;/code&gt; will set &lt;code&gt;{}&lt;/code&gt; to a variable, holding the input (the numbers). You can then use the same marker &lt;code&gt;{}&lt;/code&gt; to insert the value.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Default_proc_struct</title>
				<link>https://skapande.org/code/default_proc_struct/</link>
				<pubDate>Fri, 14 Mar 2025 18:05:37 +0100</pubDate>
				<guid>https://skapande.org/code/default_proc_struct/</guid>
				<description>&lt;p&gt;The normal behaviour for a Hash is to return nil if you trying to access a key that is not set. Therefore you can check that a key is set by &lt;code&gt;hsh.key?(KEY)&lt;/code&gt; or by &lt;code&gt;hsh[KEY]&lt;/code&gt;. As mentioned &lt;code&gt;default_proc&lt;/code&gt; creates a key-val (or might do any operation) just accessing the hsh[KEY]. So.. &lt;code&gt;puts hsh[:ove]&lt;/code&gt; will trigger &lt;code&gt;default_proc&lt;/code&gt; and populate the Hash.&lt;/p&gt;&#xA;&lt;p&gt;In this example I will use &lt;code&gt;default_proc&lt;/code&gt; to create a Struct.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Today</title>
				<link>https://skapande.org/code/today/</link>
				<pubDate>Tue, 11 Mar 2025 21:15:01 +0100</pubDate>
				<guid>https://skapande.org/code/today/</guid>
				<description>&lt;p&gt;For the last 3 hours I&amp;rsquo;ve been thinking about this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:id&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:state&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:proc&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;, state&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @id, @state, @proc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;, state, bl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;call&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @proc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; @proc )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;scope&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# bad rescue&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s, state &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Loke&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:apa&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt;) { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;koko is a %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; cat }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;id &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; :apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# scope&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cat  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Loke&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;() &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; Koko is a Loke&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new &lt;span style=&#34;color:#c3e88d&#34;&gt;:koko&lt;/span&gt;, x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scope&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cat &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Loke&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s not the fruits of 3 hours entirely.. I&amp;rsquo;ve also had to check and feed the furnace; the washing-machine and the dryer; checking some &amp;ldquo;news&amp;rdquo;, mail and drinking beer.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Default_proc</title>
				<link>https://skapande.org/code/default_proc/</link>
				<pubDate>Mon, 10 Mar 2025 18:17:58 +0100</pubDate>
				<guid>https://skapande.org/code/default_proc/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve seen this here and there:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:key&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Also this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(&lt;span style=&#34;color:#c3e88d&#34;&gt;:key&lt;/span&gt;) ? (hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:key&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; data) : (hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:key&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But you can define your hash with a &lt;code&gt;default proc&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;h,k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:key&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can even set the &lt;code&gt;default_proc&lt;/code&gt; after the fact..&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;default_proc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;h,k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:key&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Types2</title>
				<link>https://skapande.org/code/types2/</link>
				<pubDate>Tue, 04 Mar 2025 18:15:31 +0100</pubDate>
				<guid>https://skapande.org/code/types2/</guid>
				<description>&lt;p&gt;Apropos previous post (types).. I tried to write something focusing on types only. And this is it:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Types&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --------------------------------------------------------------------------- &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Typenames&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;CONSTANTS&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;NUM&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;Float&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Complex&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Rational&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;INT&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;DEC&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;Float&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Rational&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;STR&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;CHR&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;REX&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Regexp&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;BOOL&lt;/span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TrueClass&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;FalseClass&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;ENUM&lt;/span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Enumerable&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;NIL&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;NilClass&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Unset&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --------------------------------------------------------------------------- &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Tp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:vars&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @vars &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:value&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:classes&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:to&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:args&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;define&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( instance_exec(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^(\w+)=/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        @vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?($1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym) ? set($1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym, val) : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt; :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        @vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) ? @vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;value : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;set&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, val)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# handle to:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ((to &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;to) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;respond_to?(to)) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(to, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;@vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;args) : val&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;classes&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt; val }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;any?(&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (@vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;value &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; val) :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;TypeError: %s =&amp;gt; %s (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, val, val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;class&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(key, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;cls, &lt;span style=&#34;color:#c3e88d&#34;&gt;to&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;args&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @vars&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#ff966c&#34;&gt;Unset&lt;/span&gt;, cls&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;flatten, to, args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;This is the usage part:&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_types</title>
				<link>https://skapande.org/code/ruby_types/</link>
				<pubDate>Mon, 03 Mar 2025 12:43:40 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_types/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve been thinking about type-checking ruby for some time. I know there are gems like &lt;code&gt;sorbet&lt;/code&gt;, &lt;code&gt;steep&lt;/code&gt;, &lt;code&gt;dry-types&lt;/code&gt;. My little home-cooked solution is 35 lines of code. Works like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;./mw_vars.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Globals&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Vars&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rules(&lt;span style=&#34;color:#c3e88d&#34;&gt;:price&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt; it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rules(&lt;span style=&#34;color:#c3e88d&#34;&gt;:range&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#ff966c&#34;&gt;Range&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt; it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;last &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rules(&lt;span style=&#34;color:#c3e88d&#34;&gt;:label&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rule &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt; it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;data&lt;/span&gt;(price, range, label)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;price, X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;range, X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;label &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; price, range, label&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ok&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;, (&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;50&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hejsan&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; ok&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#ffc777&#34;&gt;300&lt;/span&gt;, (&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;22&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;:hej&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; Line: 35, Error value for [range = 2..22 (Range)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Pretzel_map</title>
				<link>https://skapande.org/code/pretzel_map/</link>
				<pubDate>Sun, 02 Mar 2025 20:36:36 +0100</pubDate>
				<guid>https://skapande.org/code/pretzel_map/</guid>
				<description>&lt;p&gt;What&amp;rsquo;s the &lt;em&gt;pretzel map&lt;/em&gt;?&lt;br&gt;&#xA;This is the pretzel (&lt;strong&gt;&amp;amp;&lt;/strong&gt;).. and this is the pretzel map:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_s&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;1&amp;#34;, &amp;#34;2&amp;#34;, &amp;#34;3&amp;#34;, &amp;#34;4&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The object (Integer) in this case.. must have the method &lt;code&gt;.to_s&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s like: &lt;code&gt;[1,2,3,4].map {|i| i.to_s }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;You can add a method to the object and call that:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Integer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ior&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;åsna&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:ior&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;åsna&amp;#34;, &amp;#34;åsna&amp;#34;, &amp;#34;åsna&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But it&amp;rsquo;s not limited to object method calls&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;koko&lt;/span&gt;(x) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;monkey &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:monkey&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:koko&lt;/span&gt;)) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# method&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;}) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# proc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;monkey) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# proc by var&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;-&amp;gt;&lt;/span&gt;{it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;}) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# lambda&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s)) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# proc by eval var&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# 5 times =&amp;gt; [2, 4, 6, 8, 10, 12, 14]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Firefox_script</title>
				<link>https://skapande.org/code/firefox_script/</link>
				<pubDate>Sun, 02 Mar 2025 12:04:36 +0100</pubDate>
				<guid>https://skapande.org/code/firefox_script/</guid>
				<description>&lt;p&gt;For some firefox bookmarks I set a keyword. For example is the bookmark for gatweaypundit.com &lt;code&gt;:gp&lt;/code&gt;. That allows me to type &lt;code&gt;:gp&lt;/code&gt; in the address bar to open gatewaypundit.&lt;/p&gt;&#xA;&lt;p&gt;I found &lt;code&gt;places.sqlite&lt;/code&gt; under the &lt;code&gt;.mozilla&lt;/code&gt; folder.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlite3 places.sqlite  .tables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I get:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_anno_attributes                 moz_keywords&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_annos                           moz_meta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_bookmarks                       moz_origins&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_bookmarks_deleted               moz_places&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_historyvisits                   moz_places_extra&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_historyvisits_extra             moz_places_metadata&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_inputhistory                    moz_places_metadata_search_queries&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;moz_items_annos                     moz_previews_tombstones&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlite3 places.sqlite  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;PRAGMA table_info(moz_bookmarks)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;gives me:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;0|id|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1|type|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2|fk|INTEGER|0|NULL|&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3|parent|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4|position|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5|title|LONGVARCHAR|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;6|keyword_id|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;7|folder_type|TEXT|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8|dateAdded|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;9|lastModified|INTEGER|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;10|guid|TEXT|0&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;11|syncStatus|INTEGER|1|0|&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;12|syncChangeCounter|INTEGER|1|1|&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I was thinking of making a really small script that - from terminal - takes a keyword; looks it up in the database and then &lt;code&gt;firefox --new-tab &amp;lt;url&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Vimrc</title>
				<link>https://skapande.org/code/vimrc/</link>
				<pubDate>Sat, 01 Mar 2025 18:38:16 +0100</pubDate>
				<guid>https://skapande.org/code/vimrc/</guid>
				<description>&lt;p&gt;This is my vimrc. I split it up in sections. I have a mapping &lt;code&gt;&amp;lt;Leader&amp;gt;vrc&lt;/code&gt; that opens vimrc for editing. There I can &lt;code&gt;C-w f&lt;/code&gt; to open any section. I also have &lt;code&gt;&amp;lt;Leader&amp;gt;vso&lt;/code&gt; for re-sourcing vimrc (I could maybe have that as autocommand on filechange).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;so ~/.vim/vimrc_main&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;so ~/.vim/vimrc_folds&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;so ~/.vim/vimrc_mappings&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;so ~/.vim/vimrc_plugins&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34; filetype specific settings&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;so ~/.vim/vimrc_filetype&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt; use Ctrl-w f to open file under cursor in split window&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I had some problems with &lt;code&gt;filetype plugin on&lt;/code&gt; and setting &lt;code&gt;wrap&lt;/code&gt; and &lt;code&gt;spell&lt;/code&gt; globally.. but &lt;code&gt;nowrap&lt;/code&gt; and &lt;code&gt;nospell&lt;/code&gt; locally on filetype.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Vim_server</title>
				<link>https://skapande.org/code/vim_server/</link>
				<pubDate>Fri, 28 Feb 2025 18:09:04 +0100</pubDate>
				<guid>https://skapande.org/code/vim_server/</guid>
				<description>&lt;p&gt;Vim has a server. You can start it like this: &lt;code&gt;vim --servername VIM&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say you want to send log-lines directly into vim.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Start another instance&amp;hellip;&lt;/em&gt;&lt;br&gt;&#xA;&lt;code&gt;vim --servername VIM --remote-send &#39;Logging my first line&#39;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;That won&amp;rsquo;t work. It won&amp;rsquo;t work because you wouldn&amp;rsquo;t do that with vim normally. You would go to insert-mode.&lt;/p&gt;&#xA;&lt;p&gt;So.. &lt;code&gt;vim --servername VIM --remote-send &#39;&amp;lt;esc&amp;gt;GGoLogging my first line&amp;lt;cr&amp;gt;&#39;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt; go to normal mode.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;GG&lt;/code&gt; go to end of file.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;o&lt;/code&gt; insert line below and go there in insert-mode.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;lt;cr&amp;gt;&lt;/code&gt; carriage-return&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;VimLog&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(server_name)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @call &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(vim --servername &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;server_name&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; --remote-send)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;send&lt;/span&gt;(msg) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;@call&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; &amp;#39;&amp;lt;esc&amp;gt;GGo&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;msg&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;cr&amp;gt;&amp;#39;`&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vl &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;VimLog&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:APA&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# start logging&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vl&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Detta är rad 1&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vl&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Detta är rad 2&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This works with gvim too. Gvim starts a server automatically. You can check the name of the server by typing: &lt;code&gt;:echo v:servername&lt;/code&gt; and maybe get the reply: &lt;strong&gt;GVIM&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Lazyvim_is_testing_my_patience</title>
				<link>https://skapande.org/code/lazyvim_is_testing_my_patience/</link>
				<pubDate>Tue, 25 Feb 2025 20:49:39 +0100</pubDate>
				<guid>https://skapande.org/code/lazyvim_is_testing_my_patience/</guid>
				<description>&lt;p&gt;What the f is up with Lazy-vim?!?!?!?&lt;/p&gt;&#xA;&lt;p&gt;Constant updates! Constant fails.&lt;/p&gt;&#xA;&lt;p&gt;Using CPU like crazy.&lt;/p&gt;&#xA;&lt;p&gt;Go to hell!&lt;/p&gt;&#xA;&lt;h4 id=&#34;later&#34;&gt;&#xA;  later&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#later&#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;/h4&gt;&#xA;&lt;p&gt;what a relief! Ridding myself of nvim / Lazyvim was the best.&lt;br&gt;&#xA;It&amp;rsquo;s like: I can breathe again. And - suddenly - the keys under my fingers type.. instead of waiting for response.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ole_dole_doff</title>
				<link>https://skapande.org/code/ole_dole_doff/</link>
				<pubDate>Mon, 24 Feb 2025 20:44:40 +0100</pubDate>
				<guid>https://skapande.org/code/ole_dole_doff/</guid>
				<description>&lt;p&gt;&lt;em&gt;This is a Ruby program &amp;hellip;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ole &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; dole(&lt;span style=&#34;color:#c3e88d&#34;&gt;:doff&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;kinke {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;lane&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  koff koffe&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;lane(&lt;span style=&#34;color:#c3e88d&#34;&gt;:binke&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;bane &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [:ole, :dole, :doff]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;if you prepend this&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:kinke&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:each&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:bane&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:reverse&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;koff&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; s)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;dole&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;lane&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:oy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;koffe &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;oy&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(doff dole ole)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Condy</title>
				<link>https://skapande.org/code/condy/</link>
				<pubDate>Mon, 24 Feb 2025 18:27:28 +0100</pubDate>
				<guid>https://skapande.org/code/condy/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# rubocop:disable all&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Condy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @procs &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @cur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    instance_exec(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; bl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @procs &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;check&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[].&lt;/span&gt;tap {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;arr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_with_index {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;val, idx&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      arr &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; @procs&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;idx&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;(val) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;-&amp;gt;&lt;/span&gt;{it ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:&amp;#39;0&amp;#39;&lt;/span&gt;})&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;32&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;logged_in &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;color &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:ruby_red&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# test 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Condy&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/^&lt;/span&gt;\w&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;$/&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;match?(it)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt; it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;between?(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; {it}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(red white blue)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(it)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;check &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age, logged_in, color &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#           =&amp;gt; &amp;#34;1100&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;check(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age, logged_in, color)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  =&amp;gt; 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;check &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age, logged_in, color&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^11../&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;name and age OK&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;misery and fail&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;name and age OK&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# test 2 : testing curry&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Condy&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:divby&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;d,i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; d &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; @cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:divby&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;(it) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;it, &lt;span style=&#34;color:#c3e88d&#34;&gt;:buzz&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:fizz&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:fizzbuzz&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;check(it, it)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin OUTPUT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:fizz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:buzz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:fizz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:fizz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:buzz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:fizz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;13&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;14&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:fizzbuzz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;17&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:fizz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;19&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;:buzz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Currying_playground</title>
				<link>https://skapande.org/code/currying_playground/</link>
				<pubDate>Fri, 21 Feb 2025 19:50:36 +0100</pubDate>
				<guid>https://skapande.org/code/currying_playground/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# rubocop:disable all&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fix &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar, val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; val }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# or&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# fix = -&amp;gt;(ar, val) { ar &amp;lt;&amp;lt; val }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; fix&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;arr &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; arr &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [8, 9, 1]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;sample&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; arr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; example output: [8, 9, 1, 4, 5, 5, 1, 4]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;summa&lt;/span&gt;(a, b) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( a &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; b )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;qur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:summa&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; qur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 15&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Pmt&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tty-prompt&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @pmt &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;TTY&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Prompt&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;select&lt;/span&gt;(msg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;, ar)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @pmt&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;select(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      msg,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;cancel&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;per_page&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;filter&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;active_color&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:bright_yellow&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Pmt&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;choose &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; pm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:select&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; choose&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#ff966c&#34;&gt;Dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;*.txt&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;color&lt;/span&gt;(col)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; txt { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s:%s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;col, txt&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;red &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; color(&lt;span style=&#34;color:#c3e88d&#34;&gt;:red&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Hejsan&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Hejsan&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Hejsan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Hejsan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;red&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.!&lt;/span&gt;(txt) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call(txt)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.!&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Hejsan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(Hejsan)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;===&lt;/span&gt;ar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# or&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;col &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(col, txt) { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s:%s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;col, txt&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pink &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;curry&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:pink&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; pink&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hello&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Incorrect</title>
				<link>https://skapande.org/code/incorrect/</link>
				<pubDate>Fri, 21 Feb 2025 09:47:33 +0100</pubDate>
				<guid>https://skapande.org/code/incorrect/</guid>
				<description>&lt;p&gt;I said somewhere &amp;lsquo;No programming language can read the keyboard&amp;rsquo;. That&amp;rsquo;s is obviously not true.&lt;/p&gt;&#xA;&lt;p&gt;In another post I said something like &amp;lsquo;If the value can take a symbol shape&amp;rsquo;&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Any value can take symbol shape (Ruby).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Gem_check</title>
				<link>https://skapande.org/code/gem_check/</link>
				<pubDate>Tue, 18 Feb 2025 19:19:24 +0100</pubDate>
				<guid>https://skapande.org/code/gem_check/</guid>
				<description>&lt;p&gt;Wrote &lt;code&gt;gem_check&lt;/code&gt; to be able to see what gems been installed since fresh install.. or since any point in time I chose to store.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s not using git.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;gem_check&lt;/code&gt; list all gems not default gems&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;gem_check -o keep_state.dat&lt;/code&gt; store this point&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;gem_check -c keep_state.dat&lt;/code&gt; show gems installed after this point&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;em&gt;Why?&lt;/em&gt;&lt;br&gt;&#xA;I wasn&amp;rsquo;t aware that &lt;code&gt;tty-reader&lt;/code&gt; will force upon me an older version of &lt;code&gt;wisper&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Note: I&amp;rsquo;m aware of &lt;code&gt;rbenv&lt;/code&gt;.. I just don&amp;rsquo;t use it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Templating</title>
				<link>https://skapande.org/code/templating/</link>
				<pubDate>Tue, 18 Feb 2025 13:06:14 +0100</pubDate>
				<guid>https://skapande.org/code/templating/</guid>
				<description>&lt;p&gt;I Wrote a templating system. A main template calls in sub-templates. The sub-templates can call in their templates.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@_head_@@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@req&amp;gt;@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@_class_init_@@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;head&lt;/code&gt; template could look like this..&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@_shbang_@@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@_frozen_string_@@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@_rubocop_disable_@@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So.. &lt;code&gt;head.template&lt;/code&gt; calls in &lt;code&gt;shbang.template&lt;/code&gt;, &lt;code&gt;frozen_string.template&lt;/code&gt; and &lt;code&gt;rubocop_disable.template&lt;/code&gt;. The result is positioned at the &lt;code&gt;@@_head_@@&lt;/code&gt; in the main template (recursive.. with a max-depth bail-out to prevent infinite recursion).&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;@@req&amp;gt;@@&lt;/code&gt; is a placeholder for a collection.&lt;br&gt;&#xA;A collection is built like this: &lt;code&gt;@@req &amp;lt; require &#39;slop&#39;@@&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_3.4.2</title>
				<link>https://skapande.org/code/ruby_3.4.2/</link>
				<pubDate>Sun, 16 Feb 2025 22:23:40 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_3.4.2/</guid>
				<description>&lt;p&gt;Installed Ruby 3.4.2&lt;/p&gt;</description>
			</item>
			<item>
				<title>Method_missing</title>
				<link>https://skapande.org/code/method_missing/</link>
				<pubDate>Sun, 16 Feb 2025 12:41:06 +0100</pubDate>
				<guid>https://skapande.org/code/method_missing/</guid>
				<description>&lt;p&gt;Using &lt;code&gt;wisper&lt;/code&gt;, I wanted the listener to have a &lt;code&gt;method_missing&lt;/code&gt; method.. to catch every broadcast. But &lt;code&gt;wisper&lt;/code&gt; is using .respond_to? to check if the class &lt;em&gt;have&lt;/em&gt; the method.&lt;/p&gt;&#xA;&lt;p&gt;Enter &lt;code&gt;respond_to_missing?&lt;/code&gt;. Force a &lt;code&gt;true&lt;/code&gt; answer and everything is dandy.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;wisper&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;A_publisher&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Wisper&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;publisher&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;bc&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    broadcast(&lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Listener&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Method missing: (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;respond_to_missing?&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;...&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ap &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;A_publisher&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ap&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;subscribe(&lt;span style=&#34;color:#ff966c&#34;&gt;Listener&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ap&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bc(&lt;span style=&#34;color:#c3e88d&#34;&gt;:one&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;ok&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ap&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bc(&lt;span style=&#34;color:#c3e88d&#34;&gt;:two&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ap&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bc(&lt;span style=&#34;color:#c3e88d&#34;&gt;:three&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;blind mice&amp;#39;&lt;/span&gt;)&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Imports</title>
				<link>https://skapande.org/code/imports/</link>
				<pubDate>Wed, 12 Feb 2025 10:46:34 +0100</pubDate>
				<guid>https://skapande.org/code/imports/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s sometimes easy to think everything is just an &lt;code&gt;import&lt;/code&gt; or &lt;code&gt;require&lt;/code&gt; away.&lt;/p&gt;&#xA;&lt;p&gt;I have two examples where it&amp;rsquo;s actually &lt;strong&gt;not&lt;/strong&gt; beneficial to import a library and use the API.&lt;/p&gt;&#xA;&lt;h2 id=&#34;launchy&#34;&gt;&#xA;  launchy&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#launchy&#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;Launchy launches a webpage into your browser. It works hard to detect what operative system you are on; what browser is the default; what browsers are available; whats in your ENV..&lt;/p&gt;</description>
			</item>
			<item>
				<title>Wisper_gem</title>
				<link>https://skapande.org/code/wisper_gem/</link>
				<pubDate>Mon, 10 Feb 2025 19:25:31 +0100</pubDate>
				<guid>https://skapande.org/code/wisper_gem/</guid>
				<description>&lt;p&gt;This is just an example.. but it shows Publisher and Listeners.. both as class and block.&lt;/p&gt;&#xA;&lt;p&gt;A better example: Let&amp;rsquo;s say you have areas defined on the terminal. You call them windows. You want to be able to shift between windows. Only one window can have focus at the time and all keystrokes should be sent there.&lt;/p&gt;&#xA;&lt;p&gt;When one window gets focus.. the other windows must loose focus.&lt;/p&gt;&#xA;&lt;p&gt;There &lt;code&gt;wisper&lt;/code&gt; should be quite useful.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Reading_keys</title>
				<link>https://skapande.org/code/reading_keys/</link>
				<pubDate>Mon, 10 Feb 2025 12:25:50 +0100</pubDate>
				<guid>https://skapande.org/code/reading_keys/</guid>
				<description>&lt;p&gt;Reading keys from the keyboard is a thing of itself.. because no programming language can read the keyboard. Instead they rely on the terminal or the window manager.&lt;/p&gt;&#xA;&lt;p&gt;A terminal key can be read with Ruby by &lt;code&gt;STDIN.getc&lt;/code&gt;.&lt;br&gt;&#xA;If you press Return, the result is &lt;code&gt;\r&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you press an arrow-key, the result is &lt;code&gt;\e&lt;/code&gt;.. and it&amp;rsquo;s the start of an escape sequence. If you read another key, it will return &lt;code&gt;[&lt;/code&gt;.. and the next will return &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt; or &lt;code&gt;D&lt;/code&gt; for the four arrow keys.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Options_parser_again</title>
				<link>https://skapande.org/code/options_parser_again/</link>
				<pubDate>Sat, 08 Feb 2025 12:40:32 +0100</pubDate>
				<guid>https://skapande.org/code/options_parser_again/</guid>
				<description>&lt;p&gt;When I discovered the gem &lt;code&gt;optimist&lt;/code&gt;.. I thought I struck gold. Then I came across &lt;code&gt;optimist_xl&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I started working on my own options parser.. then found &lt;code&gt;rationalist&lt;/code&gt;. It is almost exactly what I wanted to write.&lt;/p&gt;&#xA;&lt;p&gt;Only difference is that I wanted this behaviour:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;opts &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Parse&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Args&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;:namE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;:password_x!&lt;/span&gt;, {&lt;span style=&#34;color:#c3e88d&#34;&gt;default&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;secret&amp;#39;&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;:age&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:int&lt;/span&gt;, {&lt;span style=&#34;color:#c3e88d&#34;&gt;range&lt;/span&gt;: (&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# I defined both the long and short name in the key.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# all lowercase =&amp;gt; first char is the short name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# end with _char =&amp;gt; char is the short name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# capital char =&amp;gt; capital char is the short name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# end with exclamation point =&amp;gt; obligatory argument&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# (pointless mixing with a default value as in my example)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --name -e&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --password -x&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --age -a&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rationalist has the &lt;code&gt;alias&lt;/code&gt; method instead..&lt;br&gt;&#xA;&lt;code&gt;alias: {name: :e, password: :x, age: :a}&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Classes_needs_classes</title>
				<link>https://skapande.org/code/classes_needs_classes/</link>
				<pubDate>Thu, 06 Feb 2025 22:03:35 +0100</pubDate>
				<guid>https://skapande.org/code/classes_needs_classes/</guid>
				<description>&lt;p&gt;To really enjoy classes.. you must work in a language where everything is a class.&lt;/p&gt;&#xA;&lt;p&gt;Otherwise it will be a pain.&lt;/p&gt;&#xA;&lt;p&gt;This is how it should work:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;blue&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Svar: &lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[1;34m&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Vad heter åsnan? &amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Ior&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;blue&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# printout =&amp;gt; &amp;#39;Svar: Ior&amp;#39; (where &amp;#39;Ior&amp;#39; is in bold blue)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Hash_invert</title>
				<link>https://skapande.org/code/hash_invert/</link>
				<pubDate>Sun, 02 Feb 2025 19:49:59 +0100</pubDate>
				<guid>https://skapande.org/code/hash_invert/</guid>
				<description>&lt;p&gt;Inverting a Hash is simple: &lt;code&gt;Hash#invert&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;By inverting: keys become values and values become keys.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve seen some examples of people inverting hashes or doing other tricky things to find the key of a value.&lt;/p&gt;&#xA;&lt;p&gt;For that you use .key(value)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;one&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:uno&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;two&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:doz&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;three&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:tres&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key(&lt;span style=&#34;color:#c3e88d&#34;&gt;:doz&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; :two&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Like in a database.. a key must be unique. A value do not need to be unique. You see the problem?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;cat&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;animal&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;square&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;shape&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;dog&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;animal&amp;#39;&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;invert &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; {&amp;#34;animal&amp;#34; =&amp;gt; :dog, &amp;#34;shape&amp;#34; =&amp;gt; :square}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;do-you-prefer-each_with_object-or-inject&#34;&gt;&#xA;  Do you prefer each_with_object or inject?&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#do-you-prefer-each_with_object-or-inject&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_with_object({}) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;(k,v), res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; (res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; k }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;inject({}) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;m, (k,v) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { (it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; k } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# if you don&amp;#39;t like a 16 char, 3-word method...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:ewo&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:each_with_object&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;ewo({}) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;(k,v), res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; (res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; k }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What you get is values as keys and the key(s) in Array.&lt;br&gt;&#xA;like: &lt;code&gt;{&amp;quot;animal&amp;quot;: [:cat, :dog], &amp;quot;shape&amp;quot;: [:square]}&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ansi_again2</title>
				<link>https://skapande.org/code/ansi_again2/</link>
				<pubDate>Fri, 31 Jan 2025 18:03:04 +0100</pubDate>
				<guid>https://skapande.org/code/ansi_again2/</guid>
				<description>&lt;p&gt;I had the idea that &lt;a href=&#34;../ansi_again&#34; &gt;ansi_again&lt;/a&gt; should not create all methods.. but create them on demand.&lt;/p&gt;&#xA;&lt;p&gt;So.. get rid of&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        define_singleton_method(k) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And store the hash in a variable &lt;code&gt;@cmds = { .. all the procs ..}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Instead we use &lt;code&gt;method_missing&lt;/code&gt; to create methods as they are called:&#xA;I also want to chain method-calls by returning self.. except for methods returning a result.. ie &lt;code&gt;scr_size&lt;/code&gt; &amp;amp; &lt;code&gt;cur_pos?&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ansi_again</title>
				<link>https://skapande.org/code/ansi_again/</link>
				<pubDate>Tue, 28 Jan 2025 18:41:05 +0100</pubDate>
				<guid>https://skapande.org/code/ansi_again/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ansi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;io/console&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# for stdin.raw (cur_pos?)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cls&lt;/span&gt;:      &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;2J&amp;#39;&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  clear entire screen&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cls_l&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1J&amp;#39;&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  clear screen left of cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cls_r&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0J&amp;#39;&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  clear screen right of cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cl_l&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1K&amp;#39;&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  clear line left of cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cl_r&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0K&amp;#39;&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  clear line right of cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cl_ln&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;2K&amp;#39;&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  clear line&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                             hide or show cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur&lt;/span&gt;:      &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;show&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; show ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;?25h&amp;#39;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;?25l&amp;#39;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_n&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%sA&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# cursor North&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_s&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%sB&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# cursor South&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_e&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%sC&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# cursor East&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_w&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%sD&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# cursor West&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_u&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_n(step) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# aliases  Up&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_d&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_s(step) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          Down&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_r&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_e(step) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          Right&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_l&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;step&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;    X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_w(step) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          Left&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_col&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;     &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%sG&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# move to column&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_at&lt;/span&gt;:   &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln, col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;   &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s;%sH&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;ln, col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# print at&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;pat&lt;/span&gt;:      &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln, col, str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s;%sH&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;ln, col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; str },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      cur_pos?: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# get cursor position&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $stdin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;raw {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;stdin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          $stdout &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[6n&amp;#34;&lt;/span&gt;; $stdout&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;flush&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; (c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; stdin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;getc) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;R&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;; res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; c &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; c; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;match &lt;span style=&#34;color:#86e1fc&#34;&gt;/(?&amp;lt;ln&amp;gt;\d+);(?&amp;lt;col&amp;gt;\d+)/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:ln&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:col&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..].&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#             :bar, :line, :block or default (not given)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# shape can be :block, :line or :bar. blink: true or FALSE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_shape&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;shape, &lt;span style=&#34;color:#c3e88d&#34;&gt;blink&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# cursor shape and blink&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; shape ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          (&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(block line bar)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;index(shape) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; (blink ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)) : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s q&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_color&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# cursor color&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;]12;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\a&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^#[0-9A-F]{6}$/i&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_sto&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;system&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tput sc&amp;#39;&lt;/span&gt;) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# store cursor position&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;cur_rec&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;system&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tput rc&amp;#39;&lt;/span&gt;) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# recall cursor position&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;scr_sto&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;system&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tput smcup&amp;#39;&lt;/span&gt;) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# store screen&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;scr_rec&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;system&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tput rmcup&amp;#39;&lt;/span&gt;) }, &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# recall screen&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# columns and lines of terminal window&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;scr_size&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;`tput cols`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i, &lt;span style=&#34;color:#c3e88d&#34;&gt;`tput lines`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# init and de-init (not required)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;init&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; { X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scr_sto; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cls; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur(&lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;) },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;de_init&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scr_rec; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_shape; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_color(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#FFFFFF&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        define_singleton_method(k) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# print ESC method&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =============================================================================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Usage:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ansi&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;init &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                        save screen, clear screen, hide cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cols, lines &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scr_size &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      get screen size (columns, lines)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_at(&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;); &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;HEJ&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  position cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pat(&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;HEJ!!&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#         position cursor and print&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pos &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_pos? &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#              get cursor position&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; (%s, %s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;ln, pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; red, blinking bar cursor&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur(&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                   show cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_color(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;#FF0000&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#        set cursor color&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cur_shape(&lt;span style=&#34;color:#c3e88d&#34;&gt;:line&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;blink&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# set cursor to steady bar&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;de_init &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                     restore screen, standard cursor visible&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Useless_class</title>
				<link>https://skapande.org/code/useless_class/</link>
				<pubDate>Sun, 26 Jan 2025 20:20:59 +0100</pubDate>
				<guid>https://skapande.org/code/useless_class/</guid>
				<description>&lt;p&gt;I wrote a variable storage class that remembers previous values.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Memory&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;erik&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;erik&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;filip&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;filip&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# What value did &amp;#39;name&amp;#39; have before?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name_old &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;erik&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# numbers BEFORE a random number is 10 or 20&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sample_old &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;include?(X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sample &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;sample)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin SAMPLE OUTPUT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&amp;#34;erik&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&amp;#34;filip&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&amp;#34;erik&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;18&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;20&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;15&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Midi_keyboard</title>
				<link>https://skapande.org/code/midi_keyboard/</link>
				<pubDate>Sat, 25 Jan 2025 20:39:32 +0100</pubDate>
				<guid>https://skapande.org/code/midi_keyboard/</guid>
				<description>&lt;p&gt;Using &lt;code&gt;aconnect&lt;/code&gt; and &lt;code&gt;aseqdump&lt;/code&gt; to make a simple terminal piano keyboard.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s just a sketch.. version 0.0.1.&lt;/p&gt;&#xA;&lt;h4 id=&#34;todo&#34;&gt;&#xA;  TODO&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#todo&#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;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;detect screenwidth&lt;/li&gt;&#xA;&lt;li&gt;more fullsize keyboard&lt;/li&gt;&#xA;&lt;li&gt;update &amp;lsquo;chords&amp;rsquo; on release&lt;/li&gt;&#xA;&lt;li&gt;detect &amp;lsquo;hung&amp;rsquo; keys&lt;/li&gt;&#xA;&lt;li&gt;output intervals and chord-names&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 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;/h4&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;set&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;open3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;acon &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;`aconnect -i`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scan(&lt;span style=&#34;color:#86e1fc&#34;&gt;/client (\d+): &amp;#39;(.*?)&amp;#39;/&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Select Instrument by number :&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;acon&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;[%s] %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PORT&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;gets&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chomp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PIANO&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;DATA&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;read&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;WHITE&lt;/span&gt;,&lt;span style=&#34;color:#ff966c&#34;&gt;BLACK&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;6&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;No such Instrument&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; inst &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; acon&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PORT&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wr, &lt;span style=&#34;color:#ff966c&#34;&gt;RD&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Open3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;popen2(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;aseqdump -p &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PORT&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;); wr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;close&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;cls&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[2J&amp;#34;&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;cursor&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;show&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; show ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[?25h&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[?25l&amp;#34;&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;at&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;l,c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;l&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;H&amp;#34;&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;red&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[37;41m&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[0m&amp;#34;&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;rat&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;l,c,str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;at&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;l,c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;red&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;piano&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;at&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;PIANO&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;keys&lt;/span&gt;:   &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;held&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    held&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;BLACK&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(key) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;BLACK&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;index(key) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;, (i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;WHITE&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;index(key)) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;CDEFGAB&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;rat&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;lc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;twelve&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt; }},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;bye&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#ff966c&#34;&gt;RD&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;close; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cursor&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;keys)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;values)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;trap&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;SIGINT&amp;#39;&lt;/span&gt;) { X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bye&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cls&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cursor&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;piano&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;held &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Set&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# main loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; line &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;RD&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; line &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/Note (on|off).*?note (\d+)/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;on&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? held&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;add($2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i) : held&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete($2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    held&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty? ? X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;piano&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; : X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;keys&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;twelve&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;held&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bye&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;__END__&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;|  |█| |█|  |  |█| |█| |█|  |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;|  |█| |█|  |  |█| |█| |█|  |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;|   |   |   |   |   |   |   |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;| C | D | E | F | G | A | B |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Code_review</title>
				<link>https://skapande.org/code/code_review/</link>
				<pubDate>Wed, 22 Jan 2025 22:20:43 +0100</pubDate>
				<guid>https://skapande.org/code/code_review/</guid>
				<description>&lt;p&gt;Saw some code &lt;a href=&#34;https://thelinuxcode.com/get-the-most-out-of-ruby-by-using-the-select-map-and-reduce-methods-together/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here&lt;/a&gt; and modified it a bit.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;employee &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:age&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:role&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:salary&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;employees &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  employee&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Jane&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;34&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:designer&lt;/span&gt;,   &lt;span style=&#34;color:#ffc777&#34;&gt;75_000&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  employee&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;John&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;29&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:developer&lt;/span&gt;,  &lt;span style=&#34;color:#ffc777&#34;&gt;90_000&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  employee&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Jill&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;38&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:developer&lt;/span&gt;,  &lt;span style=&#34;color:#ffc777&#34;&gt;80_000&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; employees&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;select { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;role &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:developer&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;salary }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;After map: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#             =&amp;gt; &amp;#34;After map: [90000, 80000]&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#             =&amp;gt; 170000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; employees&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;select { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;role &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:developer&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;After map: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%.2f&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;fdiv(it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#             =&amp;gt; &amp;#34;After map: [29, 38]&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#             =&amp;gt; 33.50&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Locker</title>
				<link>https://skapande.org/code/locker/</link>
				<pubDate>Tue, 21 Jan 2025 19:09:33 +0100</pubDate>
				<guid>https://skapande.org/code/locker/</guid>
				<description>&lt;p&gt;I often code when going to sleep. I think about a problem or a subject and how I would attack it.. solve it.&lt;/p&gt;&#xA;&lt;p&gt;In another project, I had the need for Ruby to be &amp;ldquo;temporary typed&amp;rdquo;. I can&amp;rsquo;t do that! But I can do something that works for me.&lt;/p&gt;&#xA;&lt;p&gt;This is not the code.. it&amp;rsquo;s the instance:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;mw_locker.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# first all variables using this class must be defined.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# They have a type (or types).&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# They can use the &amp;#39;filter&amp;#39;-property.. a Range or Array of values.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Also a &amp;#39;regex&amp;#39;-property.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# finally an optional block (or &amp;#39;proc&amp;#39;-property of Proc or Lambda)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# It&amp;#39;s mainly a setter/getter. All checks and procs are done when set.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Locker&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TypeCreate&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  age &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;filter&lt;/span&gt;: (&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  name_age(&lt;span style=&#34;color:#c3e88d&#34;&gt;Array&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  to_bin(&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# using proc: you can add proc or lambda&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# to_bin String, proc: -&amp;gt;(i) {i.to_s(2)}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# to_bin String, proc: proc {|i| i.to_s(2)}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# filter can be Range or Array (of allowed values)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Range can be inclusive or not.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  regplate &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;regex&lt;/span&gt;: &lt;span style=&#34;color:#86e1fc&#34;&gt;/^[A-ZÅÄÖ]{3}\s*\d{2}[0-9A-ZÅÄÖ]$/i&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  testa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TrueClass&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;FalseClass&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  result &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;NilClass&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  copy(&lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; v }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  koko &lt;span style=&#34;color:#c3e88d&#34;&gt;:NoTypecheck&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  person(&lt;span style=&#34;color:#c3e88d&#34;&gt;:NoTypecheck&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;stc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; stc&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name, X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;__parse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -------------------------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name_age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle:21&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name_age &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [&amp;#34;Olle&amp;#34;, 21]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# X.age = 101 # =&amp;gt; Exceptions::LockerFilterError&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_bin &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_bin &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;111&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;h &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Otto&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;age&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;34&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;result &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# String is allowed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;result &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:age&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  Integer is allowed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;result &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:city&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# nil is allowed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# p X.apa # =&amp;gt; Exceptions::LockerKeyError&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;copy &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Stig&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;copy &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Stig&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Stig&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;regplate &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;KKC 338&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;regplate &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;bbo33z&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;begin&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;regplate &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ABC-123&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Exceptions&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;LockerRegexError&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# .name converts any value to String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;8&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# .koko do not check for type&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;koko &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;koko &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;koko &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:hejsan&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# .person do no type-checking&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ..recieves a Struct and runs the block&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# setting .name and .age&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:Heliga_Lurban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# populates the struct with .name and .age&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;person &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:age&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s is %s years old.&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;person&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name, X&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;person&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The thing that made me want his came from this:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Then_tap</title>
				<link>https://skapande.org/code/then_tap/</link>
				<pubDate>Thu, 16 Jan 2025 18:28:25 +0100</pubDate>
				<guid>https://skapande.org/code/then_tap/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_accessor&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:donkey&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @donkey &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:Eyore&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_string&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @donkey&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rev &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(str) { str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;reverse }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# `tap` is yielding Apa.new&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ap&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; ap&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;donkey &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:Roi&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;donkey &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                            =&amp;gt; :Roi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# `then` is same as `yield_self`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  and is yielding the block&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;class } &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                =&amp;gt; Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:to_string&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tap { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; it&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;class } &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;then(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;rev)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;upcase &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#                               =&amp;gt; &amp;#34;IOR&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Code is just an example of class-method; proc (lambda) and the use of &lt;code&gt;tap&lt;/code&gt; and &lt;code&gt;then&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Abbrev</title>
				<link>https://skapande.org/code/abbrev/</link>
				<pubDate>Tue, 14 Jan 2025 20:47:33 +0100</pubDate>
				<guid>https://skapande.org/code/abbrev/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;abbrev&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;parameter&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;subject&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Kalle Kula&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;parm&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:ost&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @keys &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;keys&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;abbrev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@keys&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt; @hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@keys&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;parameter &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;11&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;parm &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      =&amp;gt; [:ost]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;param &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     =&amp;gt; &amp;#34;11&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;par &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#       =&amp;gt; &amp;lt;&amp;lt; NO KEY&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;p &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#         =&amp;gt; &amp;lt;&amp;lt; NO KEY&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;subj &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      =&amp;gt; &amp;#34;Kalle Kula&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;su &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#        =&amp;gt; &amp;#34;Kalle Kula&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sub &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#       =&amp;gt; &amp;#34;Kalle Kula&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The class holds a Hash with three keys: &lt;code&gt;parameter&lt;/code&gt;, &lt;code&gt;subject&lt;/code&gt; and &lt;code&gt;parm&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ior_xml</title>
				<link>https://skapande.org/code/ior_xml/</link>
				<pubDate>Thu, 09 Jan 2025 20:06:38 +0100</pubDate>
				<guid>https://skapande.org/code/ior_xml/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    keys &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    kw&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; keys &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; %s=&amp;#34;%s&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    arg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;lt;%s%s&amp;gt;%s&amp;lt;/%s&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, keys, arg, &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;o &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fx &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;effect                       &lt;span style=&#34;color:#c3e88d&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Reverb&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#c3e88d&#34;&gt;wetDryMix&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#c3e88d&#34;&gt;roomSize&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fx &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;effects fx&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bus &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bus fx,                     &lt;span style=&#34;color:#c3e88d&#34;&gt;busVolume&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#c3e88d&#34;&gt;output1Target&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;MAIN_OUTPUT&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#c3e88d&#34;&gt;output2Target&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;AUX_STEREO_OUTPUT_1&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#c3e88d&#34;&gt;output1Volume&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                    &lt;span style=&#34;color:#c3e88d&#34;&gt;output2Volume&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;nokogiri&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Nokogiri&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;XML&lt;/span&gt;(bus)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;bus busVolume=&amp;#34;0.5&amp;#34; output1Target=&amp;#34;MAIN_OUTPUT&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#    output2Target=&amp;#34;AUX_STEREO_OUTPUT_1&amp;#34; output1Volume=&amp;#34;0.8&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#    output2Volume=&amp;#34;0.5&amp;#34;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;lt;effects&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     &amp;lt;effect type=&amp;#34;Reverb&amp;#34; wetDryMix=&amp;#34;0.5&amp;#34; roomSize=&amp;#34;0.5&amp;#34;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;lt;/effects&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;/bus&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ==========================================================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Allows for stuff like this:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;oo &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bindings &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;groupIndex&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;translationOutputMin&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;translationOutputMax&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              { &lt;span style=&#34;color:#c3e88d&#34;&gt;groupIndex&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;translationOutputMin&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;translationOutputMax&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;kw&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  oo&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;binding    &lt;span style=&#34;color:#c3e88d&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:amp&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;level&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:group&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;parameter&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;AMP_VOLUME&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d&#34;&gt;translation&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:linear&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Nokogiri&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;XML&lt;/span&gt;(oo&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;bindings)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;x&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;lt;binding type=&amp;#34;amp&amp;#34; level=&amp;#34;group&amp;#34; parameter=&amp;#34;AMP_VOLUME&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     translation=&amp;#34;linear&amp;#34; groupIndex=&amp;#34;0&amp;#34; translationOutputMin=&amp;#34;0&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     translationOutputMax=&amp;#34;1&amp;#34;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   &amp;lt;binding type=&amp;#34;amp&amp;#34; level=&amp;#34;group&amp;#34; parameter=&amp;#34;AMP_VOLUME&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     translation=&amp;#34;linear&amp;#34; groupIndex=&amp;#34;1&amp;#34; translationOutputMin=&amp;#34;1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     translationOutputMax=&amp;#34;0&amp;#34;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;/x&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Stupid_and_clever</title>
				<link>https://skapande.org/code/stupid_and_clever/</link>
				<pubDate>Tue, 07 Jan 2025 19:43:03 +0100</pubDate>
				<guid>https://skapande.org/code/stupid_and_clever/</guid>
				<description>&lt;p&gt;I actually don&amp;rsquo;t know what to think about this code. It&amp;rsquo;s stupid and clever.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s stupid where it needs to be clever and clever where it doesn&amp;rsquo;t matter.&lt;/p&gt;&#xA;&lt;p&gt;Took 1:44 to write.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;open3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     This requires &amp;#39;xgamma&amp;#39; and &amp;#39;xsct&amp;#39; to be installed.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     arch: sudo pacman -S xgamma&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#           sudo pacman -S xsct&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Get&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;xc&lt;/span&gt;(s)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    res, ec &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Open3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;capture2e s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ec&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;exitstatus&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;zero? ? res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chomp : &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; xc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xgamma&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;scan(&lt;span style=&#34;color:#86e1fc&#34;&gt;/(\w+)\s+(\d\.\d+)/&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;transform_keys {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;downcase&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:temp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:brightness&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      xc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xsct&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/(\d+)\s+(\d\.\d+)/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;split&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Screen&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;data )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(gamma temp bright tb)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;send&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;_%s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw); @val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_gamma&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;kw)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    kw&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;xc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xgamma -%sgamma %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(red green blue)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(k)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_temp&lt;/span&gt;(tmp) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;xc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xsct %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; tmp) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_bright&lt;/span&gt;(val) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;xc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xsct %s %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:temp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_tb&lt;/span&gt;(tb) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Get&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;xc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xsct %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; tb) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Usage =================================================================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Screen&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gamma(&lt;span style=&#34;color:#c3e88d&#34;&gt;blue&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;red&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gamma(&lt;span style=&#34;color:#c3e88d&#34;&gt;blue&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gamma(&lt;span style=&#34;color:#c3e88d&#34;&gt;red&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;temp(&lt;span style=&#34;color:#ffc777&#34;&gt;4000&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;bright(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;scr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tb &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Verbose</title>
				<link>https://skapande.org/code/verbose/</link>
				<pubDate>Thu, 02 Jan 2025 22:27:39 +0100</pubDate>
				<guid>https://skapande.org/code/verbose/</guid>
				<description>&lt;p&gt;This is just a little thing.. but I find it useful:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;VRB&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;vrb&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c099ff&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;VRB&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When having this in your code you can method-block any code that should just run the VRB is true.&lt;/p&gt;&#xA;&lt;p&gt;Like:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;names &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(allan ingolf)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vrb {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Names:&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; it }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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>Pols</title>
				<link>https://skapande.org/code/pols/</link>
				<pubDate>Thu, 02 Jan 2025 18:47:13 +0100</pubDate>
				<guid>https://skapande.org/code/pols/</guid>
				<description>&lt;p&gt;I wrote a wrapping-class over Slop (Simple Lightweight Option Parser).&lt;br&gt;&#xA;Mine is called: &lt;code&gt;Pols&lt;/code&gt; (&lt;strong&gt;Parse Optio Lectori Salutem&lt;/strong&gt;)&lt;/p&gt;&#xA;&lt;p&gt;This is how it is used..&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;pols&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Usage ==========================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --name|-n (type: String, default: &amp;#39;olle&amp;#39;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --edit|-e (type: String)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --delete|-d (type: String)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --verbose|-b (type: Bool)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --test|-x (type: Bool)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --number|-u (type: Int, required)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pols &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Pols&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  str &lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;default&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olle&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  str &lt;span style=&#34;color:#c3e88d&#34;&gt;:edit&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:delete&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  flg &lt;span style=&#34;color:#c3e88d&#34;&gt;:verBose&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:test_x&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  int &lt;span style=&#34;color:#c3e88d&#34;&gt;:nUmber&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;required&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; pols&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:number&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; pols&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;edit?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; pols&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#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>Ruby_3.4.1</title>
				<link>https://skapande.org/code/ruby_3.4.1/</link>
				<pubDate>Wed, 25 Dec 2024 21:08:11 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_3.4.1/</guid>
				<description>&lt;p&gt;Installed Ruby 3.4.1&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pax</title>
				<link>https://skapande.org/code/pax/</link>
				<pubDate>Sun, 22 Dec 2024 19:39:21 +0100</pubDate>
				<guid>https://skapande.org/code/pax/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#!/usr/bin/env ruby&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# frozen_string_literal: true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Pax&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @tmp &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @rxc &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Regexp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;\&amp;lt;%\s*(.*?)\s*%\&amp;gt;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;m&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @rxt &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Regexp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;\&amp;lt;@\s(\w+)*\s*@\&amp;gt;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d&#34;&gt;bnd&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;TOPLEVEL_BINDING&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;end_with? &lt;span style=&#34;color:#c3e88d&#34;&gt;?=&lt;/span&gt;) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      (@tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[..-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;to_sym&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (@tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? parse(@tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, bnd) : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;parse&lt;/span&gt;(mall, bnd)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; mall&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dup&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;strip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gsub!(@rxc) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;$1&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;, bnd) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gsub!(@rxt) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; parse(@tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;$1&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, bnd) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Pax&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pers &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(| &amp;lt;% &amp;#39;%10s&amp;#39; % name %&amp;gt; | &amp;lt;% &amp;#39;%5s&amp;#39; % age %&amp;gt; | &amp;lt;% &amp;#39;%10s&amp;#39; % city %&amp;gt; |)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;line &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(&amp;lt;% puts &amp;#39;-&amp;#39; * 35 %&amp;gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(Ulla 45 Jönköping)&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(Bert 32 Karlstad)&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(Lisen 28 Hjo)&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(Zoltan 72 Vimmerby)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;line&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;pers&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age, city &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;pers&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pers &lt;span style=&#34;color:#c3e88d&#34;&gt;bnd&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;line&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  -----------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  |       Ulla |    45 |  Jönköping |&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  |       Bert |    32 |   Karlstad |&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  |      Lisen |    28 |        Hjo |&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  |     Zoltan |    72 |   Vimmerby |&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  -----------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Oxcart</title>
				<link>https://skapande.org/code/oxcart/</link>
				<pubDate>Fri, 20 Dec 2024 19:21:32 +0100</pubDate>
				<guid>https://skapande.org/code/oxcart/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;mw_oxcart.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Before&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;cart {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:names&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(olle kalle pelle)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;upcase }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;:mp&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar, &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:just&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%10s&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;:op&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s%s%s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;just(n), &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;just(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:add&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:+&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:mult&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:*&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:str&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hej baberiba!&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:str2&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hej baberiba.. %s!&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s är %s år.&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:Pall&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:Mall&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:upcase&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     =&amp;gt; [&amp;#34;OLLE&amp;#34;, &amp;#34;KALLE&amp;#34;, &amp;#34;PELLE&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     =&amp;gt; [&amp;#34;OLLE&amp;#34;, &amp;#34;KALLE&amp;#34;, &amp;#34;PELLE&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;mp &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names, &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:uc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   =&amp;gt; [&amp;#34;OLLE&amp;#34;, &amp;#34;KALLE&amp;#34;, &amp;#34;PELLE&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;str &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#            =&amp;gt; &amp;#34;hej baberiba&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;str2 &lt;span style=&#34;color:#c3e88d&#34;&gt;:koskit&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   =&amp;gt; &amp;#34;Hej baberiba.. koskit!&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d&#34;&gt;:anna&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  =&amp;gt; &amp;#34;Anna är 7 år.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;bo&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join &lt;span style=&#34;color:#c3e88d&#34;&gt;?,&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#  =&amp;gt; &amp;#34;olle,kalle,pelle,bo&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pop &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#      =&amp;gt; &amp;#34;bo&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;last &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#     =&amp;gt; &amp;#34;pelle&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(ewa ragnhild lise-lott)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#          =&amp;gt; [&amp;#34;ewa&amp;#34;, &amp;#34;ragnhild&amp;#34;, &amp;#34;lise-lott&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;op &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;       ewa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;       ---&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  ragnhild&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;  --------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; lise-lott&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; ---------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ( 3 + 2 = 5 / 3 * 2 = 6 )&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(add mult)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(&lt;span style=&#34;color:#ff966c&#34;&gt;Ox&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(_1), &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 6&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Erb_templates</title>
				<link>https://skapande.org/code/erb_templates/</link>
				<pubDate>Wed, 18 Dec 2024 19:13:54 +0100</pubDate>
				<guid>https://skapande.org/code/erb_templates/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;erb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Templates&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @tmp &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    instance_exec &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; bl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, str) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ERB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new str )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;x&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, bnd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TOPLEVEL_BINDING&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;result(bnd) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;tmp&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Templates&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Examples =====================================================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; tmp {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:data&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;%(&amp;lt;%= name %&amp;gt; is &amp;lt;%= age %&amp;gt; years old.)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:prov&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;~&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TEMPLATE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;% test &lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;      &amp;lt;% 5.times { puts name } %&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;TEMPLATE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Laban&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d&#34;&gt;:data&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Laban is 8 years old.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Anki&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;88&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d&#34;&gt;:data&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Laban is 8 years old.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d&#34;&gt;:data&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Anki is 88 years old.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# --------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;50&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d&#34;&gt;:prov&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Laban is 8 years old.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Anki is 88 years old.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Laban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Laban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Laban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Laban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Laban&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;made-a-module&#34;&gt;&#xA;  Made a module&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#made-a-module&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# filename: mw_template.rb&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Template&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;erb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Tmp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @tmp &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {}; instance_exec &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, str) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ERB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new str )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, bnd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;TOPLEVEL_BINDING&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? @tmp&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;result(bnd) : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;tmp&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Tmp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;module_function&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:tmp&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;usage&#34;&gt;&#xA;  Usage:&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#usage&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;mw_template.rb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Tmp&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Template&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tmp {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:prov&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;%(Name: &amp;lt;%= name %&amp;gt;, Age: &amp;lt;%= age %&amp;gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:test&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;%(&amp;lt;% test %&amp;gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Olle&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Tmp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;prov &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Name: Olle, Age: 8&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# binding&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Kajsa&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Tmp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;prov(&lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Tmp&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;test &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;Name: Kajsa, Age: 4&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Ruby_erb</title>
				<link>https://skapande.org/code/ruby_erb/</link>
				<pubDate>Tue, 17 Dec 2024 19:28:15 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_erb/</guid>
				<description>&lt;p&gt;Nothing special.. just me wanna see if Raspberry is running on the network before I bother to shut it down.&lt;/p&gt;&#xA;&lt;p&gt;But I&amp;rsquo;be been thinking about strings.. and string templates.&lt;br&gt;&#xA;So, I have a little &lt;code&gt;erb&lt;/code&gt; in there.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#!/usr/bin/env ruby&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# frozen_string_literal: true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;in&lt;/span&gt;? &lt;span style=&#34;color:#c099ff&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;?;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Netz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;open3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;erb&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_accessor&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:ip&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:port&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:host&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;ip&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;192.168.8.3&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;22&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;host&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;mw&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @ip, @port, @host, @bnd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ip, port, host, &lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @temps &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;nc&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;ERB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;nc -zw1 &amp;lt;%= @ip %&amp;gt; &amp;lt;%= @port %&amp;gt;&amp;#39;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;ssh&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;ERB&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ssh &amp;lt;%= @host %&amp;gt;@&amp;lt;%= @ip %&amp;gt; &amp;#34;sudo systemctl &amp;lt;%= cmd.to_s %&amp;gt;&amp;#34;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# faster than `nmap` or `systemctl is-system-running`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;alive?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( ocap(@temps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:nc&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;result(@bnd)) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;sctl&lt;/span&gt;(cmd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:poweroff&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(poweroff reboot)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;in?(cmd) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ocap(@temps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:ssh&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;result(&lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt;)) : &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ocap&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Open3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;capture2e(s)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;exitstatus &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Examples&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netz &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Netz&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# p netz.ip&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# p netz.port&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# p netz.host&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# netz.ip = &amp;#39;192.168.8.2&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# p netz.alive? # =&amp;gt; true (if Raspberry is running)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# netz.sctl(:reboot) if netz.alive?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;netz&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sctl &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; netz&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;alive? &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# poweroff if alive&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The thinking I&amp;rsquo;ve been doing on strings is.. &lt;strong&gt;THERE&amp;rsquo;S A LOT OF &amp;lsquo;EM !!!&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Xinput</title>
				<link>https://skapande.org/code/xinput/</link>
				<pubDate>Sat, 14 Dec 2024 18:30:55 +0100</pubDate>
				<guid>https://skapande.org/code/xinput/</guid>
				<description>&lt;p&gt;I wanted a simple way of turning off the built in keyboard and the touchpad on my laptop while using a USB keyboard and a trackball.&lt;/p&gt;&#xA;&lt;p&gt;This is sort of the skeleton for this.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#!/usr/bin/env ruby&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# frozen_string_literal: true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;%w(io/console timeout optimist_xl hash_dot)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;¡&lt;/span&gt;t&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;¡&lt;/span&gt;t }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;in&lt;/span&gt;? &lt;span style=&#34;color:#c099ff&#34;&gt;include&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;?;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ignore&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Xin&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:dev&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @dev &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;sc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;id&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;zip(sc(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;))&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;id?&lt;/span&gt;(rex)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @dev&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/(\d+)/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;rex&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tr(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;_&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(n, &lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(enable disable)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;in?(n) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (&lt;span style=&#34;color:#c3e88d&#34;&gt;system&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;xinput %s %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;n, &lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) : &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;toggle&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( enabled?(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) ? disable(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) : enable(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;enabled?&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ( &lt;span style=&#34;color:#c3e88d&#34;&gt;`xinput list &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/device is disabled/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt; : &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;disabled?&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!&lt;/span&gt;enabled?(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;confirm_disable&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;, sec&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    disable(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Disabled.. will revert in 5 seconds unless you press a key.&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Timeout&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;timeout(sec) { &lt;span style=&#34;color:#ff966c&#34;&gt;STDIN&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;getch } &lt;span style=&#34;color:#c099ff&#34;&gt;rescue&lt;/span&gt; enable(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;private&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;sc&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;`xinput list --&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;s&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;-only`&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#86e1fc&#34;&gt;/\n/&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;        Example usage&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;        =============&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin --disable &amp;#39;Optical Mouse&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin --list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            2 =&amp;gt; Virtual core pointer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            4 =&amp;gt; Virtual core XTEST pointer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            3 =&amp;gt; Virtual core keyboard&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            5 =&amp;gt; Virtual core XTEST keyboard&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            6 =&amp;gt; Power Button&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            7 =&amp;gt; Power Button&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            8 =&amp;gt; Sleep Button&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            10 =&amp;gt; AT Translated Set 2 keyboard&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            ∼ 9 =&amp;gt; ∼ USB Optical Mouse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin --id &amp;#39;AT Translated&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            ID =&amp;gt; 10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin --toggle 10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin --enable 9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin --disable &amp;#39;AT Translated&amp;#39; --confirm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;            Disabled.. will revert in 5 seconds unless you press a key.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;        short&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;        =====&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin -d Mouse&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin -t 10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin -i Set_2    Underscore translates to Space&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          &amp;gt; xin -e 8 -c&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xin &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Xin&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;paq     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(s) { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; s; &lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;do_list &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;{ xin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dev&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s =&amp;gt; %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}; &lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;do_id   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt;) { xin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;id? &lt;span style=&#34;color:#c3e88d&#34;&gt;id&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;do_cmd  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(cmd, arg) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  arg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; xin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;id?(arg) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; arg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d+$/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  xin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s, arg); &lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;op &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;OptimistXL&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;options &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  opt &lt;span style=&#34;color:#c3e88d&#34;&gt;:enable&lt;/span&gt;,  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;enable device&amp;#39;&lt;/span&gt;,        &lt;span style=&#34;color:#c3e88d&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  opt &lt;span style=&#34;color:#c3e88d&#34;&gt;:disable&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;disable device&amp;#39;&lt;/span&gt;,       &lt;span style=&#34;color:#c3e88d&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  opt &lt;span style=&#34;color:#c3e88d&#34;&gt;:toggle&lt;/span&gt;,  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;toggle device&amp;#39;&lt;/span&gt;,        &lt;span style=&#34;color:#c3e88d&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  opt &lt;span style=&#34;color:#c3e88d&#34;&gt;:id&lt;/span&gt;,      &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;fetch id from regex&amp;#39;&lt;/span&gt;,  &lt;span style=&#34;color:#c3e88d&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  opt &lt;span style=&#34;color:#c3e88d&#34;&gt;:list&lt;/span&gt;,    &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;list devices&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  opt &lt;span style=&#34;color:#c3e88d&#34;&gt;:confirm&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;confirmed disable&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_dot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;do_list&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;                             &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;paq&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ID =&amp;gt; %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; do_id&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;id&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;        &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;id&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;do_cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:confirm_disable&lt;/span&gt;, op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;disable&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;confirm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;disable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(enable disable toggle)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { do_cmd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;_1, op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; op&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#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>Ruby_3.4</title>
				<link>https://skapande.org/code/ruby_3.4/</link>
				<pubDate>Thu, 12 Dec 2024 21:41:39 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_3.4/</guid>
				<description>&lt;p&gt;Installed Ruby_3.4.0-rc1 from tar.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Assoc</title>
				<link>https://skapande.org/code/assoc/</link>
				<pubDate>Tue, 10 Dec 2024 18:20:43 +0100</pubDate>
				<guid>https://skapande.org/code/assoc/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:one&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;assoc(&lt;span style=&#34;color:#c3e88d&#34;&gt;:one&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..][&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; [1, 2, 3]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:two&lt;/span&gt;, {&lt;span style=&#34;color:#c3e88d&#34;&gt;a&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:allan&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;b&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:bengt&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;assoc(&lt;span style=&#34;color:#c3e88d&#34;&gt;:two&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..][&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; {:a =&amp;gt; :allan, :b =&amp;gt; :bengt}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So - with this one command - an Array can be used as a Hash.&lt;/p&gt;&#xA;&lt;p&gt;Add to that the plethora of Array methods (including &lt;code&gt;rassoc&lt;/code&gt;); the possibility to turn a array into an enumerator.. and you see you can go far beyond Hashes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Regex_named_capture</title>
				<link>https://skapande.org/code/regex_named_capture/</link>
				<pubDate>Tue, 03 Dec 2024 18:05:35 +0100</pubDate>
				<guid>https://skapande.org/code/regex_named_capture/</guid>
				<description>&lt;p&gt;A named capture is defined like this: &lt;code&gt;?&amp;lt;name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you want to use &lt;code&gt;=~&lt;/code&gt; in Ruby - and use named capture - you need to put the regex expression to the left.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Arne: 24&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^(?&amp;lt;name&amp;gt;\w+):\s+(?&amp;lt;age&amp;gt;\d+)$/&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# you have access to two new variables:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   name &amp;amp; age&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;name: %s, age: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, age&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# THIS WILL NOT WORK:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# data =~ /^(?&amp;lt;name&amp;gt;\w+):\s+(?&amp;lt;age&amp;gt;\d+)$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;find-out&#34;&gt;&#xA;  find out..&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#find-out&#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;What if the variable is a global? Or a constant?&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bash_history</title>
				<link>https://skapande.org/code/bash_history/</link>
				<pubDate>Tue, 03 Dec 2024 15:03:02 +0100</pubDate>
				<guid>https://skapande.org/code/bash_history/</guid>
				<description>&lt;h2 id=&#34;getting-date-time-in-bash-history&#34;&gt;&#xA;  Getting date-time in bash history:&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#getting-date-time-in-bash-history&#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;&lt;em&gt;Add to end of .bashrc&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;shopt&lt;/span&gt; -s histappend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PROMPT_COMMAND&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;history -n; history -a&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;unset&lt;/span&gt; HISTFILESIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;export&lt;/span&gt; HISTTIMEFORMAT&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;%F %T &amp;gt; &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;export&lt;/span&gt; HISTSIZE&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Do &lt;code&gt;. .bashrc&lt;/code&gt; from home to re-source (or &lt;code&gt;source path/to/.bashrc&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Test with &lt;code&gt;history&lt;/code&gt; or &lt;code&gt;Ctrl-R&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;parsing-bash_history&#34;&gt;&#xA;  parsing .bash_history&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#parsing-bash_history&#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;&lt;code&gt;.bash_history&lt;/code&gt; now has entries looking like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#1733237692&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nvim ~/.bash_history&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I didn&amp;rsquo;t know what the hash-number was.. but guessed epoch. That was correct. So parsing can look like this:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Shutdown_raspberry</title>
				<link>https://skapande.org/code/shutdown_raspberry/</link>
				<pubDate>Sun, 01 Dec 2024 15:33:53 +0100</pubDate>
				<guid>https://skapande.org/code/shutdown_raspberry/</guid>
				<description>&lt;p&gt;A clean shutdown of raspberry over LAN when my main computer shuts off.&lt;/p&gt;&#xA;&lt;p&gt;The simplest solution:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;make is possible to login to raspberry over ssh without entering a passphrase. This is done with &lt;code&gt;ssh_keygen&lt;/code&gt; and &lt;code&gt;ssh_copy_id&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;sending a command after login. Well.. ssh takes a command. You can do this: &lt;code&gt;ssh user@host &#39;sudo shutdown -h now&#39;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Make your own version of &lt;code&gt;shutdown&lt;/code&gt; on the main computer that first run the ssh-command and then calls the proper, local shutdown.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;When you execute &lt;code&gt;my_shutdown -h now&lt;/code&gt;.. the script (Ruby in my case) first do the system call &lt;code&gt;system %(ssh user@host &#39;sudo shutdown #{*args}&#39;)&lt;/code&gt;, then do the same locally.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Prime_minister</title>
				<link>https://skapande.org/code/prime_minister/</link>
				<pubDate>Sun, 24 Nov 2024 18:10:36 +0100</pubDate>
				<guid>https://skapande.org/code/prime_minister/</guid>
				<description>&lt;p&gt;Take a name and replace A with 1, B with 2 .. and so on.&lt;/p&gt;&#xA;&lt;p&gt;Add the numbers. If it is a prime number.. the name is a prime name.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;prime&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;colorize&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;prime_minister?&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;upcase&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gsub(&lt;span style=&#34;color:#86e1fc&#34;&gt;/[^A-Z]/&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;codepoints&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;64&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;%w(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Donald_Trump&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Kamala_Harris&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Joe_Biden&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Jesus_Christ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Adolf_Hitler&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Sherlock_Holmes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Scooby_Doo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Doctor_Watson&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Dr_Mengele&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Joe_Hill&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  John_Travolta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Ringo_Starr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  John_Lennon&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  George_Bush&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Ronald_Reagan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Jimmy_Carter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Richard_Nixon&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  John_F_Kennedy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  prime&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  sixty_one&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Matt_Gaetz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Wisconsin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Alabama&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Texas&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;  Ohio&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; prime_minister?(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;colorize(val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;prime? ? &lt;span style=&#34;color:#c3e88d&#34;&gt;:light_blue&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;:red&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s : %s (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, val, val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;prime?&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#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; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Donald_Trump : &lt;span style=&#34;color:#ffc777&#34;&gt;138&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Kamala_Harris : &lt;span style=&#34;color:#ffc777&#34;&gt;112&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Joe_Biden : &lt;span style=&#34;color:#ffc777&#34;&gt;64&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Jesus_Christ : &lt;span style=&#34;color:#ffc777&#34;&gt;151&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Adolf_Hitler : &lt;span style=&#34;color:#ffc777&#34;&gt;110&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Sherlock_Holmes : &lt;span style=&#34;color:#ffc777&#34;&gt;163&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Scooby_Doo : &lt;span style=&#34;color:#ffc777&#34;&gt;113&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Doctor_Watson : &lt;span style=&#34;color:#ffc777&#34;&gt;167&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Dr_Mengele : &lt;span style=&#34;color:#ffc777&#34;&gt;83&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Joe_Hill : &lt;span style=&#34;color:#ffc777&#34;&gt;71&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;John_Travolta : &lt;span style=&#34;color:#ffc777&#34;&gt;156&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Ringo_Starr : &lt;span style=&#34;color:#ffc777&#34;&gt;139&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;John_Lennon : &lt;span style=&#34;color:#ffc777&#34;&gt;121&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* George_Bush : &lt;span style=&#34;color:#ffc777&#34;&gt;107&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ronald_Reagan : &lt;span style=&#34;color:#ffc777&#34;&gt;110&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Jimmy_Carter : &lt;span style=&#34;color:#ffc777&#34;&gt;135&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Richard_Nixon : &lt;span style=&#34;color:#ffc777&#34;&gt;137&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* John_F_Kennedy : &lt;span style=&#34;color:#ffc777&#34;&gt;131&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* prime : &lt;span style=&#34;color:#ffc777&#34;&gt;61&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* sixty_one : &lt;span style=&#34;color:#ffc777&#34;&gt;131&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Matt_Gaetz : &lt;span style=&#34;color:#ffc777&#34;&gt;113&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Wisconsin : &lt;span style=&#34;color:#ffc777&#34;&gt;125&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Alabama : &lt;span style=&#34;color:#ffc777&#34;&gt;31&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Texas : &lt;span style=&#34;color:#ffc777&#34;&gt;69&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* Ohio : &lt;span style=&#34;color:#ffc777&#34;&gt;47&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#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>Map_enum</title>
				<link>https://skapande.org/code/map_enum/</link>
				<pubDate>Thu, 21 Nov 2024 21:52:28 +0100</pubDate>
				<guid>https://skapande.org/code/map_enum/</guid>
				<description>&lt;p&gt;You can do this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;_1) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But also this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;}, &lt;span style=&#34;color:#c3e88d&#34;&gt;proc&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;to_enum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Bitfield_struct</title>
				<link>https://skapande.org/code/bitfield_struct/</link>
				<pubDate>Thu, 14 Nov 2024 19:29:03 +0100</pubDate>
				<guid>https://skapande.org/code/bitfield_struct/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bf &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# to binary string&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bs &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; bf&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { _1 ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; bs &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; &amp;#34;11001&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# to Integer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;int &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; bs&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; int &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 25&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Struct&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;BitField&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:cond&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;and&lt;/span&gt;(s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; cond&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { _1 ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bf &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;BitField&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; bf&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;and &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1000&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; bf&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;and &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1001&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; bf&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;and &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;10001&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example usage of this&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;BitField&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:cond&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;call&lt;/span&gt;(o, s) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; cond&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map { _1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; s&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rw &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;BitField&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x) { &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;file? x },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x) { &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;readable? x },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x) { &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;writable? x }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# output only files (not dirs) that are readable and writable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;glob(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;f&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; f &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; rw&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(f, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;111&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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>Alias_parameter</title>
				<link>https://skapande.org/code/alias_parameter/</link>
				<pubDate>Sat, 09 Nov 2024 20:09:05 +0100</pubDate>
				<guid>https://skapande.org/code/alias_parameter/</guid>
				<description>&lt;p&gt;Why do I need to &lt;code&gt;mkdir some_dir&lt;/code&gt; and then &lt;code&gt;cd some_dir&lt;/code&gt;?&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s the first thought. Then: &amp;lsquo;I make a script&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;But the script runs in another process. You can &lt;code&gt;cd&lt;/code&gt; all you want.. but when the child-process exists and returns focus to the parent-process.. your current directory has not changed.&lt;/p&gt;&#xA;&lt;p&gt;I have let xdotool send the commands to the terminal before. So that&amp;rsquo;s a way.&lt;/p&gt;&#xA;&lt;p&gt;You can also use an alias.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_3.3.6</title>
				<link>https://skapande.org/code/ruby_3.3.6/</link>
				<pubDate>Tue, 05 Nov 2024 18:18:44 +0100</pubDate>
				<guid>https://skapande.org/code/ruby_3.3.6/</guid>
				<description>&lt;p&gt;Ruby 3.3.6 is released. Version 3.3.7 is expected January 7th.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Dart</title>
				<link>https://skapande.org/code/dart/</link>
				<pubDate>Tue, 29 Oct 2024 18:57:31 +0100</pubDate>
				<guid>https://skapande.org/code/dart/</guid>
				<description>&lt;p&gt;Not sure I want to learn &lt;code&gt;Dart&lt;/code&gt;.. but I am looking at it.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;&#xA;An executable having just void main print is almost 7MB.&#xA;I stay away from that language.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
			</item>
			<item>
				<title>Tankar</title>
				<link>https://skapande.org/code/tankar/</link>
				<pubDate>Tue, 22 Oct 2024 18:45:39 +0200</pubDate>
				<guid>https://skapande.org/code/tankar/</guid>
				<description>&lt;p&gt;Anta en URL.. som &lt;code&gt;https://reisub.se&lt;/code&gt;. Om vi säger &lt;code&gt;url = &#39;https://reisub.se&#39;&lt;/code&gt;, så är det inte längre en URL/URI.. det är en sträng.&lt;/p&gt;&#xA;&lt;p&gt;Som sträng har den metoder.. som &lt;code&gt;upcase&lt;/code&gt;. Jättebra för namn och orter.. men inte sådär jätteanvändbart för en URI.&lt;/p&gt;&#xA;&lt;p&gt;Låt säga man vill hämta saker ur sin URI.. som &lt;code&gt;host&lt;/code&gt; eller &lt;code&gt;port&lt;/code&gt;. Då kanske man skriver sig en liten metod. Den metoden kanske man bara kastar in i kod som är &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Uniq</title>
				<link>https://skapande.org/code/uniq/</link>
				<pubDate>Fri, 18 Oct 2024 23:34:33 +0200</pubDate>
				<guid>https://skapande.org/code/uniq/</guid>
				<description>&lt;p&gt;Until today I didn&amp;rsquo;t know that the Gnu/Linux command &lt;code&gt;uniq&lt;/code&gt; had a &lt;code&gt;-w&lt;/code&gt; option.&lt;/p&gt;&#xA;&lt;p&gt;The option tells how many characters that should be compared.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;uniq -w5&lt;/code&gt; only compares the first five characters for every row.&lt;/p&gt;&#xA;&lt;p&gt;You can also skip characters with &lt;code&gt;-s&lt;/code&gt;.&lt;br&gt;&#xA;Or print out ONLY the duplicates &lt;code&gt;-D&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ior_is_coding</title>
				<link>https://skapande.org/code/ior_is_coding/</link>
				<pubDate>Tue, 15 Oct 2024 20:40:05 +0200</pubDate>
				<guid>https://skapande.org/code/ior_is_coding/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;INPUT&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;value=13.5&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# desired output&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;float&amp;gt;13.5&amp;lt;/float&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;INPUT&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;lt;float&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;/float&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# total INPUTS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;  value=13.5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;  value= &amp;#39;=&amp;gt; nope!&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;  value = 16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;  value= .3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# desired output:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   Determine the type...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   float, int, string&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;&amp;lt;-DATA.chomp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  value&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;13&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  value&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;gt; nope!&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  value &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;16&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  value&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;DATA&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Ior can&amp;#39;t get rid of new-line.. because some times val is nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_line {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;lt;float&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;/float&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ADDING COMPLEXITY %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_line {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;strip! &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;lt;float&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;/float&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Now Ior needs to find out if the result is a number..&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ADDING COMPLEXITY 2 %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_line {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;strip! &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d*$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;integer&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;elsif&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d*\.\d*$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;float&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Ior forgot it&amp;#39;s already &amp;#39;string&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;type&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;type&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Now Ior realizes that empty lines will create&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;lt;string&amp;gt;&amp;lt;/string&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Ior needs to get rid of those..&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;FINAL SOLUTION %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_line {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;strip! &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d*$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;integer&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;elsif&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d*\.\d*$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;float&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Ior forgot it&amp;#39;s already &amp;#39;string&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;type&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;type&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;lt;string&amp;gt;&amp;lt;/string&amp;gt;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# AH... it&amp;#39;s not working!!! Why?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;TEST %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_line {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;=&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;strip! &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d*$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;integer&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;elsif&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^\d*\.\d*$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;float&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    type &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Ior forgot it&amp;#39;s already &amp;#39;string&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;type&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;val&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;type&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chomp &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;lt;string&amp;gt;&amp;lt;/string&amp;gt;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ..because of a ending new-line that can&amp;#39;t be checked&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# if the variable is nil.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Just add another if...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# AHHHHH!!! It&amp;#39;s WORKING!!!&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Ior_code_revisited</title>
				<link>https://skapande.org/code/ior_code_revisited/</link>
				<pubDate>Mon, 14 Oct 2024 19:31:19 +0200</pubDate>
				<guid>https://skapande.org/code/ior_code_revisited/</guid>
				<description>&lt;p&gt;Ior wants to change parameters. He has a hash (or dictionary) with the parameters that needs to change and what they need to change into.&lt;/p&gt;&#xA;&lt;p&gt;This is what he comes up with:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;ARGS&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;--number&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;8&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;--verbose&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;file.dat&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;change &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;--number&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-n&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;--verbose&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-v&amp;#39;&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;argz &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;ARGS&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;arg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  found &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  change&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;key, val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; arg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      argz&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;append(val)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      found &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;break&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  argz&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;append(arg) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; argz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Why? The problem is that Ior programs like he think:&lt;/p&gt;</description>
			</item>
			<item>
				<title>True_color</title>
				<link>https://skapande.org/code/true_color/</link>
				<pubDate>Mon, 14 Oct 2024 18:33:11 +0200</pubDate>
				<guid>https://skapande.org/code/true_color/</guid>
				<description>&lt;p&gt;For half a day I had true-color in my terminals. Then reverted back to 256 colors.&lt;/p&gt;&#xA;&lt;p&gt;The reason was: I had absolutely &lt;strong&gt;no&lt;/strong&gt; benefits but a &lt;strong&gt;land-slide&lt;/strong&gt; of issues. I use the terminal a great deal and not all applications where happy in Tc-land.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Palette</title>
				<link>https://skapande.org/code/palette/</link>
				<pubDate>Sun, 06 Oct 2024 20:26:33 +0200</pubDate>
				<guid>https://skapande.org/code/palette/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ansi &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(fg, bg) { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[38;5;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;fg&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;;48;5;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;bg&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;m&amp;#34;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;col &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;14&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ffc777&#34;&gt;41&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;51&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;68&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;87&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;101&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;123&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;133&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;159&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ffc777&#34;&gt;167&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;195&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;202&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;231&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;244&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;255&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ansi&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[0m&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; ansi&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;, i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;range &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(r) { r&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s%02x&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;range&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; range&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;232&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;255&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;6&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; st &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;16&lt;/span&gt;; range&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;36&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;16&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;st&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;35&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Working on a palette generator for terminal and needed to see the 256 color palette. This presents it with the basic 16 + grays + the 6x6.&lt;/p&gt;&#xA;&lt;p&gt;Found no way to get the full hex out of a 256 color number.. to determine if the color is &amp;rsquo;light&amp;rsquo; or &amp;lsquo;dark&amp;rsquo; (I set foreground by this).. so the light colors are hard-coded in.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Frames_tascam</title>
				<link>https://skapande.org/code/frames_tascam/</link>
				<pubDate>Sun, 29 Sep 2024 14:20:41 +0200</pubDate>
				<guid>https://skapande.org/code/frames_tascam/</guid>
				<description>&lt;p&gt;This was made fast yesterday. Just wanted a way to split up recordings into bars and beats. I haven&amp;rsquo;t even got the machine (Tascam DP-006) yet.&lt;/p&gt;&#xA;&lt;p&gt;Not sure if it&amp;rsquo;s possible to edit tracks the way I imagine.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;FRAME_RATE&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;30&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# according to tascam.eu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Smpte&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  refine &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;frames&lt;/span&gt;      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;seconds&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;FRAME_RATE&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;minutes&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;seconds &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;hours&lt;/span&gt;       &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;minutes &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&lt;span style=&#34;color:#c3e88d&#34;&gt;frames&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:frame&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:fr&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;seconds&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:secs&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:sec&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;minutes&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:mins&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:min&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;hours&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:hrs&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:hr&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;al&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; define_method(al) { &lt;span style=&#34;color:#c3e88d&#34;&gt;send&lt;/span&gt;(k) } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Frames&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_accessor&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:frames&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(frames&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @frames &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; frames&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @smpte &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:hr&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:min&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:sec&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:frames&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_s&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%.2i:%.2i:%.2i (%.2i)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;hr, min, sec, frames&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;reset&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @frames &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;smpte&lt;/span&gt;(frames &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @frames)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    smpte &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sec, smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;frames &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; frames&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;divmod(&lt;span style=&#34;color:#ff966c&#34;&gt;FRAME_RATE&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;min, smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sec &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sec&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;divmod(&lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sec &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hr, smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;min &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;min&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;divmod(&lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; smpte&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;min &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    smpte&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;bpm&lt;/span&gt;(b)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mult, mult_rest &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;divmod(&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# one measure&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;  &amp;gt;&amp;gt; REST: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; mult_rest &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; mult_rest &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    smpte((&lt;span style=&#34;color:#ff966c&#34;&gt;FRAME_RATE&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;divmod(mult)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Usage :&lt;/p&gt;</description>
			</item>
			<item>
				<title>RightNow</title>
				<link>https://skapande.org/code/rightnow/</link>
				<pubDate>Tue, 24 Sep 2024 19:46:21 +0200</pubDate>
				<guid>https://skapande.org/code/rightnow/</guid>
				<description>&lt;p&gt;Right now.. I&amp;rsquo;m working with this :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# pretend we got user args&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;ARGS&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(-n Olle --age 22 -lagom)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wanted &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;n&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_s&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;age&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;:to_i&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;en &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ARGS&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_enum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; en&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; it &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/^-{1,2}(\w+)$/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    val &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; (key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wanted&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;$1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_sym&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Symbol&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; en&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# for show...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s =&amp;gt; %s (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;it, val, val&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;class&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin Output&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;                &amp;#34;-n =&amp;gt; Olle (String)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;                &amp;#34;--age =&amp;gt; 22 (Integer)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;                &amp;#34;-lagom =&amp;gt; true (TrueClass)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It doesn&amp;rsquo;t cover cases.. just short, long and bool at this state.&lt;br&gt;&#xA;No translation from short to long key.&#xA;Not sure the Converting is solid.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ansi_menu</title>
				<link>https://skapande.org/code/ansi_menu/</link>
				<pubDate>Sat, 21 Sep 2024 20:29:55 +0200</pubDate>
				<guid>https://skapande.org/code/ansi_menu/</guid>
				<description>&lt;p&gt;Wrote this trying NOT to use libraries like &amp;lsquo;(n)curses&amp;rsquo; or &amp;lsquo;io/console&amp;rsquo;.&lt;br&gt;&#xA;The key-handling became way to involved.. so I decided to use tty-reader for that.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tty-reader&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# get cursor pos via sending Esc[6n&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;pos&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  $stdin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;raw &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;stdin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $stdout &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[6n&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $stdout&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;flush&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; (c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; stdin&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;getc) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;R&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; c &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; c&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# named matches, return hash&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  m &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;match &lt;span style=&#34;color:#86e1fc&#34;&gt;/(?&amp;lt;ypos&amp;gt;\d+);(?&amp;lt;xpos&amp;gt;\d+)/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&lt;span style=&#34;color:#c3e88d&#34;&gt;:y&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;(m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:ypos&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;:x&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;Integer&lt;/span&gt;(m&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:xpos&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# menu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;select&lt;/span&gt;(menu)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;TTY&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Reader&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  row, pos &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; pos()&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:y&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; menu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  menu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_with_index {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;item, idx&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;(idx&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;, item&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# lambdas&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cur &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(b) { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; b ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[?25h&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[?25l&amp;#34;&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cur_goto &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(row&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,col&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;row&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;col&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;H&amp;#34;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  pat &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(r, c, txt) { cur_goto&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;r, c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; txt }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; { cur_goto&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;row &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; menu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;; cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; } &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# keys&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  rd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;on(&lt;span style=&#34;color:#c3e88d&#34;&gt;:keydown&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:keyup&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ev&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pat&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;row, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;  %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; menu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pos &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (pos &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; (ev&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:down&lt;/span&gt;) ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; menu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pat&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;row, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;on(&lt;span style=&#34;color:#c3e88d&#34;&gt;:keyescape&lt;/span&gt;) { res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;on(&lt;span style=&#34;color:#c3e88d&#34;&gt;:keyreturn&lt;/span&gt;) { res&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; menu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cur&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; { ch &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; rd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;read_keypress }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# usage :&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# move cursor             =&amp;gt; arrow keys (up / down)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# make selection          =&amp;gt; Return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# quit without selecting  =&amp;gt; Esc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;arr &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(one two three four five end)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Selected: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;select&lt;/span&gt;(arr) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;none&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#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>Ffi Ncurses</title>
				<link>https://skapande.org/code/ffi-ncurses/</link>
				<pubDate>Wed, 18 Sep 2024 18:31:58 +0200</pubDate>
				<guid>https://skapande.org/code/ffi-ncurses/</guid>
				<description>&lt;p&gt;Had some problems with ffi-ncurses (ruby gem). The char definitions was messed up on my side.&lt;/p&gt;&#xA;&lt;p&gt;Simple fix: edit asc.rb and set the definitions right.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Curses_overkill</title>
				<link>https://skapande.org/code/curses_overkill/</link>
				<pubDate>Thu, 12 Sep 2024 20:19:06 +0200</pubDate>
				<guid>https://skapande.org/code/curses_overkill/</guid>
				<description>&lt;p&gt;Sometimes Curses or Ncurses is overkill. Ansi escape sequences will suffice. Here&amp;rsquo;s how to set that up with Ruby.&lt;/p&gt;&#xA;&lt;p&gt;I only use Curses when I need pads or mouse-support.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ostruct&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Setup .. add more sequences and calls&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# maybe -&amp;gt; { `tput lines` }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# and   -&amp;gt; { `tput cols` }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cur&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;OpenStruct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;save&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;            { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[s&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;restore&lt;/span&gt;:  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;            { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[u&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;hide&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;            { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[?25l&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;show&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;            { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[?25h&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;goto&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)  { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;H&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;up&lt;/span&gt;:       &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)       { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;A&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;down&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)       { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;B&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;right&lt;/span&gt;:    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)       { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;C&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;left&lt;/span&gt;:     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)       { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;D&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Scr&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;OpenStruct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;cls&lt;/span&gt;:      &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;            { &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\e&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;[2J&amp;#34;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -----------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Usage :&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Scr&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cls&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cur&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hide&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cur&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;goto&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;hejsan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cur&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;down&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;svejsan&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cur&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;show&lt;span style=&#34;color:#c3e88d;font-weight:bold&#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>Why_refine</title>
				<link>https://skapande.org/code/why_refine/</link>
				<pubDate>Thu, 12 Sep 2024 18:17:47 +0200</pubDate>
				<guid>https://skapande.org/code/why_refine/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;StrRows&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  refine &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;lines&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;scan&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Xstr&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  using &lt;span style=&#34;color:#ff966c&#34;&gt;StrRows&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;some_text &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;lt;&amp;lt;-MUSK&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Strive&lt;/span&gt; to greater heights,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;For&lt;/span&gt; a future brighter than the past,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Waking&lt;/span&gt; up each morning inspired,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;To&lt;/span&gt; learn &lt;span style=&#34;color:#c099ff&#34;&gt;new&lt;/span&gt; secrets of the &lt;span style=&#34;color:#ff966c&#34;&gt;Universe&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;MUSK&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;xstr &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Xstr&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(some_text)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; some_text&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;lines&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Strive to greater heights,\n&amp;#34;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;For a future brighter than the past,\n&amp;#34;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;Waking up each morning inspired,\n&amp;#34;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# &amp;#34;To learn new secrets of the Universe!\n&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; xstr&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;lines &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Suppose you want a fancy new String-method that returns the number of lines in a text. Unbeknownst to you.. String already have a method named &amp;rsquo;lines&amp;rsquo;. It splits a line on new-line and returns an Array.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Class_block</title>
				<link>https://skapande.org/code/class_block/</link>
				<pubDate>Tue, 10 Sep 2024 18:29:11 +0200</pubDate>
				<guid>https://skapande.org/code/class_block/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;One&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olle&amp;#39;&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;one &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;One&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; one&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; NoMethodError&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# The class gives no way to access &amp;#39;name&amp;#39;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# (unless)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; one&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;instance_variable_get(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;@name&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# adding getter-method to instance&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;one&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;class&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(&lt;span style=&#34;color:#c3e88d&#34;&gt;:attr_reader&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:name&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; one&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; olle&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ---&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# You can also gain access to the namespace via a block.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Two&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olle&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    instance_exec(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Two&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; @name } &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; olle&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Three_ways</title>
				<link>https://skapande.org/code/three_ways/</link>
				<pubDate>Fri, 30 Aug 2024 21:44:27 +0200</pubDate>
				<guid>https://skapande.org/code/three_ways/</guid>
				<description>&lt;p&gt;apa is a dummy-class with a method :add.&lt;br&gt;&#xA;The gem &amp;lsquo;method_source&amp;rsquo; is required.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# first&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:add&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;source&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_line {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @ind &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^(\s*)/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@ind&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;...]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# second&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:add&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;source&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;lines&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;indent &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^(\s*)/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; ln&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;indent&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..]&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# third&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;en &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; apa&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:add&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;source&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_enum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ind &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; en&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;peek&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#86e1fc&#34;&gt;/^(\s*)/&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; en&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;ind&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..]&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first version is using ||= to get the indentation of the first line.&lt;/p&gt;&#xA;&lt;p&gt;The second is creating an array of lines and checks the first item for indentation.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Loop_enum</title>
				<link>https://skapande.org/code/loop_enum/</link>
				<pubDate>Thu, 29 Aug 2024 21:24:25 +0200</pubDate>
				<guid>https://skapande.org/code/loop_enum/</guid>
				<description>&lt;p&gt;By accident I discovered that a loop ends when an enumerator is spent (sends StopIteration).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;en &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(olle pelle kalle nisse)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_enum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;loop&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; en&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;next&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;done!&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pretty convenient.&lt;/p&gt;</description>
			</item>
			<item>
				<title>FilePointer</title>
				<link>https://skapande.org/code/filepointer/</link>
				<pubDate>Mon, 26 Aug 2024 22:16:26 +0200</pubDate>
				<guid>https://skapande.org/code/filepointer/</guid>
				<description>&lt;p&gt;The file-pointer is like the needle on a old vinyl gramophone. You can lift the arm and reposition the needle anywhere on the LP (or EP).&lt;/p&gt;&#xA;&lt;p&gt;In Ruby you use &lt;code&gt;seek&lt;/code&gt; and &lt;code&gt;tell&lt;/code&gt; from &lt;code&gt;IO&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;open(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;file.txt&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;seek(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:END&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# move pointer to end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;EOF&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; fh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tell &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# read pointer value&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;seek(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:SET&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# move pointer to beginning&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Any reading from the file starts from where the file-pointer is.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;seek(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;200&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:CUR&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; fh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;readline&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I used this to make an indexer. It reads tags in the file and stores the file-pointer position in a corresponding yaml-file.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Classes_and_Ignorance</title>
				<link>https://skapande.org/code/classes_and_ignorance/</link>
				<pubDate>Tue, 20 Aug 2024 19:32:43 +0200</pubDate>
				<guid>https://skapande.org/code/classes_and_ignorance/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#!/usr/bin/env ruby&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# frozen_string_literal: true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#############&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# CONSTANTS #  TODO: See if I need these... or put them in Deck&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#############&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;CONSTANTS&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;SUITE&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;H&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Hearts&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;D&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Diamonds&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;C&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Clubs&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;S&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Spades&amp;#39;&lt;/span&gt;},&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;RANK&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;push(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*%&lt;/span&gt;i(J Q K))&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;unshift(&lt;span style=&#34;color:#c3e88d&#34;&gt;:A&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# NOTE: Do I need translation :J =&amp;gt; &amp;#39;Jack&amp;#39; etc. ?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;##########&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# STRUCT #&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;##########&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Card&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:rank&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:suite&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;SUITE&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;suite&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;r&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;RANK&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;index(rank) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; ) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# numeric rank&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_s&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s of %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;rank, &lt;span style=&#34;color:#ff966c&#34;&gt;SUITE&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;suite&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Sum&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:sum&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:aces&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;low&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( sum )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;high&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( ((ret &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (sum &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; (aces? ? &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;))) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt;) ? &lt;span style=&#34;color:#c3e88d&#34;&gt;:bust&lt;/span&gt; : ret )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;aces?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( aces &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;blackjack?&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;low &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;high &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;##############&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Deck Class #&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;##############&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Deck&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;no_decks&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @deck &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    no_decks&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { &lt;span style=&#34;color:#ff966c&#34;&gt;RANK&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;product(&lt;span style=&#34;color:#ff966c&#34;&gt;SUITE&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;keys)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      @deck&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;append(&lt;span style=&#34;color:#ff966c&#34;&gt;Card&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first, c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;last))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;shuffle&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @deck&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;shuffle!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;deal&lt;/span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @deck&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;pop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;cards&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @deck&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;length&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;##############&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Hand Class #&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;##############&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hand&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:hand&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(decks &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @hand &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# hold Card (is a Struct)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @@deck_obj &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Deck&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;no_decks&lt;/span&gt;: decks)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @@deck_obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;shuffle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;deal&lt;/span&gt;(no_cards &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( no_cards&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { @hand&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;push @@deck_obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;deal } )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;sum&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;Sum&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(@hand&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;inject(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;s, h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; s &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt;  ((h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;r &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;) ? &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt; : h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;r) },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @hand&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;select {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; h&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;r &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# -----------------------------------------------------------------------------&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;p1 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hand&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;p1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;deal(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;p2 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hand&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;p2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;deal(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;p1, p2&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hand&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; _1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; sm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;blackjack?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Blackjack!&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sum: &amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; sm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;aces? ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;lo: %s, hi: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;sm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;low, sm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;high&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; : sm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;80&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I just hade the urge to revisit Blackjack. It&amp;rsquo;s such a great start for working with classes. I&amp;rsquo;m not that good with classes..&lt;/p&gt;</description>
			</item>
			<item>
				<title>Winsetter</title>
				<link>https://skapande.org/code/winsetter/</link>
				<pubDate>Tue, 13 Aug 2024 18:33:58 +0200</pubDate>
				<guid>https://skapande.org/code/winsetter/</guid>
				<description>&lt;p&gt;Winsetter revisited. This time with yaml-config file. Code is sort of.. shitty. But I wrote this yesterday (2024-08-12), and it&amp;rsquo;s still a test.&lt;/p&gt;&#xA;&lt;p&gt;This is the yaml&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;---&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;windows&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#c099ff&#34;&gt;name&lt;/span&gt;: Alacritty&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;xpos&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# position the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;ypos&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;800&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# resize the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1031&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#set: [&amp;#39;SHADED&amp;#39;] # roll up the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#c099ff&#34;&gt;name&lt;/span&gt;: Firefox&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;xpos&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;804&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# position the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;ypos&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1112&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# resize the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1031&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#c099ff&#34;&gt;name&lt;/span&gt;: KeePassXc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;minimize&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# minimize the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#c099ff&#34;&gt;name&lt;/span&gt;: Cherrytree&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;start&lt;/span&gt;: cherrytree &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# launch the app&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;desktop&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# move the app to desktop 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is the code&lt;/p&gt;</description>
			</item>
			<item>
				<title>Conditions</title>
				<link>https://skapande.org/code/conditions/</link>
				<pubDate>Fri, 09 Aug 2024 19:25:11 +0200</pubDate>
				<guid>https://skapande.org/code/conditions/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;make&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Object&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;define_method(&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|*&lt;/span&gt;args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      bl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;running &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;  &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# must be true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kaka &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;7&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# must include 12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:otto&lt;/span&gt;    &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# must be a symbol&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# initialize&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;test&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# create a test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;make(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;check&amp;#39;&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;r, k, n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  r &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; (k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include? &lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; (n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;is_a? &lt;span style=&#34;color:#ff966c&#34;&gt;Symbol&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# run the test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;check&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(running, kaka, &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# another set of data&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;another_running &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;another_kaka &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;another_name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;erik&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# another test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;check&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(another_running, another_kaka, another_name) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#####################################&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# You can also do things like this: #&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#####################################&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Person&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Data&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;define(&lt;span style=&#34;color:#c3e88d&#34;&gt;:country&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:city&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:age&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ppl &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;urban&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Person&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:SE&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;uppsala&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;34&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;emma&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Person&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:SE&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sjöbo&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;16&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;linus&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Person&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:UK&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;leeds&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;peeps &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Test&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;peeps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;make(&lt;span style=&#34;color:#c3e88d&#34;&gt;:SE&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;age&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;21&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;peeps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;make(&lt;span style=&#34;color:#c3e88d&#34;&gt;:UK&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;age&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; age &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;18&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# :SE rule is used for Data.country == :SE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# :UK rule is used for Data.country == :UK&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ppl&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s (%s) =&amp;gt; %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age, v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;city&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; peeps&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;country)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;age)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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>ErrorMessages</title>
				<link>https://skapande.org/code/errormessages/</link>
				<pubDate>Sun, 14 Jul 2024 23:04:29 +0200</pubDate>
				<guid>https://skapande.org/code/errormessages/</guid>
				<description>&lt;p&gt;I just wrote something to get the libc descriptions of Ruby Errno.&lt;/p&gt;&#xA;&lt;p&gt;Below is something else.. just some code to show some stuff.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; @names&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; {&amp;#34;Olle&amp;#34;=&amp;gt;&amp;#34;11&amp;#34;, &amp;#34;Pelle&amp;#34;=&amp;gt;&amp;#34;6&amp;#34;, &amp;#34;Kalle&amp;#34;=&amp;gt;&amp;#34;2&amp;#34;, &amp;#34;Pellegrino&amp;#34;=&amp;gt;&amp;#34;0&amp;#34;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;BEGIN&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;NL&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;CM&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;AmpArgs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    refine &lt;span style=&#34;color:#ff966c&#34;&gt;Symbol&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;call&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;block) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;caller&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;rest) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;caller&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;send(&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;rest, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;block) } )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  using &lt;span style=&#34;color:#ff966c&#34;&gt;AmpArgs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @names &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;~&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;NAMES&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#ff966c&#34;&gt;NL&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:split&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#ff966c&#34;&gt;CM&lt;/span&gt;))&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Olle&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Pelle&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;6&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Kalle&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Olle&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;11&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Pellegrino&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;NAMES&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The BEGIN block is run first. That is to read the HEREdoc into a hash.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Gambas_Ruby</title>
				<link>https://skapande.org/code/gambas_ruby/</link>
				<pubDate>Tue, 09 Jul 2024 17:48:30 +0200</pubDate>
				<guid>https://skapande.org/code/gambas_ruby/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s not easy loving Ruby these days. It&amp;rsquo;s the rails thing. It hurt Ruby a lot. And it&amp;rsquo;s also choices of words:&lt;/p&gt;&#xA;&lt;p&gt;When you name a programming language.. don&amp;rsquo;t name it &amp;lsquo;it&amp;rsquo; or &amp;lsquo;red&amp;rsquo; or &amp;lsquo;also&amp;rsquo;. Searching for &amp;lsquo;Ruby gems&amp;rsquo; gives you page after page with sandals with glitter on them.&lt;/p&gt;&#xA;&lt;p&gt;Searching for &amp;lsquo;ruby&amp;rsquo; alone brings up some child molestor or a gender-fluid actor.. or a comedian no-one remembers.&lt;br&gt;&#xA;Ruby is a great language that has been mismanaged.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Glimmer</title>
				<link>https://skapande.org/code/glimmer/</link>
				<pubDate>Tue, 25 Jun 2024 17:01:36 +0200</pubDate>
				<guid>https://skapande.org/code/glimmer/</guid>
				<description>&lt;p&gt;Håller på att kika på &lt;code&gt;Glimmer&lt;/code&gt;.. ett bibliotek för att göra GUI applikationer.&lt;/p&gt;&#xA;&lt;p&gt;Har inte hunnit komma någonstans.. men det verkar som om man skapar sin layout via block.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# dummy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;window(specs) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  vertical_grid {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    textarea {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    button {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Det verkar också som att man kan korskoppla parametrar.. så om en uppdateras, uppdateras också den andra.&lt;/p&gt;&#xA;&lt;p&gt;Men - som Paolo Roberto sa: - &amp;lsquo;Nu är det dags att sluta spekulera!&amp;rsquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Listen</title>
				<link>https://skapande.org/code/listen/</link>
				<pubDate>Mon, 24 Jun 2024 18:48:38 +0200</pubDate>
				<guid>https://skapande.org/code/listen/</guid>
				<description>&lt;p&gt;&lt;code&gt;listen&lt;/code&gt; listens to file-changes in a directory.&lt;br&gt;&#xA;You install it with &lt;code&gt;gem install listen&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;listen&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lst &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Listen&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;mod, add, rem&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;mod&lt;/span&gt;: mod, &lt;span style=&#34;color:#c3e88d&#34;&gt;add&lt;/span&gt;: add, &lt;span style=&#34;color:#c3e88d&#34;&gt;rem&lt;/span&gt;: rem)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lst&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I&amp;rsquo;m not sure right now if you need to &lt;code&gt;lst.stop&lt;/code&gt; before quitting or if it takes care of itself when the main process dies.&lt;br&gt;&#xA;Otherwise you could put the command in the &lt;code&gt;ensure&lt;/code&gt;-block.. or trap signals and handle it there.&lt;/p&gt;&#xA;&lt;p&gt;The code listens for changes in the current directory. If you open another terminal or use tmux.. and create a file in the same directory:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Homevideo</title>
				<link>https://skapande.org/code/homevideo/</link>
				<pubDate>Sun, 23 Jun 2024 14:19:19 +0200</pubDate>
				<guid>https://skapande.org/code/homevideo/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;%w(httparty nokogiri ./homevideo.rb)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;method&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;:require&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;go_web&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;fetching from internet...&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  url   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(http://www.guldpris.nu)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  xpath &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(//*[@id=&amp;#34;ratePreUnitTwoSEK&amp;#34;])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;Nokogiri&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;HTML&lt;/span&gt;(&lt;span style=&#34;color:#ff966c&#34;&gt;HTTParty&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;get(url)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;body)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;xpath(xpath)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:value&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# This is how the Yeger-class can be used ...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yeg &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Yager&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:data&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hours)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yeg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;value(go_web&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; yeg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;outdated?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; yeg&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Found VCR a bit.. too much.. so I wrote &amp;lsquo;homevideo&amp;rsquo;.&lt;br&gt;&#xA;When initialized you set the filename (as symbol) and the time-limit in seconds (default 10.minuntes).&lt;/p&gt;&#xA;&lt;p&gt;Time-stamp and limit is read from yaml-file. If time-stamp is passed limit, method &lt;code&gt;outdated?&lt;/code&gt; returns true (and the new values are stored).&lt;/p&gt;</description>
			</item>
			<item>
				<title>VCR</title>
				<link>https://skapande.org/code/vcr/</link>
				<pubDate>Sat, 15 Jun 2024 17:36:08 +0200</pubDate>
				<guid>https://skapande.org/code/vcr/</guid>
				<description>&lt;p&gt;VCR uses the concept of an old video cassette player. On the cassettes, you can store results from web-requests.&lt;br&gt;&#xA;First you configure the recorder.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;VCR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;configure &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cassette_library_dir &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;cache/vcr&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hook_into &lt;span style=&#34;color:#c3e88d&#34;&gt;:webmock&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Your recording will end up in directory cache/vcr.&lt;/li&gt;&#xA;&lt;li&gt;To emulate web-calls, :webmock is used.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;VCR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;use_cassette(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;test&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    res &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;HTTParty&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;get(url)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;body&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s say you are working on some script that collects data from a server. During testing, you run the script again and again. Everytime you call the server.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Particles_ruby2d</title>
				<link>https://skapande.org/code/particles_ruby2d/</link>
				<pubDate>Wed, 12 Jun 2024 20:34:53 +0200</pubDate>
				<guid>https://skapande.org/code/particles_ruby2d/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ruby2d&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;parallel&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@parts &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Part&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Square&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:dx&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:dy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    speed &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;rand&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;rand&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;360&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @dx, @dy &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; speed &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;cos(&lt;span style=&#34;color:#ff966c&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PI&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;360&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      speed &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sin(&lt;span style=&#34;color:#ff966c&#34;&gt;Math&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;PI&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;360&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;super&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;add_part&lt;/span&gt;(x, y, n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { @parts &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Part&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;x&lt;/span&gt;: x, &lt;span style=&#34;color:#c3e88d&#34;&gt;y&lt;/span&gt;: y, &lt;span style=&#34;color:#c3e88d&#34;&gt;size&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;remove_outsiders&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @parts&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete_if {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;between?(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;645&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;between?(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;485&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @txt&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;text &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Particles: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; @parts&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;move_particle&lt;/span&gt;(obj)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dx; obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; obj&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on &lt;span style=&#34;color:#c3e88d&#34;&gt;:key_down&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; close &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;q&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on &lt;span style=&#34;color:#c3e88d&#34;&gt;:mouse_down&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; add_part(e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y, &lt;span style=&#34;color:#ffc777&#34;&gt;90&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@txt &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Text&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Particles: 0&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;update &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  remove_outsiders&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;Parallel&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map(@parts, &lt;span style=&#34;color:#c3e88d&#34;&gt;in_threads&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; move_particle(o)}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Assert</title>
				<link>https://skapande.org/code/assert/</link>
				<pubDate>Thu, 30 May 2024 23:24:05 +0200</pubDate>
				<guid>https://skapande.org/code/assert/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;binding_of_caller&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;assert&lt;/span&gt;(cond)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;row [%s] / FAIL! [%s]&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;caller&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, cond&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; \&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(cond, &lt;span style=&#34;color:#c3e88d&#34;&gt;binding&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;of_caller(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;namn &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;holger&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;assert &lt;span style=&#34;color:#c3e88d&#34;&gt;%(namn == &amp;#39;hulken&amp;#39;)&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; row [9] / FAIL! [namn == &amp;#39;hulken&amp;#39;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;assert &lt;span style=&#34;color:#c3e88d&#34;&gt;%(namn == &amp;#39;holger&amp;#39;)&lt;/span&gt; &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install gem with:&lt;br&gt;&#xA;&lt;code&gt;gem install binding_of_caller&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Snake_regrets</title>
				<link>https://skapande.org/code/snake_regrets/</link>
				<pubDate>Mon, 27 May 2024 22:19:44 +0200</pubDate>
				<guid>https://skapande.org/code/snake_regrets/</guid>
				<description>&lt;p&gt;I should have used a Struct to translate between pixel positions and the grid.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Point&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:x&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:y&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;screen&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;screen&lt;/span&gt;(x, y) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;grid&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;grid&lt;/span&gt;(x, y) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;grid_diff&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;(x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; x, (y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;grid_diff&lt;/span&gt;(x, y) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;(x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; x, (y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or maybe this is better..&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Point&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:x&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:y&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;screen&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;grid&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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>Snake</title>
				<link>https://skapande.org/code/snake/</link>
				<pubDate>Sun, 26 May 2024 19:02:19 +0200</pubDate>
				<guid>https://skapande.org/code/snake/</guid>
				<description>&lt;p&gt;A starting point for a simple snake game on a 80x60 grid (640x480 px).&lt;/p&gt;&#xA;&lt;p&gt;I was planning to use @sn[:trail] for collision detection.. but that went south and I added @map and the @mapper lambda for that.&lt;/p&gt;&#xA;&lt;p&gt;Missing: no food, no points, no start- or exit screen.&lt;/p&gt;&#xA;&lt;p&gt;Defaults right now to a 88 grid long snake.&lt;/p&gt;&#xA;&lt;p&gt;Keys: arrow keys &amp;amp; &amp;lsquo;q&amp;rsquo; for quit.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ruby2d&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;DIFFICULTY&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;GROW&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;30&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;DIFFICULTY&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;GROW&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;30&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;GROW&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;GROW&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;50&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;GROW&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;55&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;then&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;GROW&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set &lt;span style=&#34;color:#c3e88d&#34;&gt;fps_cap&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;SPEED&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@mapper &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(x,y, set) { @map&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (set ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@map &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[].&lt;/span&gt;tap {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;60&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times {ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;80&lt;/span&gt; } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@mapper&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;320&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;240&lt;/span&gt;, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Integer&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:btw&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:between?&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; :&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:include?&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Pos&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_accessor&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:x&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:y&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(x, y) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @x, @y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; x, y )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@sn &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;len&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;88&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;trail&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Square&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;x&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;320&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;240&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;size&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c3e88d&#34;&gt;pos&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Pos&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#ffc777&#34;&gt;40&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;30&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;dir&lt;/span&gt;: &lt;span style=&#34;color:#ff966c&#34;&gt;Pos&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;grow_or_move&lt;/span&gt;(pos, &lt;span style=&#34;color:#c3e88d&#34;&gt;grow&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;oroboro&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; @map&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; (grow ? &lt;span style=&#34;color:#ff966c&#34;&gt;Square&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;size&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;) : @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;shift)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @mapper&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y, &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @mapper&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(@sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y, &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; grow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, pos&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on &lt;span style=&#34;color:#c3e88d&#34;&gt;:key_down&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(left right)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;zero?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;x, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;left&amp;#39;&lt;/span&gt;) ? &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;elsif&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(up down)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;zero?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;y, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;up&amp;#39;&lt;/span&gt;) ? &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; close &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;q&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;update &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  grow_or_move(&lt;span style=&#34;color:#ff966c&#34;&gt;Pos&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(@sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;x, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+=&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;y), &lt;span style=&#34;color:#c3e88d&#34;&gt;grow&lt;/span&gt;: @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:len&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;WRAP&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;640&lt;/span&gt;, @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;480&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;abort&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;outside&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;btw(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;640&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; @sn&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:trail&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;last&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;btw(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;480&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Prepared_hash</title>
				<link>https://skapande.org/code/prepared_hash/</link>
				<pubDate>Tue, 14 May 2024 21:19:38 +0200</pubDate>
				<guid>https://skapande.org/code/prepared_hash/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;insert&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff966c&#34;&gt;Hash&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;keys&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[..&lt;/span&gt;args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;zip(args)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;k,v&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    } &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hsh &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;x&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;width&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;200&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;100&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;blue&amp;#39;&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;insert(&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; {:x=&amp;gt;5, :y=&amp;gt;8, :width=&amp;gt;200, :height=&amp;gt;100, :color=&amp;gt;&amp;#34;blue&amp;#34;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; hsh&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;insert(&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;300&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;150&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;orange&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; {:x=&amp;gt;10, :y=&amp;gt;20, :width=&amp;gt;300, :height=&amp;gt;150, :color=&amp;gt;&amp;#34;orange&amp;#34;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Example :&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;x&lt;/span&gt;:, &lt;span style=&#34;color:#c3e88d&#34;&gt;y&lt;/span&gt;:, &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;:, &lt;span style=&#34;color:#c3e88d&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @x, @y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; x, y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @name &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @border &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; border&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;parms &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d&#34;&gt;x&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apa &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;**&lt;/span&gt;parms&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;insert(&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;, &lt;span style=&#34;color:#ffc777&#34;&gt;8&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; apa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; #&amp;lt;Apa:0x000058799cf82398 @y=8, @x=12, @name=&amp;#34;&amp;#34;, @border=true&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Ruby2d_hitboxes</title>
				<link>https://skapande.org/code/ruby2d_hitboxes/</link>
				<pubDate>Mon, 13 May 2024 21:43:51 +0200</pubDate>
				<guid>https://skapande.org/code/ruby2d_hitboxes/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ruby2d&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@quad &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Quad&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;x1&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y1&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;x2&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;200&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y2&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;20&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;x3&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;180&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y3&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;180&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;x4&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;50&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;y4&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;220&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;color&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;olive&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@selected &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@corners &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each_with_object(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;) {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i, o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  o &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;Circle.new(x: @quad.x&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;, y: @quad.y&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;, z: 2, radius: 5, sectors: 32, color: &amp;#39;red&amp;#39;)&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;active &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(o,i) { o&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;color&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;yellow&amp;#39;&lt;/span&gt;; @selected&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;i }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;inactive &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; { @corners&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {_1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;color&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;red&amp;#39;&lt;/span&gt;}; @selected&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;upd&lt;/span&gt;(x, y)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; @selected&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @corners&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@selected&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;x &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; x&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @corners&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@selected&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;y &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;@quad.x&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;@selected&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; = x&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;@quad.y&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;@selected&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt; = y&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on &lt;span style=&#34;color:#c3e88d&#34;&gt;:mouse_down&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  @corners&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_with_index {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;c, i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; active&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(c, i) &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;contains?(e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on &lt;span style=&#34;color:#c3e88d&#34;&gt;:mouse_up&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; upd(e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y); inactive&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;() &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;on &lt;span style=&#34;color:#c3e88d&#34;&gt;:mouse_move&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; upd(e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;x, e&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;y) &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;update &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;sleep&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;025&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;show&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This ugly code is a test for my little helper-app that defines hitboxes for a square image in order to use collision detection.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ruby_r16</title>
				<link>https://skapande.org/code/ruby_r16/</link>
				<pubDate>Thu, 02 May 2024 21:10:45 +0200</pubDate>
				<guid>https://skapande.org/code/ruby_r16/</guid>
				<description>&lt;p&gt;I use Ruby to monitor the sliders (8 channels + Master) on my Zoom R16.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://asciinema.org/a/657474&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;asciinema&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Byebug</title>
				<link>https://skapande.org/code/byebug/</link>
				<pubDate>Thu, 25 Apr 2024 19:59:27 +0200</pubDate>
				<guid>https://skapande.org/code/byebug/</guid>
				<description>&lt;p&gt;From today I prefer &lt;code&gt;byebug&lt;/code&gt; over &lt;code&gt;pry&lt;/code&gt;.&lt;br&gt;&#xA;Just set some breakpoint(s) and &lt;code&gt;display&lt;/code&gt; the var you need to monitor.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Struct_cond</title>
				<link>https://skapande.org/code/struct_cond/</link>
				<pubDate>Tue, 23 Apr 2024 19:14:49 +0200</pubDate>
				<guid>https://skapande.org/code/struct_cond/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;Enumerable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;€&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;ar, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( each(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;ar, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Struct&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;:t&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:f&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;ĸ&lt;/span&gt;(cond) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (cond ? t&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call : f&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;call)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Cond&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;this is even&amp;#39;&lt;/span&gt; },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;this is odd&amp;#39;&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# now you can use:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;€&lt;/span&gt; { c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;ĸ&lt;/span&gt;(_1 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) } &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It&amp;rsquo;s not that I wanna do code-golfing.. But I try to find my personal style of coding. There&amp;rsquo;s a lot of repetition in code that I don&amp;rsquo;t like.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Numerology</title>
				<link>https://skapande.org/code/numerology/</link>
				<pubDate>Fri, 19 Apr 2024 21:20:30 +0200</pubDate>
				<guid>https://skapande.org/code/numerology/</guid>
				<description>&lt;p&gt;Read something about &amp;rsquo;name-to-number&amp;rsquo;.&lt;br&gt;&#xA;It was:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1 2 3 4 5 6 7 8 9&#xA;A B C D E F G H I&#xA;J K L M N O P Q R&#xA;S T U V W X Y Z&#xA;&#xA;Then: sum the numbers to total and add the parts of the number.&#xA;Ex: &amp;#39;TRAZAN APANSSON&amp;#39; = 2+9+1+8+1+5 + 1+7+1+5+1+1+6+5&#xA;=&amp;gt; 26 + 27 = 53&#xA;5 + 3 = 7&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# I group the letters [[AJS], [BKT]] .. and so on...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;letters &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;I&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;zip(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;J&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;R&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;S&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Z&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# could use &amp;#39;each&amp;#39; and &amp;#39;index&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;num &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(ch) {letters&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each_with_index {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;l, i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;return&lt;/span&gt; i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; l&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;include?(ch)}; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# remove 9 until &amp;lt; 10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zum &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(i) { &lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;; i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;; i}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# main proc&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;to_num &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(nm) {zum&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[[].&lt;/span&gt;tap {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; nm&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;upcase&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chars {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; ar &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; num&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;c&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;} }&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sum&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Oliver Cromwell&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; to_num&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To shorten it&amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Intervals</title>
				<link>https://skapande.org/code/intervals/</link>
				<pubDate>Sun, 14 Apr 2024 19:10:43 +0200</pubDate>
				<guid>https://skapande.org/code/intervals/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;open3&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tty-cursor&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tty-screen&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;KEYBOARD&lt;/span&gt;        &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Keystation 49es&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;LOW_C&lt;/span&gt;           &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;CUR&lt;/span&gt;             &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;TTY&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Cursor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;HEIGHT&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;WIDTH&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;TTY&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Screen&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;size&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;NOTENAMES&lt;/span&gt;       &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(C C&lt;span style=&#34;color:#c53b53&#34;&gt;♯&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;D&lt;span style=&#34;color:#c53b53&#34;&gt;♭&lt;/span&gt; D D&lt;span style=&#34;color:#c53b53&#34;&gt;♯&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;E&lt;span style=&#34;color:#c53b53&#34;&gt;♭&lt;/span&gt; E F F&lt;span style=&#34;color:#c53b53&#34;&gt;♯&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;G&lt;span style=&#34;color:#c53b53&#34;&gt;♭&lt;/span&gt; G G&lt;span style=&#34;color:#c53b53&#34;&gt;♯&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;A&lt;span style=&#34;color:#c53b53&#34;&gt;♭&lt;/span&gt; A A&lt;span style=&#34;color:#c53b53&#34;&gt;♯&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;B&lt;span style=&#34;color:#c53b53&#34;&gt;♭&lt;/span&gt; B)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;INTERVAL_NAMES&lt;/span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;i(&lt;span style=&#34;color:#ff966c&#34;&gt;P1&lt;/span&gt; m2 &lt;span style=&#34;color:#ff966c&#34;&gt;M2&lt;/span&gt; m3 &lt;span style=&#34;color:#ff966c&#34;&gt;M3&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;P4&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;A4&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;d5 &lt;span style=&#34;color:#ff966c&#34;&gt;P5&lt;/span&gt; m6 &lt;span style=&#34;color:#ff966c&#34;&gt;M6&lt;/span&gt; m7 &lt;span style=&#34;color:#ff966c&#34;&gt;M7&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;P8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                     m9 &lt;span style=&#34;color:#ff966c&#34;&gt;M9&lt;/span&gt; m10 &lt;span style=&#34;color:#ff966c&#34;&gt;M10&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;P11&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;A11&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;/&lt;/span&gt;d12 &lt;span style=&#34;color:#ff966c&#34;&gt;P12&lt;/span&gt; m13 &lt;span style=&#34;color:#ff966c&#34;&gt;M13&lt;/span&gt; m14 &lt;span style=&#34;color:#ff966c&#34;&gt;M14&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;P15&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# incomplete&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;CHORDNAMES&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;027&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sus2&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;026&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sus2 ♭5&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;0510&amp;#39;&lt;/span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sus2 (1:st inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;036&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;diminished&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;039&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;diminished (1:st inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;069&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;diminished (2:nd inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;037&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;minor&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;049&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;minor (1:st inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;058&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;minor (2:nd inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;047&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;major&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;046&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;major ♭5&amp;#39;&lt;/span&gt; ,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;038&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;major (1:st inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;059&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;major (2:nd inv)&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;048&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;augmented&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;057&amp;#39;&lt;/span&gt;   &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;sus4&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;alias&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;print&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;CUR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;hide&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# Ctrl-C hook&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;CUR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;move_to(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;HEIGHT&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;); &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;WIDTH&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Signal&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;trap(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;SIGINT&amp;#34;&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#82aaff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;WIDTH&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;CUR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;show; &lt;span style=&#34;color:#ff966c&#34;&gt;RD&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;close; &lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt;(&lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# get keyboard and data or quit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nope &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(Can&amp;#39;t find keyboard!)&lt;/span&gt;; &lt;span style=&#34;color:#c3e88d&#34;&gt;exit&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;`aseqdump -l | grep &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;KEYBOARD&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(data &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) ? nope&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; : (port &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; data&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# open pipe (skip write)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;WR&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;RD&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Open3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;popen2(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;aseqdump -p &lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;port&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;); &lt;span style=&#34;color:#ff966c&#34;&gt;WR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;close&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;notename&lt;/span&gt;(no) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;NOTENAMES&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;no&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;divmod(&lt;span style=&#34;color:#ffc777&#34;&gt;12&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]].&lt;/span&gt;upcase )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;interval&lt;/span&gt;(tup) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;INTERVAL_NAMES&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;tup&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]-&lt;/span&gt;tup&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;tritone&lt;/span&gt;(tri) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;CHORDNAMES&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;tri&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;map {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; n &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; tri&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;show&lt;/span&gt;(ch)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;CUR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;move_to(&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ff966c&#34;&gt;HEIGHT&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;CUR&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;clear_line&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;case&lt;/span&gt; ch&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;length&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;note: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; notename(ch&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;interval: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; interval(ch)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;when&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;tritone: (base: %s) %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;notename(ch&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first), tritone(ch)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c53b53&#34;&gt;¤&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;complex: %s (%s)&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;ch&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;), &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;not implemented&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chord &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;while&lt;/span&gt; line &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;RD&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  chord &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[]&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/Control change/&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt;line &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# foot pedal *)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#86e1fc&#34;&gt;/Note (on|off)/&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=~&lt;/span&gt; line&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    note &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; line&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;chomp(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ($1 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;on&amp;#39;&lt;/span&gt;) ? (chord &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; note&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i) : chord&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete(note&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    show(chord&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;sort) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; chord&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;empty?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=begin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;          *)    reset &amp;#39;hung&amp;#39; midi with foot-pedal.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;=end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Short</title>
				<link>https://skapande.org/code/short/</link>
				<pubDate>Fri, 12 Apr 2024 19:02:50 +0200</pubDate>
				<guid>https://skapande.org/code/short/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_writer&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:frm&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:meth&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(frm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s&amp;#39;&lt;/span&gt;, meth &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:puts&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ( @frm, @meth &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; frm, meth )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;ar) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;send&lt;/span&gt; @meth, @frm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[*&lt;/span&gt;ar&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  alias_method :&lt;span style=&#34;color:#c53b53&#34;&gt;đ&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:first&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  alias_method :&lt;span style=&#34;color:#c53b53&#34;&gt;ł&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:last&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;9&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;no&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; define_method(&lt;span style=&#34;color:#c3e88d&#34;&gt;:&amp;#34;_&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;no&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt;) { &lt;span style=&#34;color:#c3e88d&#34;&gt;self&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;no&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; } }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;ĸ&lt;/span&gt;(rx, &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#c3e88d&#34;&gt;scan&lt;/span&gt;(rx)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;bl )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;O &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Out&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s: %s&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( O&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;*&lt;/span&gt;args) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# ==========================================&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;str &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(one 1 two 2 three 3 four 4)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;str&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;ĸ&lt;/span&gt;(&lt;span style=&#34;color:#86e1fc&#34;&gt;/(\w+) (\d)/&lt;/span&gt;) { &lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; _1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;đ&lt;/span&gt;, _1&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;ł&lt;/span&gt; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;O&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;frm &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s&amp;#39;&lt;/span&gt;; O&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;meth &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:p&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;_0 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(one two three)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;_2 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; three&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c53b53&#34;&gt;→&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(hejsan hoppsan i lingonskogen)&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;split(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;_3 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; lingonskogen&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;---------------------------------------------&#xA;ĸ is scan(REGEX).each { BLOCK }&#xA;→ is Out.→&#xA;  and uses output format defined with Out.frm&#xA;  and a print method defined with Out.meth&#xA;&#xA;đ is Array#first&#xA;ł is Array#last&#xA;_0 .. _9 is Array index [0] .. [9]&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Garbage</title>
				<link>https://skapande.org/code/garbage/</link>
				<pubDate>Sat, 06 Apr 2024 20:20:29 +0200</pubDate>
				<guid>https://skapande.org/code/garbage/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Apa&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @lu &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; {} )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;method_missing&lt;/span&gt;(k, v &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( v ? &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (@lu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; v) : @lu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;key?(k) ? @lu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; : &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt; )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_sto&lt;/span&gt;(file) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;write(file, &lt;span style=&#34;color:#ff966c&#34;&gt;Marshal&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;dump(@lu), &lt;span style=&#34;color:#c3e88d&#34;&gt;mode&lt;/span&gt;: &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_rec&lt;/span&gt;(file) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @lu &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Marshal&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;load(&lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;read(file)) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;_eval&lt;/span&gt;(k) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; ( @lu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;eval&lt;/span&gt;(@lu&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;k&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;) )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I was hoping to be able to serialize a full set of data, procs, lambdas. But it still has&amp;rsquo;nt worked out that way. What I got so far is a stupid workaround where procs and lambdas must be stored as strings and then evaluated.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Grest</title>
				<link>https://skapande.org/code/grest/</link>
				<pubDate>Fri, 29 Mar 2024 18:54:16 +0100</pubDate>
				<guid>https://skapande.org/code/grest/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;levenshtein&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;soundex&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wrd &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;GREST&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chars &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#   KEYWORD&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;great &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;GREAT&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;chars &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# VALUE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;diff &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (great &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt; wrd)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# A&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;idx &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Levenshtein&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;distance(wrd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join, great&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# NO OF SHIFTS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;idx&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;times { wrd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;shift }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wrd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;unshift(diff) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# INSERT DIFF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# SOUNDEX ARREST?&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; ((&lt;span style=&#34;color:#ff966c&#34;&gt;Soundex&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new wrd&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;join)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; (&lt;span style=&#34;color:#ff966c&#34;&gt;Soundex&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ARREST&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;to_s) ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;YEP&amp;#39;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;NO&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Trurl</title>
				<link>https://skapande.org/code/trurl/</link>
				<pubDate>Wed, 27 Mar 2024 19:23:25 +0100</pubDate>
				<guid>https://skapande.org/code/trurl/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/curl/trurl&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;trurl&lt;/a&gt; is (I think) maintained by Daniel Stenberg (creator, maintainer of curl).&lt;/p&gt;&#xA;&lt;p&gt;It provides getters and setters for the components of a url.&lt;br&gt;&#xA;The components are: scheme, user, password, options, host, port, path, query, fragment, zoneid.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Matching_brackets</title>
				<link>https://skapande.org/code/matching_brackets/</link>
				<pubDate>Tue, 26 Mar 2024 22:38:50 +0100</pubDate>
				<guid>https://skapande.org/code/matching_brackets/</guid>
				<description>&lt;p&gt;Just a simple little thing&amp;hellip; I want to match curly-brackets in code&amp;hellip;&lt;br&gt;&#xA;Turns out: I can&amp;rsquo;t do it!&lt;/p&gt;&#xA;&lt;p&gt;There is no regex that can do it. You can look ahead and look around all you want.&lt;/p&gt;&#xA;&lt;p&gt;You can not just match char:{ with char:} ..&lt;br&gt;&#xA;Because: What about &lt;code&gt;puts &#39;}HELLO{&#39;&lt;/code&gt; or &lt;code&gt;regx = /\{/&lt;/code&gt; ?&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;d need to start code-parsing.. and I do not have that skill.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Arguments</title>
				<link>https://skapande.org/code/arguments/</link>
				<pubDate>Thu, 14 Mar 2024 00:07:55 +0100</pubDate>
				<guid>https://skapande.org/code/arguments/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Argy&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (@args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;ARGV&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;:first&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;:second&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;].&lt;/span&gt;each_with_index {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;n,i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    define_method &lt;span style=&#34;color:#c3e88d&#34;&gt;:&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;#{&lt;/span&gt;n&lt;span style=&#34;color:#c3e88d&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt;; @args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;; &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Argy&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; (args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;second) ?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;two args (or more): %s &amp;amp; %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first, args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;second&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; :&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first) ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;one arg: %s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; args&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;first : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;no arg&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just a test on command line arguments.&lt;br&gt;&#xA;The class is defining two methods (:first and :second), that returns ARGV[0] OR nil or ARGV[1] OR nil respectively.&lt;/p&gt;&#xA;&lt;p&gt;Then a double ternary if is reporting &amp;rsquo;two or more args&amp;rsquo;, &amp;lsquo;one arg&amp;rsquo; or &amp;rsquo;no args&amp;rsquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Daemon</title>
				<link>https://skapande.org/code/daemon/</link>
				<pubDate>Fri, 08 Mar 2024 21:17:50 +0100</pubDate>
				<guid>https://skapande.org/code/daemon/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s super-easy writing a daemon in ruby with the &lt;code&gt;daemon gem&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;write the code inside a loop (use some sleep).&lt;/li&gt;&#xA;&lt;li&gt;create the server-script by just requiring and initializing daemon.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Now you can use the server-script to:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;start&lt;/li&gt;&#xA;&lt;li&gt;stop&lt;/li&gt;&#xA;&lt;li&gt;restart&lt;/li&gt;&#xA;&lt;li&gt;status&lt;/li&gt;&#xA;&lt;li&gt;run&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;..the code.&lt;br&gt;&#xA;All boilerplate is taken care of. Pure bliss!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Comparable_donkeys</title>
				<link>https://skapande.org/code/comparable_donkeys/</link>
				<pubDate>Fri, 08 Mar 2024 20:12:57 +0100</pubDate>
				<guid>https://skapande.org/code/comparable_donkeys/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;include&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Comparable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;attr_reader&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;:tail&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;initialize&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;tail&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;raise&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;TypeError&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Ior expected a Boolean value&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;!!&lt;/span&gt;tail &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; tail&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    @tail &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; tail&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;&amp;lt;=&amp;gt;&lt;/span&gt;(other) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (@tail ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;=&amp;gt;&lt;/span&gt; other&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;tail ? &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;to_s&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;This one has %s tail&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;@tail ? &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;no&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;donkey1 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; donkey1 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; This one has a tail&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;donkey2 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;tail&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; donkey2 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; This one has no tail&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# a donkey with tail is greater than one without&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; donkey1 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; donkey2 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;puts&lt;/span&gt; donkey1 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; donkey2 &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;donkey3 &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Ior&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#c3e88d&#34;&gt;tail&lt;/span&gt;: &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# two tails!&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# =&amp;gt; Ior expected a Boolean value (TypeError)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Flip Flop</title>
				<link>https://skapande.org/code/flip-flop/</link>
				<pubDate>Thu, 07 Mar 2024 20:04:42 +0100</pubDate>
				<guid>https://skapande.org/code/flip-flop/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;Array&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;ff&lt;/span&gt;(start, finish, &lt;span style=&#34;color:#c3e88d&#34;&gt;inclusive&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;true&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    a,b &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; inclusive ? &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; : &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c3e88d&#34;&gt;select&lt;/span&gt; {&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;i&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt; i &lt;span style=&#34;color:#c099ff&#34;&gt;if&lt;/span&gt; (i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; start)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;(i &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; finish)}&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;a&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;b&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;names &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%w(Otto Arne Peter START Kapris Oregano END Sune Fetto)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;ff(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;START&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;END&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;# [&amp;#34;START&amp;#34;, &amp;#34;Kapris&amp;#34;, &amp;#34;oregano&amp;#34;, &amp;#34;END&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; names&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;ff(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;START&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;END&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#c3e88d&#34;&gt;inclusive&lt;/span&gt;: &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;) &lt;span style=&#34;color:#444a73;font-style:italic&#34;&gt;#[&amp;#34;Kapris&amp;#34;, &amp;#34;Oregano&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I was trying to figure out if there was a way to make the flip-flop operator exclusive. Didn&amp;rsquo;t find much of anything.. so this is what I came up with.&lt;/p&gt;&#xA;&lt;p&gt;Just a first try&amp;hellip; a lot of holes in this solution.&lt;/p&gt;</description>
			</item>
			<item>
				<title>mp3md</title>
				<link>https://skapande.org/code/mp3md/</link>
				<pubDate>Thu, 29 Feb 2024 21:10:00 +0100</pubDate>
				<guid>https://skapande.org/code/mp3md/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;DIR&lt;/span&gt;     &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(content/music/)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;MP3DIR&lt;/span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;%(audio)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$md &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;~&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;MD&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+++&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  title &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;@@title&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  date &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2024&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;02&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;28&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;T18&lt;/span&gt;:&lt;span style=&#34;color:#ffc777&#34;&gt;04&lt;/span&gt;:&lt;span style=&#34;color:#ffc777&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;01&lt;/span&gt;:&lt;span style=&#34;color:#ffc777&#34;&gt;00&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  draft &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c099ff&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+++&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (two curly braces)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt; audio src&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#34;@@title.mp3&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;(closing braces)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;MD&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#82aaff&#34;&gt;create_md&lt;/span&gt;(title)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  path &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s%s.md&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;DIR&lt;/span&gt;, title&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;write(path, $md&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;gsub(&lt;span style=&#34;color:#86e1fc&#34;&gt;/@@title/&lt;/span&gt;, title)) &lt;span style=&#34;color:#c099ff&#34;&gt;unless&lt;/span&gt; &lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;exist? path&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff966c&#34;&gt;Dir&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;glob(&lt;span style=&#34;color:#c3e88d&#34;&gt;format&lt;/span&gt;(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;%s%s/*.mp3&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;DIR&lt;/span&gt;, &lt;span style=&#34;color:#ff966c&#34;&gt;MP3DIR&lt;/span&gt;))&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each &lt;span style=&#34;color:#c099ff&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;file&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;|&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  create_md(&lt;span style=&#34;color:#ff966c&#34;&gt;File&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;basename(file&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;delete_suffix(&lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;.mp3&amp;#39;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I use this to create an md-file for every mp3-file found in subfolder.&#xA;(closing braces) is replaced with &amp;lsquo;}}&amp;rsquo; and (two curly braces) is replaced with &amp;lsquo;{{&amp;rsquo;&lt;/p&gt;&#xA;&lt;p&gt;inserting shortcode from layouts (a simple audio tag)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fizzbuzz</title>
				<link>https://skapande.org/code/fizzbuzz/</link>
				<pubDate>Wed, 28 Feb 2024 21:50:25 +0100</pubDate>
				<guid>https://skapande.org/code/fizzbuzz/</guid>
				<description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt;(n) { (n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;+&lt;/span&gt; (n&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;2&lt;/span&gt; : &lt;span style=&#34;color:#ffc777&#34;&gt;0&lt;/span&gt;) }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#ffc777&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;..&lt;/span&gt;&lt;span style=&#34;color:#ffc777&#34;&gt;15&lt;/span&gt;)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;each { &lt;span style=&#34;color:#c3e88d&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#c099ff&#34;&gt;nil&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;:fizz&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;:buzz&lt;/span&gt;,&lt;span style=&#34;color:#c3e88d&#34;&gt;:fizzbuzz&lt;/span&gt;&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;][&lt;/span&gt;d&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;.&lt;/span&gt;(_1)&lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;||&lt;/span&gt; _1 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title></title>
				<link>https://skapande.org/code/wezterm_create_tab/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://skapande.org/code/wezterm_create_tab/</guid>
				<description>&lt;p&gt;I wanted to use &amp;lt;Leader&amp;gt;+r to toggle fullscreen; create a new tab; create three panes in that tab. Tried &lt;code&gt;wezterm.action.Multiple&lt;/code&gt; .. but settled with &lt;code&gt;action_callback&lt;/code&gt; and the &lt;code&gt;mux&lt;/code&gt; API.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c8d3f5;background-color:#222436;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    key &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;r&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mods &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;LEADER&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    action &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wezterm.action_callback(&lt;span style=&#34;color:#c099ff&#34;&gt;function&lt;/span&gt;(win, pane)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      win:toggle_fullscreen {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; wmux &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; win:mux_window {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#c099ff&#34;&gt;local&lt;/span&gt; t, p, w &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; wmux:spawn_tab {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      p:split {direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Bottom&amp;#39;&lt;/span&gt;, size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.2&lt;/span&gt;, args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;irb&amp;#39;&lt;/span&gt; }}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      p:split {direction &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;Right&amp;#39;&lt;/span&gt;, size &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ffc777&#34;&gt;0.2&lt;/span&gt;, args &lt;span style=&#34;color:#c3e88d;font-weight:bold&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#c3e88d&#34;&gt;&amp;#39;ri&amp;#39;&lt;/span&gt; }}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      p:activate()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c099ff&#34;&gt;end&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
	</channel>
</rss>
