<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>posts on Lost Among Notes</title>
    <link>https://blog.silvela.org/post/</link>
    <description>Recent content in posts on Lost Among Notes</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Tue, 31 Mar 2026 14:40:55 +0200</lastBuildDate>
    <atom:link href="https://blog.silvela.org/post/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Introducing Glareless, a browser extension that helps your eyes</title>
      <link>https://blog.silvela.org/post/2026-03-31-glareless/</link>
      <pubDate>Tue, 31 Mar 2026 14:40:55 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2026-03-31-glareless/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve created &lt;em&gt;Glareless&lt;/em&gt;, a browser extension that helps your eyes by ensuring&#xA;that background for text is not excessively bright.&lt;/p&gt;&#xA;&lt;p&gt;It works in the major browsers. See &lt;a href=&#34;#links&#34;&gt;Installation links&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;contents&#34;&gt;Contents&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#motivation&#34;&gt;Motivation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#links&#34;&gt;Installation links&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#open-source&#34;&gt;Open Source, hosted on sourcehut&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#ai&#34;&gt;AI?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#algo&#34;&gt;How the algorithm works&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;To sum it up: pages that use full 100% white as background for text are not good&#xA;for your eyes. On one hand, they force you to stare at a bright light while&#xA;reading, and on the other, they can result in glare or negatively affect text&#xA;rendering.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The madness of bright backgrounds for text on screens</title>
      <link>https://blog.silvela.org/post/2026-03-31-bright-backgrounds/</link>
      <pubDate>Tue, 31 Mar 2026 14:40:47 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2026-03-31-bright-backgrounds/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve created a browser extension that ensures backgrounds for text are not too&#xA;bright. That&amp;rsquo;s the subject of my next post: &lt;a href=&#34;https://blog.silvela.org/post/2026-03-31-glareless/&#34;&gt;glareless&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This post is about the issues with bright backgrounds for reading.&lt;/p&gt;&#xA;&lt;h2 id=&#34;contents&#34;&gt;Contents&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#bad-for-reading&#34;&gt;White background on screen is bad for reading&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#pure-white-on-screen&#34;&gt;Pure white as a background makes no sense&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#some-coping&#34;&gt;Some coping strategies&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#better-coping&#34;&gt;Better coping strategies&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#real-fix&#34;&gt;The ideal fix may never come&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bad-for-reading&#34;&gt;White backgrounds on screen are bad for reading&lt;/h2&gt;&#xA;&lt;p&gt;Why is it that many text-heavy websites, among them almost all newspapers and&#xA;magazines, use full 100% white for backgrounds? Perhaps they think it produces&#xA;the feel of paper. &lt;br&gt;&#xA;Whatever the reasoning, it&amp;rsquo;s a bad idea.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ciclops and CloudNativePG</title>
      <link>https://blog.silvela.org/post/2026-03-31-ciclops/</link>
      <pubDate>Tue, 31 Mar 2026 14:40:33 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2026-03-31-ciclops/</guid>
      <description>&lt;p&gt;For completeness, since I&amp;rsquo;m writing next about &lt;a href=&#34;https://blog.silvela.org/post/2026-03-31-glareless/&#34;&gt;glareless&lt;/a&gt;, an open source tool I&amp;rsquo;ve developed, and since I&amp;rsquo;ve&#xA;created a new tag &amp;ldquo;open-source&amp;rdquo; in my site, here&amp;rsquo;s an entry about&#xA;&lt;a href=&#34;https://github.com/cloudnative-pg/ciclops&#34;&gt;Ciclops&lt;/a&gt;, a GitHub action that helps&#xA;make sense of the test results in a CI/CD pipeline with many &amp;ldquo;strategy matrix&amp;rdquo;&#xA;branches.&lt;/p&gt;&#xA;&lt;p&gt;I created it Ciclops because in the CloudNativePG github, we had a deluge of&#xA;testing data that was difficult to make sense of. I wrote a post in the&#xA;&lt;a href=&#34;https://cloudnative-pg.io/blog/introducing-ciclops/&#34;&gt;CloudNativePG blog&lt;/a&gt; about&#xA;it, so please refer to that for details and motivation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>If your monitor or TV has a Sharpness control, set it to zero</title>
      <link>https://blog.silvela.org/post/2025-12-02-kill-sharpness/</link>
      <pubDate>Tue, 02 Dec 2025 12:59:29 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2025-12-02-kill-sharpness/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;p&gt;The sharpness setting on TVs and monitors produces edge-enhancement distortions to create the illusion of a sharper image.&#xA;Text characters are almost entirely edge. The sharpness processing messes with font antialiasing, and can harm text rendering and readability.&lt;/p&gt;&#xA;&lt;p&gt;You should set the sharpness all the way to zero to see the source image undistorted.&#xA;Even on your TV, the sharpness setting should be turned to zero.&lt;/p&gt;&#xA;&lt;h2 id=&#34;images-of-text-rendered-with-sharpness-turned-onoff&#34;&gt;Images of text rendered with sharpness turned ON/OFF&lt;/h2&gt;&#xA;&lt;p&gt;The difference is noticeable when reading a page, and especially noticeable with serif fonts. See a couple of comparison shots, taken with a camera set on a tripod and in the exact same conditions of focus and exposure:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac sometimes goes zombie using a KVM switch</title>
      <link>https://blog.silvela.org/post/2025-12-02-zombie-mac/</link>
      <pubDate>Tue, 02 Dec 2025 12:56:51 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2025-12-02-zombie-mac/</guid>
      <description>&lt;p&gt;I use a KVM switch (an &lt;em&gt;ezcoo&lt;/em&gt;) on my desktop, to switch between a Mac mini, a Linux box, and a Windows box.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes when I switch away from the mac, and later come back to it, the mac is in a bad state. The screen goes to sleep because it receives no signal. If I press lots of keys and move the mouse, the mac beeps loudly, so it&amp;rsquo;s definitely not asleep, and is receiving keyboard-mouse input. &lt;br&gt;&#xA;I used to resort to shutting down the mac via the power button when this happened.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Home backup and sync</title>
      <link>https://blog.silvela.org/post/2025-10-01-personal-backups-sync/</link>
      <pubDate>Wed, 01 Oct 2025 11:26:56 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2025-10-01-personal-backups-sync/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://syncthing.net&#34;&gt;Syncthing&lt;/a&gt; is a brilliant tool that works across any desktop on your network. Your data does not leave the network. Perfect for immediate backup/sync of current data. I keep a small Linux box always-on to always have redundancy.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://nextcloud.com/&#34;&gt;NextCloud&lt;/a&gt; for cloud-based sync, including with mobile devices and servers outside your network. The iOS app &lt;a href=&#34;https://github.com/nextcloud/notes-ios&#34;&gt;NextCloud Notes&lt;/a&gt; is bare-bones, works well enough, and handles network interruptions and airplane mode. The server is self-hostable, but there are also cheap &lt;a href=&#34;https://nextcloud.com/sign-up/&#34;&gt;commercial offerings for hosting&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>State of the AI bubble. Economists weigh in</title>
      <link>https://blog.silvela.org/post/2025-10-01-state-of-the-bubble/</link>
      <pubDate>Wed, 01 Oct 2025 10:40:37 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2025-10-01-state-of-the-bubble/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s an awkward thing. On one hand, like many other computer programmers, I root for the success of Artificial Intelligence, by which I mean the specialty within Computer Science. But in most discussions today, &amp;ldquo;Artificial Intelligence&amp;rdquo; is used as a synonym of ChatGPT, Claude, and other tools and companies in the current generative AI race.&lt;/p&gt;&#xA;&lt;p&gt;So, on the other hand I find myself shaking my head when I hear people saying that these tools are &amp;ldquo;like having a PhD on any subject you need&amp;rdquo;, are ready to take over coding from humans, or are on the verge of &amp;ldquo;AGI&amp;rdquo; or &amp;ldquo;the singularity&amp;rdquo;. An idiot whose name I don&amp;rsquo;t wish to recall suggests that we have already entered &amp;ldquo;the gentle singularity&amp;rdquo; and &amp;ldquo;crossed the event horizon.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The worst code I ever saw — or, politics are unavoidable</title>
      <link>https://blog.silvela.org/post/2025-04-11-code-politics/</link>
      <pubDate>Fri, 11 Apr 2025 12:05:33 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2025-04-11-code-politics/</guid>
      <description>&lt;p&gt;Many years ago, I was working on a search engine that wanted to compete with&#xA;Google. I was in the team that rendered query answers on the web. We used an&#xA;in-house webserver written in C++, and most of our code was C++ that hooked&#xA;tightly into the webserver, which got us great performance.&lt;/p&gt;&#xA;&lt;p&gt;Other teams in the company were in charge of crawling, indexing, classifying,&#xA;and sometimes they&amp;rsquo;d want to accelerate the adoption of some of their algorithms&#xA;into the displayed page, and would ask for our collaboration. And so it was that one&#xA;day my boss asked me to oversee the integration of a piece of code&#xA;from a team that wanted to showcase their new &amp;ldquo;image carousel&amp;rdquo;&#xA;technology. I started reading the code. It was big, and truly awful. Messy,&#xA;incoherent. There were allocations opened that not only were not reclaimed, but&#xA;that were even unnecessary, I suspected.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Synecdoche, AI</title>
      <link>https://blog.silvela.org/post/2025-03-25-synecdoche-ai/</link>
      <pubDate>Tue, 25 Mar 2025 23:08:02 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2025-03-25-synecdoche-ai/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m pretty skeptical about the hype with today&amp;rsquo;s machine learning and large&#xA;language models and generative AI. &lt;br&gt;&#xA;To be clear, I&amp;rsquo;m not skeptical about AI in general as a discipline. I am also&#xA;not denying that the current tools can produce impressive demos and can have an&#xA;economic impact. But I think these tools have been over-sold. The AI race we see&#xA;now, is in my opinion a modern version of Tulip Mania.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Better table-driven tests  (if using Ginkgo)</title>
      <link>https://blog.silvela.org/post/2024-09-28-better-testing-ginkgo/</link>
      <pubDate>Sat, 28 Sep 2024 11:50:00 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2024-09-28-better-testing-ginkgo/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;p&gt;ginkgo&amp;rsquo;s table-driven DSL is best avoided. This post shows a better&#xA;way to do table-driven testing with ginkgo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;problems-with-ginkgos-table-driven-testing-dsl&#34;&gt;Problems with ginkgo&amp;rsquo;s table-driven testing DSL&lt;/h2&gt;&#xA;&lt;p&gt;In &lt;a href=&#34;https://cloudnative-pg.io&#34;&gt;CloudNativePG&lt;/a&gt; we have a collection of&#xA;&lt;a href=&#34;https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.18.4/pkg/reconcile&#34;&gt;Kubernetes reconcilers&lt;/a&gt;&#xA;that manage different aspects of &lt;a href=&#34;https://www.postgresql.org&#34;&gt;PostgreSQL&lt;/a&gt;&#xA;for our &lt;a href=&#34;https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/&#34;&gt;custom resource&lt;/a&gt;,&#xA;Cluster, which represents a&#xA;&lt;a href=&#34;https://www.postgresql.org/docs/current/creating-cluster.html&#34;&gt;database cluster&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;These reconcilers have a standard signature. For example, for our&#xA;&lt;a href=&#34;https://www.postgresql.org/docs/current/manage-ag-tablespaces.html&#34;&gt;tablespace&lt;/a&gt;&#xA;reconciler:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;err&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tablespaceReconciler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Reconcile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;reconcile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{})&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The outputs of a &lt;code&gt;Reconcile()&lt;/code&gt; call are simple: an error field, and a&#xA;&lt;a href=&#34;https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.18.4/pkg/reconcile#Result&#34;&gt;&lt;code&gt;Result&lt;/code&gt;&lt;/a&gt;&#xA;that may call for re-queueing to retry later.&#xA;The main action of a reconciler like the above is in its side effects on a&#xA;resource. In our case, on a Cluster.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing programs to clarify calculus</title>
      <link>https://blog.silvela.org/post/2024-01-14-math-notation/</link>
      <pubDate>Sun, 11 Feb 2024 09:58:27 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2024-01-14-math-notation/</guid>
      <description>&lt;p&gt;You have to hand it to mathematicians, they create enticing notation.&#xA;In basic calculus already there&amp;rsquo;s &lt;code&gt;∫&lt;/code&gt; and &lt;code&gt;∂&lt;/code&gt; and their myriad&#xA;combinations in complicated layouts.&#xA;I remember looking at my father&amp;rsquo;s physics and math textbooks when I had just&#xA;started learning calculus in high-school, and imagining all sorts of magical&#xA;powers that would be unlocked by the arcane symbols.&lt;/p&gt;&#xA;&lt;p&gt;Mathematics has a lot of flexibility in terms of language too. Spoken languages&#xA;can be used, and then there are meta-mathematical languages like set theory,&#xA;logic or category theory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The hype of rewrites</title>
      <link>https://blog.silvela.org/post/2023-09-10-hyping-rewrites/</link>
      <pubDate>Sun, 10 Sep 2023 22:20:50 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2023-09-10-hyping-rewrites/</guid>
      <description>&lt;p&gt;James Hague’s discontinued &lt;a href=&#34;https://prog21.dadgum.com/&#34;&gt;&lt;em&gt;Programming in the 21st&#xA;Century&lt;/em&gt;&lt;/a&gt; is one of my favorite programming&#xA;websites. I like the writing, I like the lack of “web 2.0” widgets to seek&#xA;popularity. I like the short, carefully written articles.&lt;/p&gt;&#xA;&lt;p&gt;I just read &lt;a href=&#34;https://prog21.dadgum.com/97.html&#34;&gt;&lt;em&gt;Follow the Vibrancy&lt;/em&gt;&lt;/a&gt;, one of&#xA;several articles where Hague talks of communities formed around a beloved&#xA;technology, that don’t seem to make things with that technology. &lt;em&gt;Follow the&#xA;Vibrancy&lt;/em&gt; looks in the opposite direction: communities where many things are&#xA;being built.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Who gives a shit about tangents?</title>
      <link>https://blog.silvela.org/post/2023-06-16-tangents/</link>
      <pubDate>Fri, 16 Jun 2023 11:15:46 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2023-06-16-tangents/</guid>
      <description>&lt;p&gt;Recently I’ve had a breakthrough in my understanding of a piece of mathematics&#xA;that I had struggled with for years, mostly for the obscure way it&amp;rsquo;s presented&#xA;usually. My &lt;a href=&#34;https://blog.silvela.org/post/2023-06-11-differential-forms/&#34;&gt;previous post&lt;/a&gt; is&#xA;about that.&lt;/p&gt;&#xA;&lt;p&gt;It reminded me that the derivative is generally introduced in terms of tangents.&#xA;And it makes no damn sense. Before being exposed to calculus, high-school&#xA;students have not been trying to calculate tangents. Tangents just don&amp;rsquo;t come&#xA;up. Perhaps they once did, but today&amp;rsquo;s high school math is much less geometric&#xA;than it once was.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Differential Forms are simpler than you&#39;ve been told</title>
      <link>https://blog.silvela.org/post/2023-06-11-differential-forms/</link>
      <pubDate>Sun, 11 Jun 2023 13:26:35 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2023-06-11-differential-forms/</guid>
      <description>&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&lt;/h2&gt;&#xA;&lt;p&gt;The great success of differential forms is to generalize determinants and&#xA;cofactor expansions via the wedge product, giving a viable theory of&#xA;algebraic area, and then to use this theory to relate integrals over&#xA;k-dimensional &amp;ldquo;volumes&amp;rdquo; with integrals over their (k-1)-dimensional boundary&#xA;&amp;ldquo;surfaces&amp;rdquo;. &lt;br&gt;&#xA;Once you understand the wedge product and the importance of multi-linearity,&#xA;the definition of the exterior derivative is almost inevitable, and the rest&#xA;is just book-keeping.&lt;/p&gt;</description>
    </item>
    <item>
      <title>And Then …</title>
      <link>https://blog.silvela.org/post/2023-03-10-and-then/</link>
      <pubDate>Fri, 10 Mar 2023 14:55:08 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2023-03-10-and-then/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;: there’s that adage/meme about people writing simple code when they&#xA;are beginners, then writing increasingly complicated code as they gain&#xA;experience, only to go back to simplicity when they are very experienced. But&#xA;I don’t think we do “go back”.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;I’m a big fan of the show &lt;em&gt;South Park&lt;/em&gt;. The creators, Matt Stone and Trey&#xA;Parker, gave one of my favorite talks. It&amp;rsquo;s a short talk about how to write&#xA;stories.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making a living from open-source</title>
      <link>https://blog.silvela.org/post/2023-02-19-living-from-open-source/</link>
      <pubDate>Sun, 19 Feb 2023 10:00:14 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2023-02-19-living-from-open-source/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t generally talk about my jobs in this blog. But in my current job at EDB&#xA;I&amp;rsquo;m getting to contribute to open-source projects, and I could not be prouder.&lt;/p&gt;&#xA;&lt;p&gt;For me, as for many in my generation, the advent of Linux and other software&#xA;packaged in distributions like &lt;a href=&#34;https://www.debian.org/&#34;&gt;Debian&lt;/a&gt; was an eye&#xA;opener, an education, an inspiration. I suddenly had access to all these tools&#xA;honed over decades, all this rich heritage and limitless access.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Audio excursion</title>
      <link>https://blog.silvela.org/post/2023-02-18-audiophilia-again/</link>
      <pubDate>Sat, 18 Feb 2023 13:13:58 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2023-02-18-audiophilia-again/</guid>
      <description>&lt;p&gt;The last couple of months I&amp;rsquo;ve had a relapse of my audiophilia, which had laid&#xA;dormant for years.&lt;/p&gt;&#xA;&lt;p&gt;I got a subwoofer, which I had read was one of the biggest improvements one&#xA;could make to (most) home hi-fi systems. That turned out to be quite the rabbit&#xA;hole. Low frequencies are very challenging to get right in domestic audio. All&#xA;because of physics.&lt;/p&gt;&#xA;&lt;p&gt;Once you shop around you start to realize that subwoofers are power-hungry.&#xA;While an 80 watt-per-channel stereo amplifier is perfectly respectable,&#xA;subwoofers will generally sport at least a 150 watt amplifier.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; You often&#xA;find 300 watt amps, and quite a few subs that are well regarded and quite&#xA;affordable will have 600 watts and up. &lt;br&gt;&#xA;You also see recommendations to get at least two subwoofers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go is a great Language for Object Oriented Programming</title>
      <link>https://blog.silvela.org/post/2022-06-11-oo-with-go/</link>
      <pubDate>Sat, 11 Jun 2022 19:11:03 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2022-06-11-oo-with-go/</guid>
      <description>&lt;p&gt;In 2017, in Dublin, I gave a presentation on Go as a great language to learn&#xA;object oriented programming with. I have the&#xA;&lt;a href=&#34;https://blog.silvela.org/post/oo-with-go/&#34;&gt;slide deck on this blog&lt;/a&gt;. A colleague told me&#xA;recently that he was intrigued by the premise, and that it was worth developing&#xA;into a post. So here goes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Premise:&lt;/strong&gt; Go is not usually thought of as an object oriented language, due to&#xA;its lack of inheritance. My position on this is that inheritance is not really a&#xA;core benefit of OO, and that by ignoring it, Go captures what is best of the&#xA;original &lt;em&gt;message passing&lt;/em&gt; concept.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comment Threads and Computer Science Fundamentals</title>
      <link>https://blog.silvela.org/post/2022-04-30-comment-threads/</link>
      <pubDate>Sat, 30 Apr 2022 09:14:45 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2022-04-30-comment-threads/</guid>
      <description>&lt;p&gt;A personal side-project of mine has turned out to have unexpected technical depth,&#xA;and provide a good teachable example of breadth-first-search,&#xA;depth-first-search, and recursion.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Recently I volunteered to preserve a WordPress blog by translating it into a format&#xA;viewable in one&amp;rsquo;s own computer and easily host-able without depending on server-side&#xA;functionality.&#xA;I had done that for my two WordPress blogs years ago, and it had not been hard.&lt;/p&gt;&#xA;&lt;p&gt;But this blog had a lot of content in the form of long comment threads. A very&#xA;active community had been having discussions over fifteen years. The comments&#xA;should be preserved, and should be viewable as threaded comments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Chosen One - recruiting</title>
      <link>https://blog.silvela.org/post/2022-04-18-the-chosen-one/</link>
      <pubDate>Mon, 18 Apr 2022 01:36:11 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2022-04-18-the-chosen-one/</guid>
      <description>&lt;p&gt;Recently, at the tender age of 46, I found myself in the market for a new job.&#xA;The software development world is very skewed towards youth, and at many&#xA;companies, older people (say late thirties) are expected to be on&#xA;the road to becoming managers, progressively removed from the coding trenches.&lt;/p&gt;&#xA;&lt;p&gt;I still want to program. The job interviews I was going through were real technical ones.&#xA;For my last two jobs I had gone through shorter processes more concentrated on&#xA;confirming team and culture fit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Acme Tricks</title>
      <link>https://blog.silvela.org/post/2021-12-11-acme-tricks/</link>
      <pubDate>Sat, 11 Dec 2021 01:36:11 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-12-11-acme-tricks/</guid>
      <description>&lt;h3 id=&#34;contents&#34;&gt;Contents&lt;/h3&gt;&#xA;&lt;p&gt;Acme for &lt;code&gt;git&lt;/code&gt; — using it as your terminal — fixing &lt;code&gt;zsh&lt;/code&gt; — changing the font —&#xA;running on WSL — leveraging &lt;code&gt;plumber&lt;/code&gt; — using the new Go port — finding information —&#xA;getting started&lt;/p&gt;&#xA;&lt;p&gt;References: &lt;a href=&#34;https://9fans.github.io/plan9port/&#34;&gt;Plan9 Port&lt;/a&gt;; &lt;a href=&#34;http://cat-v.org&#34;&gt;Cat-v&lt;/a&gt;;&#xA;&lt;a href=&#34;https://web.mit.edu/~simsong/www/ugh.pdf&#34;&gt;UNIX HATERS Handbook&lt;/a&gt; (esp. § 6. Terminal Insanity)&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;I was a die-hard Emacs user for a long time. In 2014 I discovered &lt;a href=&#34;http://acme.cat-v.org&#34;&gt;Acme&lt;/a&gt;, and&#xA;though these days I do much of my work on VS Code and GoLand, Acme&#xA;remains my Swiss Army knife.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding Inspiration in Typography (looking from tech)</title>
      <link>https://blog.silvela.org/post/2021-10-17-typography/</link>
      <pubDate>Sat, 23 Oct 2021 10:29:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-10-17-typography/</guid>
      <description>&lt;h2 id=&#34;the-rabbit-hole&#34;&gt;The rabbit hole&lt;/h2&gt;&#xA;&lt;p&gt;I started paying consistent attention to fonts and typography around 2014,&#xA;likely because I was developing presbyopia. I noticed I had to squint often or&#xA;tilt my glasses in order to parse some text on screen. This was especially true&#xA;for the text I worked with mainly: computer code rendered in a monospaced font.&lt;/p&gt;&#xA;&lt;p&gt;I started reading books on type, and becoming more and more interested. I highly&#xA;recommend&#xA;&lt;a href=&#34;https://practicaltypography.com/&#34;&gt;Butterick&amp;rsquo;s Practical Typography&lt;/a&gt;&#xA;as a starting point, and Erik Spiekermann&amp;rsquo;s entertaining and short and lovely&#xA;book &amp;ldquo;Stop Stealing Sheep &amp;amp; Find Out How Type Works&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP status in Go. Or, composition rules</title>
      <link>https://blog.silvela.org/post/2021-06-27-capturing-http-status/</link>
      <pubDate>Sun, 04 Jul 2021 09:29:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-06-27-capturing-http-status/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;If C++ and Java are about type hierarchies and the taxonomy of types,&#xA;Go is about composition.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;from Rob Pike in &lt;a href=&#34;https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html&#34;&gt;&lt;em&gt;Less is exponentially more.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;We can see Go&amp;rsquo;s pervasive philosophy of composition at play in the&#xA;&lt;a href=&#34;https://golang.org/pkg/net/http/&#34;&gt;&lt;code&gt;net/http&lt;/code&gt;&lt;/a&gt; package.&lt;/p&gt;&#xA;&lt;p&gt;Say you&amp;rsquo;ve built a server in Go, and you would like to know when handlers&#xA;return a 200-range code or a 500-range code.&#xA;For example, you may want to capture metrics for your &lt;em&gt;Prometheus&lt;/em&gt;. Or,&#xA;you may want to alert your crash-reporting system on every 500.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Simple Reusable Scheduler in Go</title>
      <link>https://blog.silvela.org/post/2021-05-29-scheduler-in-go/</link>
      <pubDate>Sat, 29 May 2021 09:29:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-05-29-scheduler-in-go/</guid>
      <description>&lt;p&gt;Tagline: You (still) don&amp;rsquo;t need a queueing service.&lt;/p&gt;&#xA;&lt;p&gt;I recently needed a module that would schedule work for a future time on behalf&#xA;of users, and would execute it at said time. After some thought, I came to an&#xA;easy design that leveraged the Go standard library.&lt;/p&gt;&#xA;&lt;p&gt;Some constraints I wanted satisfied:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The scheduling should be driven from the database (a relational DB in my case.)&lt;/li&gt;&#xA;&lt;li&gt;Users should be able to update their desired scheduled times.&lt;/li&gt;&#xA;&lt;li&gt;The schedule updates should be picked up regularly, but not necessarily&#xA;to-the-minute. Say, every 15 minutes.&lt;/li&gt;&#xA;&lt;li&gt;The starting time of the scheduled work should be honored to the minute.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;These last two items are not in conflict. Think of an airport updating the&#xA;schedule of departures once every hour on the hour, though planes may be slated&#xA;to leave at any time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Programmer as a Non-Fungible Artisan</title>
      <link>https://blog.silvela.org/post/2021-05-22-top-down-fad/</link>
      <pubDate>Sun, 23 May 2021 09:29:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-05-22-top-down-fad/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Is it possible that software is not like anything else, that it is meant to be&#xA;discarded: that the whole point is to always see it as a soap bubble?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Alan J. Perlis&lt;/p&gt;&#xA;&lt;p&gt;Oh, the fads affecting the practice of programming: I&amp;rsquo;ve witnessed the rise&#xA;or/and fall of Object-Oriented Design, Patterns, TDD, AOP, &amp;ldquo;scripting&#xA;languages&amp;rdquo;, JVM, Hadoop, XML/SOAP, REST, etc.&lt;/p&gt;&#xA;&lt;p&gt;Probably the original programming fad is &lt;em&gt;Top-Down Design&lt;/em&gt;. &lt;br&gt;&#xA;Paul Krugman would call it a zombie idea: it never quite dies. I had a&#xA;colleague at Amazon who was constantly evangelizing Top-Down design. Any issue&#xA;with a project had him flying into an accusation that you had not worshipped at&#xA;the altar of Top-Down design.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What-if&#39;s in basic Mathematics</title>
      <link>https://blog.silvela.org/post/2021-03-13-what-if-math/</link>
      <pubDate>Sat, 13 Mar 2021 09:29:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-03-13-what-if-math/</guid>
      <description>&lt;p&gt;Who was the first person to think of eating lobster? Who invented the wheel?&#xA;Some of the best ideas seem to have come after a simple &lt;em&gt;What-if?&lt;/em&gt; moment.&lt;/p&gt;&#xA;&lt;p&gt;Some what-if experiments are wayward, and when they work it&amp;rsquo;s just funny.&lt;/p&gt;&#xA;&lt;p&gt;Think of Eli Cash, the not-a-genius novelist in &lt;em&gt;The Royal Tenenbaums&lt;/em&gt;, who&#xA;&lt;a href=&#34;https://youtu.be/XeKjKWXWZOE&#34;&gt;says about his hit novel &lt;em&gt;Old Custer&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Well, everyone knows Custer died at Little Bighorn. What this book presupposes&#xA;is&amp;hellip; maybe he didn&amp;rsquo;t?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go tests and MySQL Transactions</title>
      <link>https://blog.silvela.org/post/2021-02-21-go-transaction-isolation/</link>
      <pubDate>Sun, 21 Feb 2021 09:49:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-02-21-go-transaction-isolation/</guid>
      <description>&lt;h2 id=&#34;parallel-testing&#34;&gt;Parallel testing&lt;/h2&gt;&#xA;&lt;p&gt;Go has good tooling for testing out of the box. To increase speed, it generally&#xA;runs tests in parallel.&lt;/p&gt;&#xA;&lt;p&gt;At work, we noticed that with our growing codebase, our test suite would sometimes&#xA;have failed tests due to database deadlocks. Rerunning the failed tests&#xA;would fix this, and it wasn&amp;rsquo;t happening that often anyway, so we didn&amp;rsquo;t worry&#xA;too much.&lt;/p&gt;&#xA;&lt;p&gt;Database deadlocks are not as bad as they sound, and databases have a good way&#xA;of dealing with them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Polynomials are strange</title>
      <link>https://blog.silvela.org/post/2021-02-16-polynomials-are-strange/</link>
      <pubDate>Fri, 19 Feb 2021 20:49:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-02-16-polynomials-are-strange/</guid>
      <description>&lt;h2 id=&#34;two-headed-things&#34;&gt;Two-headed things&lt;/h2&gt;&#xA;&lt;p&gt;Polynomials are unexpectedly strange.&#xA;They&amp;rsquo;re familiar from primary school, probably the first &lt;em&gt;functions&lt;/em&gt; we study.&#xA;But start studying abstract algebra or&#xA;algebraic geometry, and they turn into two-headed beasts.&lt;/p&gt;&#xA;&lt;p&gt;In abstract algebra you start to emphasize the algebraic structure of polynomials.&#xA;You define addition of two polynomials much like you define component-wise&#xA;addition of vectors. Multiplication gives polynomials a &lt;strong&gt;ring&lt;/strong&gt; structure.&lt;/p&gt;&#xA;&lt;p&gt;The textbook definition of the polynomial ring \( K[x]\) over a&#xA;field \( K\) de-emphasizes that polynomials are functions.&#xA;You could use vector notation to make this even clearer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A few bits about text on screens</title>
      <link>https://blog.silvela.org/post/2021-01-14-musings/</link>
      <pubDate>Thu, 14 Jan 2021 20:49:18 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2021-01-14-musings/</guid>
      <description>&lt;h2 id=&#34;the-madness-of-font-rendering-in-macos&#34;&gt;The madness of font rendering in macOS&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;macOS&lt;/em&gt; font rendering is getting worse and worse for non-Retina screens.&lt;/p&gt;&#xA;&lt;p&gt;The iPad renders crisp text, so can&amp;rsquo;t comment on &lt;em&gt;iOS/iPadOS&lt;/em&gt;, but on my&#xA;respectable 2560x1440 monitor, using &lt;em&gt;macOS Big Sur&lt;/em&gt;, text seemed somewhat fuzzy. To the&#xA;point where I was thinking I&amp;rsquo;d have to buy a 4K monitor. On Windows and Linux,&#xA;the same monitor rendered text like a champ, so the problem was not&#xA;the screen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Math year one. Classes</title>
      <link>https://blog.silvela.org/post/2020-06-14-math-year-one-classes/</link>
      <pubDate>Sun, 14 Jun 2020 15:49:18 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2020-06-14-math-year-one-classes/</guid>
      <description>&lt;p&gt;I’ve started a Master’s degree in Mathematics. This post is a summary of the classes I’ve taken in the prequel&#xA;year. The 2020 / 2021 session will be &amp;ldquo;the master proper&amp;rdquo;.&#xA;There’s a &lt;a href=&#34;https://lost.silvela.org/post/2020-06-14-math-year-one/&#34;&gt;higher level post&lt;/a&gt; on my personal blog.&lt;/p&gt;&#xA;&lt;h2 id=&#34;galois-theory&#34;&gt;Galois Theory&lt;/h2&gt;&#xA;&lt;p&gt;This was my greatest fear and my biggest challenge. I had never seen abstract&#xA;algebra at the university level, and though linear algebra is a sibling, there’s&#xA;just so much modern algebra to absorb. This subject was offered to junior and&#xA;senior undergraduates that had taken a year of Algebraic Structures, where&#xA;they’d have learned about rings, groups, fields and the like.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Opinions matter</title>
      <link>https://blog.silvela.org/post/2020-04-19-opinions-matter/</link>
      <pubDate>Sun, 19 Apr 2020 09:58:11 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2020-04-19-opinions-matter/</guid>
      <description>&lt;p&gt;Opinions and feelings matter. Even in technical fields.&lt;/p&gt;&#xA;&lt;p&gt;I live overwhelmed by all the things I should be learning, by the incessant din of new fads in my industry. To help me make choices, I often look for personal opinions or experiences.&lt;/p&gt;&#xA;&lt;p&gt;Say I&amp;rsquo;m thinking of learning a new programming language; I want to know, How does it feel? Is it easy to read? Easy to modify? Does it feel heavy? Does it clutter your thinking? &lt;br&gt;&#xA;I care about these issues. When discussing with colleagues at work, this is the type of conversation I may well have.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Go JSON safe (for JavaScript)</title>
      <link>https://blog.silvela.org/post/2020-04-19-safe-go-json/</link>
      <pubDate>Sun, 19 Apr 2020 09:48:11 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2020-04-19-safe-go-json/</guid>
      <description>&lt;p&gt;Go has many things going for it. The marshalling package is generally one of&#xA;them. Very well thought out and easy to use.&lt;/p&gt;&#xA;&lt;p&gt;This package holds a surprise, though, when shipping JSON to software built with&#xA;other languages: nil Go slices marshal to &lt;code&gt;null&lt;/code&gt; rather than the empty array&#xA;&lt;code&gt;[]&lt;/code&gt;, and nil maps marshal to &lt;code&gt;null&lt;/code&gt; rather than the empty map &lt;code&gt;{}&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;These are not bugs. Indeed, in Go, &lt;code&gt;nil&lt;/code&gt; is the zero value for slices as well as&#xA;for maps. They&amp;rsquo;re reference types, pointer-like, and &lt;code&gt;null&lt;/code&gt; is the right choice&#xA;to encode &lt;code&gt;nil&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL is deep - a personal journey</title>
      <link>https://blog.silvela.org/post/2019-09-30-sql-is-deep/</link>
      <pubDate>Tue, 01 Oct 2019 09:58:11 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2019-09-30-sql-is-deep/</guid>
      <description>&lt;p&gt;Some time ago I was trying to advise a junior colleague who said he “knew” SQL:&#xA;SQL is a bit like chess. You can learn the rules quickly; that doesn’t mean you&#xA;know how to play well.&lt;/p&gt;&#xA;&lt;p&gt;I love SQL. I’ve been using it professionally since 2005. A great thing about it&#xA;is a counterpoint to the previous remark on depth: you can start getting useful&#xA;and correct results with just a little knowledge.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux on the Desktop, n-th try</title>
      <link>https://blog.silvela.org/post/2019-08-15-linux-desktop/</link>
      <pubDate>Thu, 15 Aug 2019 15:45:19 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2019-08-15-linux-desktop/</guid>
      <description>&lt;p&gt;I love Linux. I&amp;rsquo;ve been using it at home since 1996 (togeter with macs).&#xA;How far we&amp;rsquo;ve come in 20+ years.&lt;/p&gt;&#xA;&lt;h2 id=&#34;desktop-environment&#34;&gt;Desktop environment&lt;/h2&gt;&#xA;&lt;p&gt;I used to be against desktop environments, which I saw as bloated, but since getting&#xA;a HiDPI laptop in 2015, I have changed my mind. Having services and DPI&#xA;settings taken care of in one place is too nice to pass up.&lt;/p&gt;&#xA;&lt;p&gt;As of mid-August, I have settled on KDE Plasma. I&amp;rsquo;m running Debian 10 Buster at home&#xA;and at work. &lt;br&gt;&#xA;I find KDE very polished, and in some ways I like the UX better than mac or windows. The&#xA;font smoothing and rendering is great. &lt;br&gt;&#xA;In others areas it needs work, and in particlular, it lacks a per-monitor DPI/scale setting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improving net privacy</title>
      <link>https://blog.silvela.org/post/2019-07-27-security/</link>
      <pubDate>Sat, 27 Jul 2019 09:45:19 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2019-07-27-security/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been becoming more conscious of my privacy on the internet. It has led me,&#xA;on one hand, to use the &lt;a href=&#34;https://www.eff.org/privacybadger&#34;&gt;Privacy Badger&lt;/a&gt; and&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/UBlock_Origin&#34;&gt;uBlock&lt;/a&gt; browser extensions, to switch to&#xA;&lt;a href=&#34;https://duckduckgo.com/&#34;&gt;DuckDuckGo&lt;/a&gt;&#xA;as my default search engine, to review my social networking settings.&lt;/p&gt;&#xA;&lt;p&gt;But I am also a gentleman website-and-domain-owner, a citizen of the &amp;rsquo;net.&lt;/p&gt;&#xA;&lt;p&gt;I decided to act on the nagging of browsers, when viewing my own website,&#xA;that it was not served over HTTPS. I had been wanting to address that for years. In the last&#xA;months, I had to learn how to set up LetsEncrypt certificates for work, and wondered&#xA;why my web hosting provider (GoDaddy) charged extra for SSL certs that could be&#xA;had for free.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Grab bag, the first of many</title>
      <link>https://blog.silvela.org/post/2018-08-25-musings-first/</link>
      <pubDate>Tue, 25 Sep 2018 21:45:19 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2018-08-25-musings-first/</guid>
      <description>&lt;p&gt;For many years now, I’ve struggled with the amount of information that I would&#xA;like to absorb. I’m trying out sometihg new: to keep track of things I see&#xA;or read or think about, in the form of posts.&lt;/p&gt;&#xA;&lt;p&gt;I started out with my &lt;a href=&#34;http://silvela.org/jaime/lost/post/2018-06-24-keeping-track/&#34;&gt;personal blog&lt;/a&gt;,&#xA;and so far, I like the idea.&lt;/p&gt;&#xA;&lt;p&gt;So, there will be posts now and then where I just keep track of stuff.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL over time, or, Ditch your ORM</title>
      <link>https://blog.silvela.org/post/2018-08-05-sql-over-time/</link>
      <pubDate>Tue, 25 Sep 2018 01:36:11 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2018-08-05-sql-over-time/</guid>
      <description>&lt;p&gt;Here I&amp;rsquo;m telling a story of PostgreSQL performance over time, and the point&#xA;of it, for me, is that given the richness of SQL, and the steady improvement of&#xA;implementations, it is foolish&#xA;to trust your querying to an ORM.&#xA;SQL is very much worth learning, and learning&#xA;well. There are many gains to be made, in efficiency and in code quality.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Years ago, I worked at a financial firm in New York City. The system we were&#xA;building had a Postgres database — version 8, I think.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presentations, 2017</title>
      <link>https://blog.silvela.org/post/presentations-2017/</link>
      <pubDate>Sat, 16 Dec 2017 11:36:11 +0100</pubDate>
      <guid>https://blog.silvela.org/post/presentations-2017/</guid>
      <description>&lt;p&gt;In 2017 I gave my first ever talk at a public conference,&#xA;&lt;a href=&#34;https://www.dotgo.eu/&#34;&gt;dotGo&lt;/a&gt; in Paris.&#xA;You can &lt;a href=&#34;https://www.dotconferences.com/2017/11/jaime-silvela-handling-slow-requests-in-your-go-web-server&#34;&gt;view the video and the slides.&lt;/a&gt;&#xA;I&amp;rsquo;m on &lt;a href=&#34;https://youtu.be/0qKqVSvB1G0&#34;&gt;youtube&lt;/a&gt;, mom!&lt;/p&gt;&#xA;&lt;p&gt;I got a speakerdeck account too; here are &lt;a href=&#34;https://speakerdeck.com/jsilvela&#34;&gt;other presentations.&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Object Oriented Programming with Go</title>
      <link>https://blog.silvela.org/post/oo-with-go/</link>
      <pubDate>Sun, 15 Oct 2017 12:36:26 +0200</pubDate>
      <guid>https://blog.silvela.org/post/oo-with-go/</guid>
      <description>&lt;p&gt;A presentation I delivered about the basics of Object Oriented Programming,&#xA;and why Go is a great language for OO.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.silvela.org/doc/oopIntro.pdf&#34;&gt;OO with Go&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software Basics - Presentation</title>
      <link>https://blog.silvela.org/post/software-basics/</link>
      <pubDate>Sun, 15 Oct 2017 12:18:47 +0200</pubDate>
      <guid>https://blog.silvela.org/post/software-basics/</guid>
      <description>&lt;p&gt;This is the PDF for a presentation I delivered at work, at &lt;em&gt;Marsh &amp;amp; McLennan&lt;/em&gt;&#xA;in Dublin to various engineers and data analysts who write programs&#xA;as part of their job.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.silvela.org/doc/SoftwareGuidelines.pdf&#34;&gt;Software Guidelines&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux on the iBook G4</title>
      <link>https://blog.silvela.org/post/linux-on-ibookG4/</link>
      <pubDate>Fri, 06 Jan 2017 21:21:06 +0100</pubDate>
      <guid>https://blog.silvela.org/post/linux-on-ibookG4/</guid>
      <description>&lt;h2 id=&#34;installing-debian-jessie-on-an-ibook-g4&#34;&gt;Installing Debian Jessie on an iBook G4&lt;/h2&gt;&#xA;&lt;p&gt;There is some good information out there, but scattered.  Thought I&#xA;might put something together.&lt;/p&gt;&#xA;&lt;h3 id=&#34;wireless&#34;&gt;Wireless&lt;/h3&gt;&#xA;&lt;p&gt;The wireless modules are in the &lt;code&gt;non-free&lt;/code&gt; and &lt;code&gt;contrib&lt;/code&gt;&#xA;repositories.  You&amp;rsquo;ll have to add them to &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;After that, install &lt;code&gt;firmware-b43-installer&lt;/code&gt;. After reboot, you&#xA;should see wireless networks being picked up in the network manger.&lt;/p&gt;&#xA;&lt;p&gt;References:&#xA;&lt;a href=&#34;http://powerpcliberation.blogspot.com.es/2015/04/debian-testing-for-my-ibook-g4.html&#34;&gt;Debian Testing on iBook G4&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;battery-indicator&#34;&gt;Battery indicator&lt;/h3&gt;&#xA;&lt;p&gt;Add &lt;code&gt;pmu_battery&lt;/code&gt; to &lt;code&gt;/etc/modules&lt;/code&gt; and reload/reboot.  You&#xA;may need to tweak your desktop or window manager to get a battery&#xA;meter icon displayed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>D3&#39;s messy abstraction</title>
      <link>https://blog.silvela.org/post/d3-messy-abstraction/</link>
      <pubDate>Fri, 02 Dec 2016 21:45:19 +0100</pubDate>
      <guid>https://blog.silvela.org/post/d3-messy-abstraction/</guid>
      <description>&lt;p&gt;D3 is a wonderful idea. A graphing library in Javascript that uses&#xA;functional programming idioms, outputs SVG and is chock full of contributions from&#xA;the community. No wonder it’s so popular.&lt;/p&gt;&#xA;&lt;p&gt;And yet, D3 code has a tendency to grow unwieldy very quickly. As&#xA;happens in SQL, the means of abstraction in the language (in our case&#xA;in the library) are obscure, and details in “normal” code tend to pile&#xA;up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Peter principle, for software</title>
      <link>https://blog.silvela.org/post/peter-principle/</link>
      <pubDate>Tue, 29 Nov 2016 16:13:15 +0100</pubDate>
      <guid>https://blog.silvela.org/post/peter-principle/</guid>
      <description>&lt;p&gt;The famous &lt;a href=&#34;https://en.wikipedia.org/wiki/Peter_principle&#34;&gt;Peter&#xA;principle&lt;/a&gt; lives large&#xA;for computer programming abstractions.&lt;/p&gt;&#xA;&lt;p&gt;It can be in a positive way: operations that are well understood, and&#xA;routine, are abstracted into a higher level that one must actually&#xA;think about.&lt;/p&gt;&#xA;&lt;p&gt;But very often it&amp;rsquo;s in a pathological way: raising abstraction for the&#xA;purpose of raising abstraction, until you end up with a pile of&#xA;abstract spaghetti code, which is even harder to understand than&#xA;regular spaghetti code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux on a DELL XPS 13 9350</title>
      <link>https://blog.silvela.org/post/linux-dell-xps-9350/</link>
      <pubDate>Mon, 28 Nov 2016 20:41:07 +0100</pubDate>
      <guid>https://blog.silvela.org/post/linux-dell-xps-9350/</guid>
      <description>&lt;p&gt;My preferred Linux distro is Debian, but currently, &lt;code&gt;stable&lt;/code&gt; won&amp;rsquo;t support the Skybridge chipset. I&amp;rsquo;ll switch to Debian when the new version comes out, but at&#xA;the moment, Ubuntu 16.04 is fine.&lt;/p&gt;&#xA;&lt;p&gt;Installation was easy, after changing a couple of  the UEFI settings. Access them by pressing F2 during the boot sequence.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Set &lt;em&gt;SATA Operation&lt;/em&gt; to Disable, or to AHCI, &lt;strong&gt;not&lt;/strong&gt; RAID On, which&#xA;came configured on my laptop with Win 10.&lt;/li&gt;&#xA;&lt;li&gt;Disable &lt;em&gt;Secure Boot Enable&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;After changing these settings, I was able to install Ubuntu from the basic image burned to a USB thumb drive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>And the Oscar goes to</title>
      <link>https://blog.silvela.org/post/2016-03-06-and-the-oscar-goes-to/</link>
      <pubDate>Sun, 06 Mar 2016 06:52:29 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2016-03-06-and-the-oscar-goes-to/</guid>
      <description>&lt;p&gt;In order to prepare myself to write a program for clustering of numeric arrays,&#xA;I lived for two months in a numeric array.&lt;/p&gt;&#xA;&lt;p&gt;I got to understand the difficulties numbers face, being bunched&#xA;into clusters, and how they try to maintain their individual&#xA;identities and their dignity.&lt;/p&gt;&#xA;&lt;p&gt;Above all, my JavaScript code is an homage to them.&#xA;Thank you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SDE</title>
      <link>https://blog.silvela.org/post/2015-10-31-SDE/</link>
      <pubDate>Sat, 31 Oct 2015 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2015-10-31-SDE/</guid>
      <description>&lt;p&gt;Software Development Engineer: &lt;strong&gt;Development&lt;/strong&gt; to make it sound more like &lt;strong&gt;management&lt;/strong&gt;. &lt;strong&gt;Engineer&lt;/strong&gt; so people don’t think you’re &lt;em&gt;in IT&lt;/em&gt; (gross!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>You Know How This Ends</title>
      <link>https://blog.silvela.org/post/2015-10-30-you-know-how-this-ends/</link>
      <pubDate>Fri, 30 Oct 2015 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2015-10-30-you-know-how-this-ends/</guid>
      <description>&lt;p&gt;I’m not much into superhero movies, but there is a particular plot device they&#xA;use that I find fun: in the typical superhero movie, somewhere in the first&#xA;half, the hero will get a chance to kill the bad guy, and he will not take it.&#xA;Maybe he doesn’t yet grasp how dangerous this guy is.&lt;/p&gt;&#xA;&lt;p&gt;And you just know there will be a second act where the bad guy will wreak havoc,&#xA;and then a final act where the hero will kill the villain, or send him to jail&#xA;so that there can be a sequel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Coding Comfort</title>
      <link>https://blog.silvela.org/post/2015-08-14-coding-comfort/</link>
      <pubDate>Fri, 14 Aug 2015 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2015-08-14-coding-comfort/</guid>
      <description>&lt;p&gt;In the last year or so I&amp;rsquo;ve made a number of changes to my coding habits that&#xA;have had a positive impact on my comfort.&lt;/p&gt;&#xA;&lt;h3 id=&#34;touch-typing&#34;&gt;Touch typing&lt;/h3&gt;&#xA;&lt;p&gt;Some years ago, I read Steve Yegge&amp;rsquo;s popular post about touch-typing. His thesis&#xA;was that good programmers must be fast typists. As with much in his blog, I&#xA;thought it was self-indulgent crap. If your coding speed is limited by&#xA;your typing speed, something is very wrong with the way you work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>It’s all zeros and ones</title>
      <link>https://blog.silvela.org/post/2015-04-18-zeros-and-ones/</link>
      <pubDate>Sat, 18 Apr 2015 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2015-04-18-zeros-and-ones/</guid>
      <description>&lt;p&gt;That look of half-confusion, half-familiarity, when you tell people you’re a computer programmer. In the popular imagination, we programmers are “good with computers”. Perhaps some think that we have to do math to write programs. Others may have seen movies where the programmer is an over-caffeinated man-boy who types, and switches windows, at ludicrous speed. Of course, we’re all tired of friends asking us to fix their PowerPoint presentation.&lt;/p&gt;&#xA;&lt;p&gt;Then there are people with friends or family who program for a living. I’ve met a few of those, and in several cases, they’ve told me something like “In the end, for you guys, it’s all zeros and ones, right?”.&#xA;This sounds nice, and nicely baffling, but it’s not very useful. You could equally say of writers and journalists, that “in the end it’s all about letters and punctuation marks.”&#xA;I think the “zeros and ones” routine is cultivated by programmers who want to appear cool.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Living with a computer language</title>
      <link>https://blog.silvela.org/post/2015-04-18-living-with-a-computer-language/</link>
      <pubDate>Sat, 18 Apr 2015 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2015-04-18-living-with-a-computer-language/</guid>
      <description>&lt;p&gt;I’m not a big fan of David Lean’s movie &lt;em&gt;Doctor Zhivago&lt;/em&gt;, but it contains a line I love:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;He approved of us, but for reasons which were subtle, like his verse.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The older I get, the more I become averse to the snap judgements that seem to&#xA;pervade the software industry. I particularly hate the genre of the shootout&#xA;article. It’s bad enough for web browser comparisons, but it’s terrible for&#xA;everything else. When applied to languages, this philosophy gives rise to&#xA;articles showing a strong preference for, say, Python over Ruby, on the grounds&#xA;that a little toy project is 3 lines shorter and 5% faster in Python.&lt;/p&gt;</description>
    </item>
    <item>
      <title>White space in source code, or ditch monospace</title>
      <link>https://blog.silvela.org/post/2014-10-29-white-space-mono-space/</link>
      <pubDate>Wed, 29 Oct 2014 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2014-10-29-white-space-mono-space/</guid>
      <description>&lt;p&gt;White space is very important for readability in general, and for readability of code in particular.&#xA;If you look at a book on typography, you’ll see discussions on line spacing, kerning, double spacing and other spatial concerns. For example, check &lt;a href=&#34;http://practicaltypography.com/&#34;&gt;Butterick’s Practical Typography&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Code is less dense on page than regular prose, but it is very compressed in comparison. Each and every letter and punctuation mark is important, each character must be clearly identifiable.&#xA;Many coders use monospaced typefaces to display their programs, and there are several monospaced typefaces designed specifically for code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fonts for coding</title>
      <link>https://blog.silvela.org/post/2014-10-23-fonts-for-coding/</link>
      <pubDate>Thu, 23 Oct 2014 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2014-10-23-fonts-for-coding/</guid>
      <description>&lt;p&gt;I’ve been on a typography bender lately. This is a quick summary of my findings.&lt;/p&gt;&#xA;&lt;h2 id=&#34;size-matters&#34;&gt;Size matters&lt;/h2&gt;&#xA;&lt;p&gt;Some coders have a bit of a macho attitude  about making their coding font as small as&#xA;possible, on the theory that the more lines of code you fit on a screen, the better.&#xA;One often sees posts from coders claiming that Monaco, DejaVu, Consolas etc. at 9–10pt&#xA;is their font of choice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parnas on software project management</title>
      <link>https://blog.silvela.org/post/2014-08-06-parnas-on-software-project-management/</link>
      <pubDate>Wed, 06 Aug 2014 10:54:46 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2014-08-06-parnas-on-software-project-management/</guid>
      <description>&lt;p&gt;From &lt;em&gt;Software Fundamentals. Collected Papers by David L. Parnas&lt;/em&gt; page 604&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;One of Mills’s most important lessons had to do with the difference between&#xA;management and engineering. He did not try to tell us how to make unmanageable&#xA;projects manageable. He showed us how to make projects manageable.&#xA;He understood that only well-designed and well-documented projects could be&#xA;managed properly; he taught us how to design products in ways that made&#xA;management easier. Today, when so many papers discuss software engineering as if&#xA;the problem was simply project management, I miss Harlan Mills.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tabs,  spaces, fonts</title>
      <link>https://blog.silvela.org/post/2014-08-06-tabs-spaces-fonts/</link>
      <pubDate>Wed, 06 Aug 2014 10:23:32 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2014-08-06-tabs-spaces-fonts/</guid>
      <description>&lt;p&gt;Spaces advantages:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;read the same everywhere&lt;/li&gt;&#xA;&lt;li&gt;high precision in character placement&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Tabs advantages:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;fewer keystrokes&lt;/li&gt;&#xA;&lt;li&gt;users can tailor display to their liking&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Either choice can be defended. They should not be mixed, however, as that destroys the advantages of both.&lt;/p&gt;&#xA;&lt;p&gt;Note that if we use proportional fonts, the advantages of spaces disappear. Spaces still give us more precision, but it’s not enough to guarantee proper vertical alignment.&lt;br /&gt;&#xA;So, use tabs if you use proportional fonts. Therefore, always use tabs, in case others view your code with proportional fonts. Therefore, don’t do fancy vertical alignment. Indent code using tabs as hierarchical markers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming aesthetics</title>
      <link>https://blog.silvela.org/post/2014-08-03-programming-aesthetics/</link>
      <pubDate>Sun, 03 Aug 2014 11:22:42 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2014-08-03-programming-aesthetics/</guid>
      <description>&lt;p&gt;In recent weeks, my outlook has changed quite a bit. With the (re)discovery of Plan 9 from user space, and Acme, via &lt;a href=&#34;http://research.swtch.com/acme&#34;&gt;Russ Cox’s intro video&lt;/a&gt;, I’ve been rethinking a lot of my assumptions on GUI’s, programming, and tools.&lt;br /&gt; I’ve also seen some talks by Rob Pike on youtube. It’s refreshing to see that the builders of Unix offer incisive criticism of it, and had been developing alternatives since the 80s. In contrast, most of us now think Linux is the end-all.&lt;br /&gt; I’ve rethought many things. And shockingly I’m seeing emacs with new eyes. It’s been replaced by Acme as my editor of choice, after 15 years!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xmonad &#43; GNOME</title>
      <link>https://blog.silvela.org/post/2010-09-19-xmonad-gnome/</link>
      <pubDate>Sun, 19 Sep 2010 06:07:06 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2010-09-19-xmonad-gnome/</guid>
      <description>&lt;p&gt;I’m positively impressed with Linux lately, as I learn more.&lt;br /&gt;&#xA;By combining the tiling window manager Xmonad with the GNOME environment, I’ve found my favorite windowing system on any platform.&lt;/p&gt;&#xA;&lt;p&gt;I used these &lt;a href=&#34;http://markhansen.co.nz/xmonad-ubuntu-lucid&#34;&gt;basic instructions&lt;/a&gt;, but configured Xmonad to use the Window key (aka. Super key) as modifier instead of Alt, so that it doesn’t interfere with the Emacs keybindings. This is how it looks.&lt;br /&gt;&#xA;&lt;/p&gt;&#xA;&lt;pre&gt;&#xA;import XMonad&#xA;import XMonad.Config.Gnome&#xA;main = xmonad gnomeConfig&#xA;      {&#xA;        modMask = mod4Mask&#xA;      }&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Recording from vinyl with Inspire and Cubase</title>
      <link>https://blog.silvela.org/post/2009-09-03-recording-from-vinyl-with-inspire-and-cubase/</link>
      <pubDate>Thu, 03 Sep 2009 16:36:27 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2009-09-03-recording-from-vinyl-with-inspire-and-cubase/</guid>
      <description>&lt;ol&gt;&#xA;&lt;li&gt;Connect the Inspire to the computer and the phono pre-amp&lt;/li&gt;&#xA;&lt;li&gt;Start the Inspire software and make sure channels 3-4 are unmuted and the volume is OK &lt;/li&gt;&#xA;&lt;li&gt;Start Cubase, do File =&amp;gt; New Project, and Project =&amp;gt; Add Track =&amp;gt; Audio&lt;/li&gt;&#xA;&lt;li&gt;Go to Devices =&amp;gt; Device Setup&lt;/li&gt;&#xA;&lt;li&gt;In the VST Audio System, choose the Inspire and hit OK&lt;/li&gt;&#xA;&lt;li&gt;Go to Devices =&amp;gt; VST Connections&lt;/li&gt;&#xA;&lt;li&gt;In the Input tab, choose channels 3 and 4 for input&lt;/li&gt;&#xA;&lt;li&gt;In the Output tab, choose channels 1 and 2 for output (connect your headphones to the Inspire, not the computer)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You will need to keep the Inspire connected at all times, even if you’re exporting a pre-recorded track to  AIFF!&lt;br /&gt;&#xA;With this you should be able to start recording.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xmonad</title>
      <link>https://blog.silvela.org/post/2009-08-25-xmonad/</link>
      <pubDate>Tue, 25 Aug 2009 06:00:14 +0200</pubDate>
      <guid>https://blog.silvela.org/post/2009-08-25-xmonad/</guid>
      <description>&lt;p&gt;I like &lt;a href=&#34;http://xmonad.org/&#34;&gt;Xmonad&lt;/a&gt; much better than any other window manager (on any platform), but the default mod key is Alt, which interferes with Emacs and Conkeror.&lt;/p&gt;&#xA;&lt;p&gt;Here is how to &lt;a href=&#34;http://haskell.org/haskellwiki/Xmonad/Frequently%5Fasked%5Fquestions#Rebinding%5Fthe%5Fmod%5Fkey%5F.28Alt%5Fconflicts%5Fwith%5Fother%5Fapps.3B%5FI%5Fwant%5Fthe%5F%5F%5F%5F%5Fkey.21.29&#34;&gt;remap the mod key in Xmonad&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Or, locally copied on Aug 09:&lt;/p&gt;&#xA;&#xA;Binding to the mod4 (often &#39;Win&#39;) key. Put this in yout xmonad.hs:&lt;/p&gt;&#xA;&lt;pre&gt;&#xA;import XMonad&#xA;main = xmonad defaultConfig&#xA;    {&#xA;      modMask = mod4Mask&#xA;    }&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Scalar product and direction cosines</title>
      <link>https://blog.silvela.org/post/2008-12-08-scalar-product-and-direction-cosines/</link>
      <pubDate>Mon, 08 Dec 2008 09:12:17 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2008-12-08-scalar-product-and-direction-cosines/</guid>
      <description>&lt;p&gt;When I learned about the scalar product in high school, I was somewhat&#xA;surprised by how lucky its properties are.&lt;br /&gt; The treatment is usually this:&#xA;define \(  x \cdot y = |x| |y| \cos \theta \), where \( \theta \) is the&#xA;angle between \( x \) and \( y \). Then deduce that \( x \cdot y \) is&#xA;linear on the left and right arguments. Then, deduce that \( (x_1 \vec i +&#xA;x_2 \vec j + x_3 \vec k) \cdot (y_1 \vec i + y_2 \vec j + y_3 \vec k)  = x_1 y_1&#xA;+ x_2 y_2 + x_3 y_3 \)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Number of trailing zeros in n factorial</title>
      <link>https://blog.silvela.org/post/2008-11-17-number-of-trailing-zeros-in-n-factorial/</link>
      <pubDate>Mon, 17 Nov 2008 06:52:29 +0100</pubDate>
      <guid>https://blog.silvela.org/post/2008-11-17-number-of-trailing-zeros-in-n-factorial/</guid>
      <description>&lt;p&gt;I was asked this question in my first job interview in the US. I was completely unprepared for this type of interview, and I did badly. But it’s a nice problem to think about and it’s easy to solve.&lt;/p&gt;&#xA;&lt;p&gt;In case you don’t know, n factorial is the multiplication of all positive integers less than or equal to n. By convention, 0 factorial is taken as 1. The factorial is typically represented with “!”.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
