<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ryan Kavanagh&#39;s /dev/brain</title>
    <link>/</link>
    <description>Recent content on Ryan Kavanagh&#39;s /dev/brain</description>
    <generator>Hugo</generator>
    <language>en-CA</language>
    <lastBuildDate>Thu, 24 Oct 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title></title>
      <link>/publication/2024-message-observing-sessions/</link>
      <pubDate>Thu, 24 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/publication/2024-message-observing-sessions/</guid>
      <description></description>
    </item>
    <item>
      <title>Contact</title>
      <link>/contact/</link>
      <pubDate>Thu, 14 Mar 2024 00:00:00 +0000</pubDate>
      <guid>/contact/</guid>
      <description>The easiest way to reach me is by email. If you need to reach me&#xA;concerning please write to research or teaching&#xA;Ryan Kavanagh &amp;lt;kavanagh.ryan@uqam.ca&amp;gt;&#xA;Debian or FOSS&#xA;Ryan Kavanagh &amp;lt;rak@debian.org&amp;gt;&#xA;any other matter&#xA;Ryan Kavanagh &amp;lt;rak@rak.ac&amp;gt;&#xA;N.B. Pour des raisons de confidentialité, les étudiants de l’UQAM doivent m’écrire à mon adresse UQAM en utilisant leur adresse UQAM. Tout courriel qui ne respecte pas cette consigne sera supprimé sans réponse.</description>
    </item>
    <item>
      <title>Imprimer sous Linux avec les imprimantes Kyocera de l&#39;UQAM</title>
      <link>/blog/2024-01-17-imprimer-sous-linux-uqam-informatique/</link>
      <pubDate>Thu, 18 Jan 2024 14:50:00 -0500</pubDate>
      <guid>/blog/2024-01-17-imprimer-sous-linux-uqam-informatique/</guid>
      <description>Voici le troisième article dans ma série d&amp;rsquo;articles sur la configuration d&amp;rsquo;imprimantes universitaires sous Linux. Cette fois-ci, je regroupe les démarches pour configurer une imprimante à l&amp;rsquo;UQAM sous Linux.&#xA;Trouvez le nom de l&amp;rsquo;imprimante réseau en utilisant la commande smbclient -L Fresque.adm.gst.uqam.ca -U CODE_MS -W UQAM, en remplaçant CODE_MS par votre code MS. La première colonne donne les noms des imprimantes sur le réseau. Le nom désiré devrait correspondre au nom sur l&amp;rsquo;autocollant affixé sur l&amp;rsquo;imprimante.</description>
    </item>
    <item>
      <title>Battery charge start and stop threshold on OpenBSD</title>
      <link>/blog/2023-12-20-battery-charge-start-stop-threshold-on-openbsd/</link>
      <pubDate>Wed, 20 Dec 2023 11:11:59 -0500</pubDate>
      <guid>/blog/2023-12-20-battery-charge-start-stop-threshold-on-openbsd/</guid>
      <description>I often use my laptops as portable desktops: they are plugged into AC power and an external monitor/keyboard 95% of time. Unfortunately, continuous charging is hard on the battery. To mitigate this, ThinkPads have customizable start and stop charging thresholds, such that the battery will only start charging if its level falls below the start threshold, and it will stop charging as soon as it reaches the stop threshold. Suggested thresholds from Lenovo&amp;rsquo;s battery team can be found in this comment.</description>
    </item>
    <item>
      <title>Routable network addresses with OpenIKED and systemd-networkd</title>
      <link>/blog/2022-06-25-routable-network-addresses-openiked-systemd-networkd/</link>
      <pubDate>Sat, 25 Jun 2022 07:41:37 -0400</pubDate>
      <guid>/blog/2022-06-25-routable-network-addresses-openiked-systemd-networkd/</guid>
      <description>I&amp;rsquo;ve been using OpenIKED for some time now to configure my VPN. One of its features is that it can dynamically assign addresses on the internal network to clients, and clients can assign these addresses and routes to interfaces. However, these interfaces must exist before iked can start. Some months ago I switched my Debian laptop&amp;rsquo;s configuration from the traditional ifupdown to systemd-networkd. It took me some time to figure out how to have systemd-networkd create dummy interfaces on which iked can install addresses, but also not interfere with iked by trying to manage these interfaces.</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2022-channel-dependent-sessions-njpls/</link>
      <pubDate>Fri, 20 May 2022 11:28:25 -0400</pubDate>
      <guid>/publication/2022-channel-dependent-sessions-njpls/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>/publication/2022-fairness-communication-based-semantics-session-typed-languages/</link>
      <pubDate>Mon, 18 Apr 2022 20:36:38 -0400</pubDate>
      <guid>/publication/2022-fairness-communication-based-semantics-session-typed-languages/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>/publication/2021-communication-based-semantics-for-recursive-session-typed-processes/</link>
      <pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate>
      <guid>/publication/2021-communication-based-semantics-for-recursive-session-typed-processes/</guid>
      <description></description>
    </item>
    <item>
      <title>Writing BASIC-8 on the TSS/8</title>
      <link>/blog/2021-04-07-writing-basic-8-on-the-tss-8/</link>
      <pubDate>Wed, 07 Apr 2021 20:08:52 -0400</pubDate>
      <guid>/blog/2021-04-07-writing-basic-8-on-the-tss-8/</guid>
      <description>I recently discovered SDF&amp;rsquo;s PiDP-8. You can access it over SSH and watch the blinkenlights over its twitch stream. It runs TSS/8, a time-sharing operating system written in 1967 by Adrian van de Goor while a grad student here at CMU. I&amp;rsquo;ve been having fun tinkering with it, and I just wrote my first BASIC program1 since high school. It plots the graph of some user-specified univariate function. I don&amp;rsquo;t claim that it&amp;rsquo;s elegant or well-engineered, but it works!</description>
    </item>
    <item>
      <title>Static Comments in Hugo</title>
      <link>/blog/2021-03-12-static-comments-in-hugo/</link>
      <pubDate>Fri, 12 Mar 2021 13:32:34 -0500</pubDate>
      <guid>/blog/2021-03-12-static-comments-in-hugo/</guid>
      <description>I switched from Jekyll to Hugo last week for a variety of reasons. One thing that was missing was a port of the &amp;ldquo;jekyll-static-comments&amp;rdquo; plugin that I used to use. I liked it because it saved readers from being tracked by Disqus or other comments solutions, and it required no javascript.&#xA;To comment, users would email me their comment following a template attached to the bottom of each post. I then piped their email through a script to add it to the right post.</description>
    </item>
    <item>
      <title>Ryan Kavanagh&#39;s free software projects</title>
      <link>/projects/</link>
      <pubDate>Mon, 22 Feb 2021 00:00:00 +0000</pubDate>
      <guid>/projects/</guid>
      <description>I contribute to various free software projects and maintain various pieces of free software. Many of the entries on this page are only of archaeological interest.&#xA;You are more likely to find my recent work in a Git repository here:&#xA;https://git.rak.ac&#xA;https://github.com/ryanakca&#xA;Projects Debian I maintain several packages in Debian, the universal operating system. Details can be found on my contributor page.&#xA;OpenBSD I have contributed a few patches to OpenBSD and its associated projects (OpenSMTPD, OpenIKED, etc.</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2020-parametrized-fixed-points-and-their-applications-to-session-types/</link>
      <pubDate>Sat, 13 Feb 2021 12:18:17 -0500</pubDate>
      <guid>/publication/2020-parametrized-fixed-points-and-their-applications-to-session-types/</guid>
      <description></description>
    </item>
    <item>
      <title>Charter Rights &amp;mdash; If You Can Afford Them</title>
      <link>/blog/2021-02-02-charter-rights-if-you-can-afford-them/</link>
      <pubDate>Tue, 02 Feb 2021 17:51:00 +0000</pubDate>
      <guid>/blog/2021-02-02-charter-rights-if-you-can-afford-them/</guid>
      <description>Dear Canadians,&#xA;It turns out that your Charter rights only apply if you can afford them. Section 6(1) of the Canadian Charter of Rights and Freedoms states:&#xA;Every citizen of Canada has the right to enter, remain in and leave Canada.&#xA;This is one of the few rights not subject to the Charter&amp;rsquo;s &amp;ldquo;notwithstanding&amp;rdquo; clause:&#xA;Parliament or the legislature of a province may expressly declare in an Act of Parliament or of the legislature, as the case may be, that the Act or a provision thereof shall operate notwithstanding a provision included in section 2 or sections 7 to 15 of this Charter.</description>
    </item>
    <item>
      <title>Configuring OpenIKED VPNs for StrongSwan Clients</title>
      <link>/blog/2020-09-12-configuring-openiked-vpns-for-strongswan-clients/</link>
      <pubDate>Sat, 12 Sep 2020 17:42:00 -0400</pubDate>
      <guid>/blog/2020-09-12-configuring-openiked-vpns-for-strongswan-clients/</guid>
      <description>A few weeks ago I configured a road warrior VPN setup. The remote end is on a VPS running OpenBSD and OpenIKED, the VPN is an IKEv2 VPN using x509 authentication, and the local end is StrongSwan. I also configured an IKEv2 VPN between my VPSs. Here are the notes for how to do so.&#xA;In all cases, to use x509 authentication, you will need to generate a bunch of certificates and keys:</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2020-substructural-observed-communication-semantics/</link>
      <pubDate>Fri, 12 Feb 2021 10:48:02 -0500</pubDate>
      <guid>/publication/2020-substructural-observed-communication-semantics/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>/publication/2020-domain-semantics-higher-order-recursive-processes/</link>
      <pubDate>Sat, 20 Feb 2021 21:17:51 -0500</pubDate>
      <guid>/publication/2020-domain-semantics-higher-order-recursive-processes/</guid>
      <description></description>
    </item>
    <item>
      <title>Creating LVM-backed schroots</title>
      <link>/blog/2020-01-23-creating-lvm-backed-schroots/</link>
      <pubDate>Thu, 23 Jan 2020 16:09:00 -0500</pubDate>
      <guid>/blog/2020-01-23-creating-lvm-backed-schroots/</guid>
      <description>I use sbuild to build my Debian packages under a clean environment. To save time I prefer to store my clean chroots on LVM volumes and use snapshotting, instead of extracting the chroots from tarballs every time.&#xA;I rarely need to create new schroots and I can never remember the steps. To help future me remember (and to help whoever else needs to create an LVM-backed schroot), I&amp;rsquo;ve decided to write down the steps.</description>
    </item>
    <item>
      <title>Usenet in 2020</title>
      <link>/blog/2020-01-12-usenet-in-2020/</link>
      <pubDate>Sun, 12 Jan 2020 10:27:00 -0500</pubDate>
      <guid>/blog/2020-01-12-usenet-in-2020/</guid>
      <description>I was reading the message backlog in com on SDF this morning and noticed that cfenollosa is on a nostalgia trip through Usenet and looking for active newsgroups. I still occasionally fire up Gnus and read Usenet articles. Unfortunately, the vast majority of them are spam (though Gnus does a good job of tackling that), followed by link postings. That said there are still some small newsgroups with discussion that I occasionally post to.</description>
    </item>
    <item>
      <title>On using multiple Kerberos realms and AFS</title>
      <link>/blog/2020-01-11-on-using-multiple-kerberos-realms-and-afs/</link>
      <pubDate>Sat, 11 Jan 2020 21:38:00 -0500</pubDate>
      <guid>/blog/2020-01-11-on-using-multiple-kerberos-realms-and-afs/</guid>
      <description>Several people have asked me over the past months how to simultaneously authenticate against multiple Kerberos realms and how to hook this up with AFS. To help with this, I&amp;rsquo;ve decided to write it all up once and for all. For the sake of example, I&amp;rsquo;m going to assume that you want to authenticate against the realms ANDREW.CMU.EDU and CS.CMU.EDU using the username gandalf.&#xA;The first step is to set your Kerberos credentials cache to be a directory so that individual Kerberos tickets from different realms do not conflict each other.</description>
    </item>
    <item>
      <title>On email tracking</title>
      <link>/blog/2019-11-16-on-email-tracking/</link>
      <pubDate>Sat, 16 Nov 2019 13:09:00 -0500</pubDate>
      <guid>/blog/2019-11-16-on-email-tracking/</guid>
      <description>A few years ago, I took out a subscription to The New Yorker for a few months. They continued sending me newsletter e-mails long after I cancelled my subscription. I reprioritized my time and started ignoring these emails too. Not too long ago, they sent me an e-mail, writing:&#xA;We noticed that you haven’t opened a newsletter from The New Yorker in a while. Do you still want e-mails from us?</description>
    </item>
    <item>
      <title>On mathematical folklore</title>
      <link>/blog/2019-08-01-on-mathematical-folklore/</link>
      <pubDate>Thu, 01 Aug 2019 16:57:00 -0400</pubDate>
      <guid>/blog/2019-08-01-on-mathematical-folklore/</guid>
      <description>Every math student at some point runs across &amp;#34;folklore&amp;#34; results. Paul Taylor gives an entertaining description of what &amp;#34;folklore&amp;#34; means in a comment on Andrej Bauer’s blog:&#xA;This result is folklore, which is a technical term for a method of publication in category theory. It means that someone sketched it on the back of an envelope, mimeographed it (whatever that means) and showed it to three people in a seminar in Chicago in 1973, except that the only evidence that we have of these events is a comment that was overheard in another seminar at Columbia in 1976.</description>
    </item>
    <item>
      <title>Why I study (natural) languages</title>
      <link>/blog/2019-07-18-why-i-study-natural-languages/</link>
      <pubDate>Thu, 18 Jul 2019 17:38:46 +0000</pubDate>
      <guid>/blog/2019-07-18-why-i-study-natural-languages/</guid>
      <description>Though I study programming languages for a living, I also study natural (human) languages for fun. I think that it is generally useful for PhD students (and researchers and authors in general) to study a new language. In this post, I will give two arguments to support this claim.&#xA;Sense of Productivity Research is incredibly frustrating: I often spend days bashing my head against against a problem without making any tangible progress.</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2019-denotational-semantics-sparc-tso/</link>
      <pubDate>Fri, 12 Feb 2021 12:29:21 -0500</pubDate>
      <guid>/publication/2019-denotational-semantics-sparc-tso/</guid>
      <description></description>
    </item>
    <item>
      <title>On input validation and accessibility</title>
      <link>/blog/2018-09-02-on-accessibility-and-validating-user-input/</link>
      <pubDate>Sun, 02 Sep 2018 14:48:00 -0400</pubDate>
      <guid>/blog/2018-09-02-on-accessibility-and-validating-user-input/</guid>
      <description>I use a custom keyboard layout based on the Programmer Dvorak layout, where numeric keys are accessed using shift. Accessing number keys via shift is also present on, e.g., the bépo layout.&#xA;Over the past several months, I&amp;rsquo;ve noticed that more and more websites use validation that prevents me from entering numeric values. This is because the validation is performed ath the keycode level, and disallows the use of shift keys (or even the &amp;ldquo;Fn&amp;rdquo; key to access the keypad layer on my laptop keyboard).</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2018-denotational-semantics-sparc-tso/</link>
      <pubDate>Fri, 12 Feb 2021 12:29:21 -0500</pubDate>
      <guid>/publication/2018-denotational-semantics-sparc-tso/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>/publication/2018-denotational-account-c11-memory/</link>
      <pubDate>Sat, 20 Feb 2021 20:47:20 -0500</pubDate>
      <guid>/publication/2018-denotational-account-c11-memory/</guid>
      <description></description>
    </item>
    <item>
      <title>How not to check email address validity</title>
      <link>/blog/2018-03-30-how-not-to-check-email-validity/</link>
      <pubDate>Fri, 30 Mar 2018 09:51:00 -0400</pubDate>
      <guid>/blog/2018-03-30-how-not-to-check-email-validity/</guid>
      <description>I recently had to fill in a form on the USPS website requesting me to reconfirm my email preferences. They were kind enough to prepopulate all of the fields with my account data. However, when I went to submit the form, it complained with &amp;ldquo;You must enter a valid email address&amp;rdquo;.&#xA;I thought this was odd, because they had already accepted my email address in the past, and besides, the email address I use for the account is perfectly valid and doesn&amp;rsquo;t exercise any of the oddities permitted by the relevant RFCs.</description>
    </item>
    <item>
      <title>Configuring the CMU SCS-Public printer on Linux</title>
      <link>/blog/2017-09-21-configuring-the-cmu-scs-public-printer-on-linux/</link>
      <pubDate>Thu, 21 Sep 2017 09:56:00 -0400</pubDate>
      <guid>/blog/2017-09-21-configuring-the-cmu-scs-public-printer-on-linux/</guid>
      <description>A year ago, I wrote a post on Configuring CMU SCS printers on Linux. SCS Computing Facilities is rolling out a new single-queue print system, where you fetch your job from the queue to a particular printer using your ID card. They don&amp;rsquo;t provide instructions for configuring this on unfacilitized hosts, so here&amp;rsquo;s what worked for me. Edit 3: They&amp;rsquo;ve added instructions, copied (almost) verbatim and without attribution from below, here.</description>
    </item>
    <item>
      <title>Implementing popen and pclose in SML</title>
      <link>/blog/2017-09-15-implementing-popen-and-pclose-in-sml/</link>
      <pubDate>Fri, 15 Sep 2017 15:55:00 -0400</pubDate>
      <guid>/blog/2017-09-15-implementing-popen-and-pclose-in-sml/</guid>
      <description>Though Standard ML provides the OS.Process.system function to execute an arbitrary command using the default system shell, and the Posix.Process structure for fork and the exec variants, it doesn&amp;rsquo;t (as far as I know) provide a mechanism to run a process and capture that process&amp;rsquo;s standard out.&#xA;I learned from my officemate that I was essentially looking for an SML implementation of popen(3) and pclose(3). Here&amp;rsquo;s what I came up with:</description>
    </item>
    <item>
      <title>Presheaf categories are Cartesian closed</title>
      <link>/blog/2016-08-24-presheaf-categories-are-cartesian-closed/</link>
      <pubDate>Wed, 24 Aug 2016 17:40:00 -0400</pubDate>
      <guid>/blog/2016-08-24-presheaf-categories-are-cartesian-closed/</guid>
      <description>\(\gdef{\Hom}{\mathsf{Hom}}\) \(\gdef{\C}{\mathbf{C}}\) \(\gdef{\hC}{\hat\C}\)&#xA;As I&amp;rsquo;ve been working through &amp;ldquo;Sheaves in Geometry and Logic&amp;rdquo;, I&amp;rsquo;ve been skimming proofs and attempting to rederive them. I normally end up with a better understanding of the material, but sometimes I get stuck. Here&amp;rsquo;s one case where I&amp;rsquo;ve gotten stuck: can anybody tell me why the counit for the exponential is universal? In particular, I can&amp;rsquo;t manage to show the uniqueness of \(\phi&amp;rsquo;\) at the end of the proof.</description>
    </item>
    <item>
      <title>Configuring CMU SCS printers on Linux</title>
      <link>/blog/2016-08-15-configuring-cmu-scs-printers-on-linux/</link>
      <pubDate>Mon, 15 Aug 2016 09:32:00 -0400</pubDate>
      <guid>/blog/2016-08-15-configuring-cmu-scs-printers-on-linux/</guid>
      <description>Edit: Please see these instructions for printing to the centralised SCS-Public print queue.&#xA;Unless your Linux host was &amp;ldquo;facilitized&amp;rdquo; (i.e., unless you&amp;rsquo;re still running the stock Linux install provided by the CMU help desk), you&amp;rsquo;re probably scratching your head as to how to add SCS printers to your Linux host. Here&amp;rsquo;s how. (NOTE: You should only add SCS printers if you have an SCS account!)&#xA;A list of public network printers is conveniently available here.</description>
    </item>
    <item>
      <title>Specifying a custom MTA path in caff</title>
      <link>/blog/2016-04-16-specifying-a-custom-mta-path-in-caff/</link>
      <pubDate>Sat, 16 Apr 2016 12:19:53 +0000</pubDate>
      <guid>/blog/2016-04-16-specifying-a-custom-mta-path-in-caff/</guid>
      <description>I recently had to sign someone&amp;rsquo;s GPG key. I&amp;rsquo;ve long used the caff tool from the signing-party package to help me with this. Unfortunately, I&amp;rsquo;m using a new laptop and hadn&amp;rsquo;t yet configured caff on it. Moreover, caff uses the system MTA by default, normally found at /usr/sbin/sendmail, and I hadn&amp;rsquo;t yet properly configured it to send mail to the outside world. Since I have multiple email accounts and use mutt as my mail client, I use msmtp as my SMTP client / sendmail drop-in.</description>
    </item>
    <item>
      <title>The Yoneda Lemma</title>
      <link>/blog/2016-04-06-the-yoneda-lemma/</link>
      <pubDate>Wed, 06 Apr 2016 10:18:00 -0400</pubDate>
      <guid>/blog/2016-04-06-the-yoneda-lemma/</guid>
      <description>I had never before realised the immense usefulness of the Yoneda lemma. In the past few sections of Mac Lane&amp;rsquo;s and Moerdijk&amp;rsquo;s &amp;ldquo;Sheaves in Geometry and Logic&amp;rdquo;, it&amp;rsquo;s been used both as a proof tool and as a heuristic for finding the right definition of a functor (in this case, the exponential functor in a presheaf category).&#xA;Here is a direct proof that does not require the machinery used by CWM.</description>
    </item>
    <item>
      <title>On terminal objects and colimits</title>
      <link>/blog/2016-03-28-on-terminal-objects-and-colimits/</link>
      <pubDate>Mon, 28 Mar 2016 11:40:22 +0000</pubDate>
      <guid>/blog/2016-03-28-on-terminal-objects-and-colimits/</guid>
      <description>I&amp;rsquo;m currently working through Mac Lane&amp;rsquo;s and Moerdijk&amp;rsquo;s &amp;ldquo;Sheaves in Geometry and Logic&amp;rdquo;, and came upon the following two sentences in a proof (p. 43):&#xA;Note that when \(P = Hom(-, C) = \mathbf{y}C\) is representable the corresponding category of elements \(\int P\) has a terminal object—the element \(1 : C \to C\) of \(P(C)\). Therefore the colimit of the composite \(A \circ \pi_P\) will just be the value of \(A \circ \pi_P\) on the terminal object.</description>
    </item>
    <item>
      <title>Brouwer: Unreliability of the Logical Principles </title>
      <link>/blog/2016-03-04-brouwer-unreliability-of-the-logical-principles/</link>
      <pubDate>Fri, 04 Mar 2016 23:55:00 -0500</pubDate>
      <guid>/blog/2016-03-04-brouwer-unreliability-of-the-logical-principles/</guid>
      <description>This is the second post in my series of reading summaries. See the first one for more information on the series.&#xA;Mark van Atten, Göran Sundholm. “L.E.J. Brouwer&amp;rsquo;s &amp;lsquo;Unreliability of the logical principles&amp;rsquo;. A new translation, with an introduction&amp;quot;. November, 2015. arXiv:1511.01113v1 [math.HO].&#xA;The intro provides historical context for the paper, both in terms of Brouwer&amp;rsquo;s other work &amp;amp; that of others, notably, Kronecker, Molk, &amp;amp; the French.&#xA;⋆ This is the paper in which Brouwer rejects the law of the excluded middle and doubts the application of logic to the acquisition of knowl.</description>
    </item>
    <item>
      <title>Kushner: Markov&#39;s Constructive Mathematical Analysis</title>
      <link>/blog/2016-02-29-kushner-markovs-constructive-mathematical-analysis/</link>
      <pubDate>Mon, 29 Feb 2016 12:00:53 +0000</pubDate>
      <guid>/blog/2016-02-29-kushner-markovs-constructive-mathematical-analysis/</guid>
      <description>I’ve recently gotten into the habit of condensings readings I do in the course of research down to a single page in a 9cm x 14cm notebook. I’ve decided to share these summaries and notes here, as a backup in case I loose my notebook. I’m transcribing them here exactly as in my notebook, abbreviations and all. I would be interested in hearing from you if ever you think I’ve completely missed the point of the paper.</description>
    </item>
    <item>
      <title>Blog Cleanup and Kubuntu Gutsy Gibbon Markups</title>
      <link>/blog/2016-02-28-kubuntu-gutsy-gibbon-markups/</link>
      <pubDate>Sun, 28 Feb 2016 11:35:52 +0000</pubDate>
      <guid>/blog/2016-02-28-kubuntu-gutsy-gibbon-markups/</guid>
      <description>I&amp;rsquo;ve been cleaning up my website and blog after having neglected it for several years. I briefly considered switching from Jekyll to Hakyll (you may recall that I switched from Wordpress to Jekyll in 2010) due to the annoying Ruby dependency. But I discovered that installing Hakyll would result in an even more annoyingly large dependency:&#xA;$ sudo apt-get install --no-install-recommends libghc-hakyll-dev [...] 0 upgraded, 122 newly installed, 0 to remove and 0 not upgraded.</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2015-empirical-study-integration-activities/</link>
      <pubDate>Sun, 01 Mar 2015 00:00:00 +0000</pubDate>
      <guid>/publication/2015-empirical-study-integration-activities/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>/publication/2015-explorations-on-the-wallace-bolyai-gerwien-theorem/</link>
      <pubDate>Mon, 22 Feb 2021 22:13:43 -0500</pubDate>
      <guid>/publication/2015-explorations-on-the-wallace-bolyai-gerwien-theorem/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>/publication/2014-on-irreducible-rational-quintics/</link>
      <pubDate>Sun, 21 Feb 2021 09:56:15 -0500</pubDate>
      <guid>/publication/2014-on-irreducible-rational-quintics/</guid>
      <description></description>
    </item>
    <item>
      <title>Setting up full-disk encryption in OpenBSD 5.3</title>
      <link>/blog/2013-03-26-setting-up-full-disk-encryption-in-openbsd-5.3/</link>
      <pubDate>Tue, 26 Mar 2013 13:40:54 +0000</pubDate>
      <guid>/blog/2013-03-26-setting-up-full-disk-encryption-in-openbsd-5.3/</guid>
      <description>I recently decided to try out a snapshot of OpenBSD 5.3, intrigued by the notice that&#xA;softraid(4) RAID1 and crypto volumes are now bootable on i386 and amd64 (full disk encryption).&#xA;I&amp;rsquo;ve always used an encrypted LVM (as setup by the alternate CD) with a fully encrypted root on my netbook and laptop when running Debian/Kubuntu and never noticed much a performance hit. Unfortunately, I&amp;rsquo;m not the only one who has noticed a significant drop in performance with full-disk encryption on OpenBSD.</description>
    </item>
    <item>
      <title>Search RCS and CVS &#34;,v&#34; files with rcsgrep</title>
      <link>/blog/2013-02-20-grep-rcs-cvs-files-with-rcsgrep/</link>
      <pubDate>Wed, 20 Feb 2013 08:52:09 +0000</pubDate>
      <guid>/blog/2013-02-20-grep-rcs-cvs-files-with-rcsgrep/</guid>
      <description>A few years ago I was doing research comparing how large software distributions handled shared object libraries, and studied Debian, FreeBSD, and Ubuntu. Extracting data about Debian packages was easy thanks to Peter Palfrader&amp;rsquo;s snapshot.debian.org service, which provides a machine-usable interface to Debian&amp;rsquo;s package history. FreeBSD&amp;rsquo;s data is equally accessible, albeit in a less pleasant format: their ports tree was stored in CVS until July 2012. One could easily rsync a copy of the ports tree&amp;rsquo;s CVS repository to a local machine to analyze the data.</description>
    </item>
    <item>
      <title>Viewing man pages by path on OpenBSD</title>
      <link>/blog/2013-02-19-viewing-man-pages-by-path-on-openbsd/</link>
      <pubDate>Tue, 19 Feb 2013 09:12:15 +0000</pubDate>
      <guid>/blog/2013-02-19-viewing-man-pages-by-path-on-openbsd/</guid>
      <description>When writing man pages, I often find myself wanting to preview my man page as I write it. On systems with man-db, which means most Debian-derived distributions, Fedora, Arch, SuSE, etc., I usually do this by suspending my editor and running&#xA;man /path/to/foo.1 However, OpenBSD doesn&amp;rsquo;t use man-db and the above will abort with&#xA;man: no entry for /path/to/foo.1 in the manual. Hence the following magic invocation:&#xA;mandoc /path/to/foo.1 | ${PAGER} Since I prefer less to most other pagers, I typically run:</description>
    </item>
    <item>
      <title>Fixing mutt header cache</title>
      <link>/blog/2012-07-03-fixing-mutt-header-cache/</link>
      <pubDate>Tue, 03 Jul 2012 10:47:37 +0000</pubDate>
      <guid>/blog/2012-07-03-fixing-mutt-header-cache/</guid>
      <description>Every now and then I have to kill mutt, which if done at the wrong time, can leave the header cache in an open state. Then attempting to restart mutt will cause it to hang at the &#34;Selecting INBOX&#34; stage. If mutt is compiled with support for the Tokyo Cabinet header cache backend (as it appears to be in Debian), a quick fix for this issue is to repair the header cache database using the Tokyo Cabinet utility tcbmgr from the tokyocabinet-bin package.</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2012-a-primer-on-provability-logic/</link>
      <pubDate>Mon, 22 Feb 2021 22:09:19 -0500</pubDate>
      <guid>/publication/2012-a-primer-on-provability-logic/</guid>
      <description></description>
    </item>
    <item>
      <title>mutt-fetchbug&amp;#58; fetch BTS bug reports from mutt</title>
      <link>/blog/2012-01-05-mutt-fetchbug/</link>
      <pubDate>Thu, 05 Jan 2012 15:58:00 +0000</pubDate>
      <guid>/blog/2012-01-05-mutt-fetchbug/</guid>
      <description>I&amp;rsquo;ve been a longtime mutt user, but have gotten somewhat annoyed of having to open a new terminal when I want to read or reply to a Debian bug with mutt (using &amp;lsquo;bts show 123456&amp;rsquo;). How nice it would be to be able to fetch a bug report from within mutt! And so, ladies and gentlemen, I present to you mutt-fetchbug. It&amp;rsquo;s extensively based on Zack&amp;rsquo;s mutt-notmuch script (a nice interface between mutt and notmuch for searching mail, I highly recommend it).</description>
    </item>
    <item>
      <title></title>
      <link>/publication/2011-explorations-on-the-dimension-of-a-graph/</link>
      <pubDate>Mon, 22 Feb 2021 21:56:41 -0500</pubDate>
      <guid>/publication/2011-explorations-on-the-dimension-of-a-graph/</guid>
      <description></description>
    </item>
    <item>
      <title>New Kubuntu Wiki Theme</title>
      <link>/blog/2011-10-13-new-kubuntu-wiki-theme/</link>
      <pubDate>Thu, 13 Oct 2011 08:20:18 +0000</pubDate>
      <guid>/blog/2011-10-13-new-kubuntu-wiki-theme/</guid>
      <description>The Kubuntu Wiki has a new wiki theme based off of the Ubuntu Light wiki theme found on the Ubuntu Wiki. If you want to make this theme your default theme, head to your preferences page and set your preferred theme to kubuntu-light. Thanks to all involved in making this theme a reality!</description>
    </item>
    <item>
      <title>Holiday MOTD</title>
      <link>/blog/2010-12-06-holiday-motd/</link>
      <pubDate>Mon, 06 Dec 2010 20:23:00 +0000</pubDate>
      <guid>/blog/2010-12-06-holiday-motd/</guid>
      <description>Since it&#39;s the holiday season, I thought I&#39;d greet my server&#39;s users with a colourful MOTD. Feel free to use it by appending it to your current MOTD.&#xA;You can do so with the command sudo sh -c &#34;curl /blog/2010-12-06-holiday-motd/holiday-motd &amp;gt;&amp;gt; /etc/motd&#34; on normal UNIX stations, sudo sh -c &#34;curl /blog/2010-12-06-holiday-motd/holiday-motd &amp;gt;&amp;gt; /etc/motd.tail&#34; on Debian/Ubuntu systems.&#xA;It&#39;ll end up looking a little like this (to get the full effect, including blinking, run curl /blog/2010-12-06-holiday-motd/holiday-motd ):</description>
    </item>
    <item>
      <title>Numbering paragraphs in LaTeX</title>
      <link>/blog/2010-12-05-numbering-paragraphs-in-latex/</link>
      <pubDate>Sun, 05 Dec 2010 13:45:00 +0000</pubDate>
      <guid>/blog/2010-12-05-numbering-paragraphs-in-latex/</guid>
      <description>Recently, I was asked to write an essay and to number its paragraphs. I couldn&amp;rsquo;t find anything premade, so I worked something up using the ledmac package. It isn&amp;rsquo;t perfect (you need to restart it after using the quote environment, etc.) but it did the trick for a simple essay. In case anybody else is looking to do something similar, here&amp;rsquo;s how I did it:&#xA;\documentclass{article} \usepackage{lipsum} \usepackage{ledmac} % \reversemarginpar % Uncomment for in the margin % \setlength\marginparwidth{2em} % Uncomment for in the margin \newcounter{para}\setcounter{para}{0} \newcounter{thispara}\setcounter{thispara}{0} \newcommand*{\newpara}{ % \refstepcounter{para} \setcounter{thispara}{\value{para}} % \marginpar{{\textbf{\thepara.</description>
    </item>
    <item>
      <title>Turnin-NG 1.1 released!</title>
      <link>/blog/2010-09-01-turnin-ng-1.1-released/</link>
      <pubDate>Wed, 01 Sep 2010 22:13:00 -0400</pubDate>
      <guid>/blog/2010-09-01-turnin-ng-1.1-released/</guid>
      <description>Turnin-NG version 1.1 has just been released. Turnin-NG is an assignment submission suite written in Python and composed of turnin and turnincfg. Students can use the turnin command to submit an assignment to a course. Professors and TAs (teaching assistants) can use turnincfg to manage submitted assignments, making them easier to grade.&#xA;Version 1.1 fixes a vulnerability found in version 1.0.1. Courses can now be managed by groups of users instead of by a single account.</description>
    </item>
    <item>
      <title>Venetian Veal Liver</title>
      <link>/blog/2010-08-19-venetian-veal-liver/</link>
      <pubDate>Thu, 19 Aug 2010 18:59:00 -0400</pubDate>
      <guid>/blog/2010-08-19-venetian-veal-liver/</guid>
      <description>Here&#39;s a recipe that first appeard in La nouvelle encyclopédie de la cuisine by Mme Jehanne Benoit under the name of Foie de veau à la vénitienne (Venetian veal liver). Whether or not it&#39;s truely Venetian, I don&#39;t know, but it&#39;s quite tasty and is known as breakfast two or three times a week.&#xA;Venetian Veal Liver Slice 1 lb. veal liver as thinly as possible. Cut these into half inch wide fingers.</description>
    </item>
    <item>
      <title>Easily download CTAN packages</title>
      <link>/blog/2010-05-16-easily-download-ctan-packages/</link>
      <pubDate>Sun, 16 May 2010 12:13:00 +0000</pubDate>
      <guid>/blog/2010-05-16-easily-download-ctan-packages/</guid>
      <description>I use LaTeX for nearly all of my document preparation. Letters, reports, you name it. Because I&#39;m always finding new uses for it, I find myself frequently downloading packages from CTAN (the Comprehensive TeX Archive Network).&#xA;I find it a hassle to copy a package&#39;s URL from my desktop (where I searched for it) to my netbook (where I want to download it). To solve this problem, I&#39;ve written a little shell function that downloads a package for me.</description>
    </item>
    <item>
      <title>Kobby 1.0 beta 5 now available in Kubuntu Lucid</title>
      <link>/blog/2010-04-14-kobby_1.0-beta5-now-available-in-kubuntu-lucid/</link>
      <pubDate>Wed, 14 Apr 2010 14:26:00 +0000</pubDate>
      <guid>/blog/2010-04-14-kobby_1.0-beta5-now-available-in-kubuntu-lucid/</guid>
      <description>Kobby 1.0 beta 5 is now available in Kubuntu Lucid. Some of you may be more familiar with a gtk alternative, Gobby.&#xA;Kobby is editor for collaboratively editing text documents and source files over a network. All users can work on a file simultaneously without the need to lock it. Kobby supports syntax highlighting for various programming and markup languages.&#xA;I hope that the UDS organizers will use the new protocol for collaborative editing so that we can participate remotely using Kobby this time around.</description>
    </item>
    <item>
      <title>Migrated blog to HTML5</title>
      <link>/blog/2010-04-06-migrated-blog-to-html5/</link>
      <pubDate>Tue, 06 Apr 2010 20:52:00 +0000</pubDate>
      <guid>/blog/2010-04-06-migrated-blog-to-html5/</guid>
      <description>I&#39;ve finally migrated my blog to HTML5. I learned lots. &amp;lt;article&amp;gt;, &amp;lt;header&amp;gt; and &amp;lt;footer&amp;gt; tags make everything seem more organized.&#xA;I&#39;m not sure if &amp;lt;time&amp;gt; tags are worth all the fuss. They don&#39;t work with historic dates. I would love them if one could change the format of &amp;lt;time&amp;gt; dates using CSS. However, as far as I can tell, it isn&#39;t possible.&#xA;&amp;lt;figure&amp;gt; and &amp;lt;figcaption&amp;gt; also do a lot to make a page more structured.</description>
    </item>
    <item>
      <title>ASCIImations from 1968 and present day</title>
      <link>/blog/2010-03-22-23-asciimations-from-1968-and-present-day/</link>
      <pubDate>Mon, 22 Mar 2010 15:59:00 +0000</pubDate>
      <guid>/blog/2010-03-22-23-asciimations-from-1968-and-present-day/</guid>
      <description>Yesterday, Slashdot reported on an ASCII art animated cat from 1968, made by printing hundreds of computer generated images of an ASCII cat and photographing them onto cinefilm. You can check it out on Youtube.&#xA;For those interested in ASCIImation, you can also watch a Starwars ASCIImation over telnet by connecting to towel.blinkenlights.nl (IPv4 or IPv6) on port 23. More about it here.&#xA;Anybody know of other cool ASCIImations?</description>
    </item>
    <item>
      <title>Gavotte accepted at Petrucci Music Library</title>
      <link>/blog/2010-03-21-54-gavotte-accepted-at-petrucci-music-library/</link>
      <pubDate>Sun, 21 Mar 2010 18:01:00 +0000</pubDate>
      <guid>/blog/2010-03-21-54-gavotte-accepted-at-petrucci-music-library/</guid>
      <description> My typesetting of the Gavotte got accepted at IMSLP&#39;s Petrucci Music Library, download it now here. </description>
    </item>
    <item>
      <title>Prokofiev&#39;s Gavotte typeset with LilyPond</title>
      <link>/blog/2010-03-20-prokofievs-gavotte-typeset-with-lilypond/</link>
      <pubDate>Sat, 20 Mar 2010 20:43:22 +0000</pubDate>
      <guid>/blog/2010-03-20-prokofievs-gavotte-typeset-with-lilypond/</guid>
      <description>I&#39;ve typeset Prokofiev&#39;s Gavotte (Op. 32, No. 3) using GNU Lilypond and Frescobaldi. It is based on the version in Piano Works in Five Volumes: 2. Pieces, Moscow: Muzyka, 1983, available at the Petrucci Music Library. My typeset version contains new fingering and what I believe are missing staccato marks in the left hand. For those of you who want a copy, you can find the PDF version here and the LilyPond source here.</description>
    </item>
    <item>
      <title>Moving to Jekyll</title>
      <link>/blog/2010-03-19-moving-to-jekyll/</link>
      <pubDate>Fri, 19 Mar 2010 11:35:52 +0000</pubDate>
      <guid>/blog/2010-03-19-moving-to-jekyll/</guid>
      <description>I&#39;m currently migrating my old wordpress blog to Jekyll. You can expect this site to be relatively broken over the next while.&#xA;This also means that my blog has lost all of its comments.</description>
    </item>
    <item>
      <title>New Kubuntu Website Look</title>
      <link>/blog/2010-02-19-new-kubuntu-website-look/</link>
      <pubDate>Fri, 19 Feb 2010 00:00:00 +0000</pubDate>
      <guid>/blog/2010-02-19-new-kubuntu-website-look/</guid>
      <description> The Kubuntu website has undergone a minor face lift this morning, we’ve moved the news off of the front page, added easy to follow action items in our masthead and tried to make the content a bit more captivating to our target users.&#xA;Have a look at http://www.kubuntu.org/ and see for yourself :D </description>
    </item>
    <item>
      <title>cd -</title>
      <link>/blog/2010-01-29-cd--/</link>
      <pubDate>Fri, 29 Jan 2010 00:00:00 +0000</pubDate>
      <guid>/blog/2010-01-29-cd--/</guid>
      <description>I learned of a cool feature in the cd command, which to my knowledge works under zsh, bash, ksh and possibly other shells.&#xA;cd - takes you to your previous directory, letting you easily switch back and forth between two directories. Take /home/ryan and /etc for example:&#xA;ryan@lambda:~$ cd /etc ryan@lambda:/etc$ cd - /home/ryan ryan@lambda:~$ cd - /etc ryan@lambda:/etc$ Please share any other cool shell tricks you may know :D</description>
    </item>
    <item>
      <title>New GPG key</title>
      <link>/blog/2009-09-27-new-gpg-key/</link>
      <pubDate>Sun, 27 Sep 2009 00:00:00 +0000</pubDate>
      <guid>/blog/2009-09-27-new-gpg-key/</guid>
      <description>-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Sun, 27 Sep 2009 20:00:00 -0500 In light recent new attacks against SHA-1 [1,2], and the NIST guidance on 1024 bit keys and SHA-1 hashes [3,4], I have decided to move to a new OpenPGP key of a larger size. As such, I will slowly be transitioning away from my old key. My old key will continue to be valid for some time to come, but I&#39;d prefer all new correspondences to use the new one.</description>
    </item>
    <item>
      <title>Fixing &#34;mount.nfs&amp;#58; mount system call failed&#34; on a Debian NFS server</title>
      <link>/blog/2009-09-21-fixing-nfs-on-debian/</link>
      <pubDate>Mon, 21 Sep 2009 00:00:00 +0000</pubDate>
      <guid>/blog/2009-09-21-fixing-nfs-on-debian/</guid>
      <description>I’ve been trying to figure out why I was always getting mount.nfs: mount system call failed when trying to mount an NFS share from my Debian server on my Kubuntu box. I guess I wasn’t paying attention when dpkg / debconf configured ‘portmap’ package on the Debian box. The solution is to run dpkg-reconfigure portmap as root on the server and select no when asked:&#xA;┌────────────────────┤ Configuring portmap ├─────────────────────┐ │ │ │ By default, portmap listens to all IP addresses.</description>
    </item>
    <item>
      <title>Quassel like monitor window for irssi</title>
      <link>/blog/2009-08-29-quassel-monitor-window-in-irssi/</link>
      <pubDate>Sat, 29 Aug 2009 00:00:00 +0000</pubDate>
      <guid>/blog/2009-08-29-quassel-monitor-window-in-irssi/</guid>
      <description>The Quassel irc client was shipped as default in Kubuntu 9.04 and has this lovely feature allowing you to monitor multiple windows simultaneously, see this screenshot for a better idea of what it does.&#xA;However, I often want to access IRC from computers I don’t control and thus installing Quassel each and everytime I want to access IRC (it’s main feature is that it’s a distributed IRC client, multiple clients can connect to one core) is impractical.</description>
    </item>
    <item>
      <title>Quota prettyfier and getting quota information from Windows</title>
      <link>/blog/2009-08-19-quotta-prettyfier/</link>
      <pubDate>Wed, 19 Aug 2009 00:00:00 +0000</pubDate>
      <guid>/blog/2009-08-19-quotta-prettyfier/</guid>
      <description>At work I was asked to write a small script that allows users to get their quota from a Windows machine since apparently Windows doesn’t have an equivalent to the ‘quota‘ command. All these users also have accounts on UNIX boxes (running either SunOS 5.8 or Linux), so I figured the quickest way would be to SSH into one of these and make the output of the ‘quota‘ command easier to read.</description>
    </item>
    <item>
      <title>Looking for a project name</title>
      <link>/blog/2009-06-26-looking-for-a-project-name/</link>
      <pubDate>Fri, 26 Jun 2009 00:00:00 +0000</pubDate>
      <guid>/blog/2009-06-26-looking-for-a-project-name/</guid>
      <description>One of the hardest parts of starting a new project is finding a catchy, easy to pronounce and easy to spell name. I’m writing a set of utilities for managing GPG on a LUKS partition that will do the following:&#xA;Create a LUKS partition and copy your GPG homedir to it Provide a wrapper for gpg that will automatically mount the partition and then, if the user wishes, automatically call the unmounter in X minutes The unmounter would unmount your gpg directory and copy your pubring to the mount target once the LUKS partition was unmounted.</description>
    </item>
    <item>
      <title>New Kubuntu Wiki theme!</title>
      <link>/blog/2009-06-19-new-kubuntu-wiki-theme/</link>
      <pubDate>Fri, 19 Jun 2009 00:00:00 +0000</pubDate>
      <guid>/blog/2009-06-19-new-kubuntu-wiki-theme/</guid>
      <description>The Kubuntu wiki has a flashy new theme! It isn’t yet default, but if you’d like to help test it out, head on over to your wiki preferences page and select the kubuntunew theme from the dropdown box.&#xA;If you encounter any bugs, please report them here.&#xA;Thanks to Matthew “mdke” East for providing the base for our theme and to the Canonical Sysadmins for installing it.</description>
    </item>
    <item>
      <title>Book meme</title>
      <link>/blog/2008-11-11-book-meme/</link>
      <pubDate>Tue, 11 Nov 2008 00:00:00 +0000</pubDate>
      <guid>/blog/2008-11-11-book-meme/</guid>
      <description>Sorry, two posts in a row, but here’s my quote. A bit more than a sentence, but oh well.&#xA;“Remember kids,” he tells them sternly. “Don’t shoot each other. Aim at the fragile, expensive stuff.” Mark Z. Danielewski’s House of Leaves&#xA;Meme HOWTO:&#xA;Grab the nearest book. Open it to page 56. Find the fifth sentence. Post the text of the sentence in your journal along with these instructions. Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.</description>
    </item>
    <item>
      <title>Installing a vanilla Firefox in Kubuntu Intrepid</title>
      <link>/blog/2008-11-11-vanilla-firefox-intrepid/</link>
      <pubDate>Tue, 11 Nov 2008 00:00:00 +0000</pubDate>
      <guid>/blog/2008-11-11-vanilla-firefox-intrepid/</guid>
      <description>As webmaster, one should test their work in as many browsers as they can. As Kubuntu doesn’t have Firefox installed by default, I decided I probably should install it (Konqueror rocks by the way… :D ). However, when one goes to install firefox, here’s what happens:&#xA;ryan@iota&amp;gt; sudo aptitude install firefox ~ Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states.</description>
    </item>
    <item>
      <title>Calling for Intrepid Screenshots</title>
      <link>/blog/2008-10-28-calling-intrepid-screenshots/</link>
      <pubDate>Tue, 28 Oct 2008 00:00:00 +0000</pubDate>
      <guid>/blog/2008-10-28-calling-intrepid-screenshots/</guid>
      <description>Hi Planet,&#xA;Due to numerous requests, we’re looking for screenshots of Kubuntu Intrepid to put on the Kubuntu website. If you have any snazzy screenshots that really show the power and sleekness of Kubuntu and KDE4, please upload them to this wiki page, or if you have an account on KDE-look, you can upload them there with “[Kubuntu Intrepid]” prefixing the title so that we can find them.&#xA;If you’ve customized the default desktop, please try to keep it minimal and include instructions on how you achieved these customizations so that new users don’t get frustrated trying to achieve them.</description>
    </item>
    <item>
      <title>New Kubuntu Website</title>
      <link>/blog/2008-07-14-new-kubuntu-website/</link>
      <pubDate>Mon, 14 Jul 2008 00:00:00 +0000</pubDate>
      <guid>/blog/2008-07-14-new-kubuntu-website/</guid>
      <description>After months of work, Kubuntu now has a lovely new website.&#xA;Many people have offered to help over the past two months, and with the new website, it is now possible. All those who are interested should join the Kubuntu Developer Discussion and introduce themselves and share how they would like to contribute, if they haven’t done so already.&#xA;Congratulations to David J. Miller for winning the Website Mockup Contest we held a few months ago!</description>
    </item>
    <item>
      <title>All day trivia special</title>
      <link>/blog/2007-12-31-all-day-trivia-special/</link>
      <pubDate>Mon, 31 Dec 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-12-31-all-day-trivia-special/</guid>
      <description>Happy New Year to everybody! I&#39;ll keep this short: There&#39;s an all day trivia special in #ubuntu-trivia on irc.ubuntu.com. Go on, you know you want to ;) You can find the current scores here. We have over 2700 questions that are sure to keep your brain working, ranging from programming to computer history to networking to Linux. I&#39;ll also be adding Ubuntu related questions throughout the day. Enjoy! :D </description>
    </item>
    <item>
      <title>New speakers!</title>
      <link>/blog/2007-09-02-new-speakers/</link>
      <pubDate>Sun, 02 Sep 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-09-02-new-speakers/</guid>
      <description>Well, on the way back from getting school supplies, my mom decided to stop in at the local computer shop (Her old &#34;MDG&#34; computer is on its last legs with 512MB ram / P3). While she browsed around, I decided to look for some speakers to replace my dollar store ones...&#xA;I picked up the Logitech X-540 5.1 speakers at 59.99CAD+tax (on a &#39;back-to-school&#39; type sale), rather that the Logitech X-230 2.</description>
    </item>
    <item>
      <title>Vacation</title>
      <link>/blog/2007-08-04-vacation/</link>
      <pubDate>Sat, 04 Aug 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-08-04-vacation/</guid>
      <description>I&#39;ll be away for the next two weeks... Off camping out in Quebec ;)&#xA;I will however be back Saturday and Sunday next weekend.&#xA;&#xA;Cheers,&#xA;Ryan</description>
    </item>
    <item>
      <title>Happy Sysadmin Appreciation Day!</title>
      <link>/blog/2007-07-26-happy-sysadmin-appreciation-day/</link>
      <pubDate>Thu, 26 Jul 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-07-26-happy-sysadmin-appreciation-day/</guid>
      <description>July 27th is Sysadmin Appreciation Day, so, I&#39;d just like to thank all the Sysadmins out there, for keeping our systems ticking. Special thanks go to the Canonical Sysadmins for maintaining Launchpad, the repositories, the wiki and the Ubuntu Forums, just to name a few.&#xA;These are the people who get called into work at 2 AM on a Sunday to see why the database server is complaining about corrupt entries, the hard workers who make sure the Websites and email work for an organization, and who keep its users happy.</description>
    </item>
    <item>
      <title>C&#43;&#43;, Here I come...</title>
      <link>/blog/2007-07-10-c-here-i-come/</link>
      <pubDate>Tue, 10 Jul 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-07-10-c-here-i-come/</guid>
      <description>I finally managed to pick up a copy of Accelerated C++ by Andrew Koenig &amp; Barbara E. Moo today, on the way back from Ottawa. It seems to be the most recommended printed book to beginners in ##C++ on freenode. Who knows, I might even write a review of it. Learning C++ is all part of my effort/hopes of being able to contribute patches, etc. to KDE. I&#39;ve started off with Python, but I quickly learned that KDE is written in C++, and, even though some people might disagree, the PyQt4 documentation isn&#39;t to die for.</description>
    </item>
    <item>
      <title>Chainmail Rosary</title>
      <link>/blog/2007-07-09-chainmail-rosary/</link>
      <pubDate>Mon, 09 Jul 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-07-09-chainmail-rosary/</guid>
      <description>Here&#39;s a rosary that my school asked me to make for our retiring nun, it&#39;s made out of stainless steel and bronze. The weave for the beads is a kinged (doubled) Rhinos Snorting Drano and the cross is full persian.</description>
    </item>
    <item>
      <title>How to switch caps lock with the right Ctrl key</title>
      <link>/blog/2007-05-29-how-to-switch-caps-lock-with-the-right-ctrl-key/</link>
      <pubDate>Tue, 29 May 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-05-29-how-to-switch-caps-lock-with-the-right-ctrl-key/</guid>
      <description>As some people might know, you can easily switch Caps lock with the Left Ctrl key, by adding Option &amp;quot;XkbOptions&amp;quot; &amp;quot;ctrl:swapcaps&amp;quot; to the Keyboard InputDevice section in /etc/X11/xorg.conf&#xA;However, to have caps lock switch with the right control key, don&amp;rsquo;t bother Googling, you probably won&amp;rsquo;t find anything (At least, I didn&amp;rsquo;t&amp;hellip;). Of course, some will say that having two Ctrl keys on the same hand isn&amp;rsquo;t as ergonomic as one per hand, but I never use the right Ctrl key compared to the left one.</description>
    </item>
    <item>
      <title>Dvorak after 3 weeks</title>
      <link>/blog/2007-05-26-dvorak-after-2-weeks/</link>
      <pubDate>Sat, 26 May 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-05-26-dvorak-after-2-weeks/</guid>
      <description>As some of you may remember, 3 weeks ago, I posted a blog entry announcing that I would be switching to the Dvorak keyboard layout.&#xA;Originally, I could type 50 to 60 WPM with QWERTY. I am now typing around 35WPM with dvorak. The keys that got me the most are the &#34;b&#34; (B is one key over from it&#39;s position in QWERTY), as well as the &#39;F&#39; and the &#39;Y&#39; (once again, &#39;y&#39; is one over from it&#39;s old spot).</description>
    </item>
    <item>
      <title>Riddles anybody?</title>
      <link>/blog/2007-05-16-riddles-anybody/</link>
      <pubDate>Wed, 16 May 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-05-16-riddles-anybody/</guid>
      <description>I happened to stumble across what is possibly the internet&#39;s longest and most creative riddle. It&#39;s 139 levels long and only 0.034% have managed to reach level 100. (34 out of 100 000) Let&#39;s try to change that and head over to the riddle. A couple hints: GIMP, wget and nano/emacs/vi are your friends. Python&#39;s chr() is useful. Keep an open mind, and there&#39;s always a hint placed in the page&#39;s source.</description>
    </item>
    <item>
      <title>Ubuntu and Kubuntu CDs</title>
      <link>/blog/2007-05-15-ubuntu-and-kubuntu-cds/</link>
      <pubDate>Tue, 15 May 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-05-15-ubuntu-and-kubuntu-cds/</guid>
      <description>I got my 3 Ubuntu and 3 Kubuntu CDs in the mail today. They even came with a pack of 4 Ubuntu laptop stickers! :D&#xA;I wonder if next release shipped by ShipIt will have Kubuntu stickers as well... hmmm :)</description>
    </item>
    <item>
      <title>Light and dark blue anklet</title>
      <link>/blog/2007-05-11-light-and-dark-blue-anklet/</link>
      <pubDate>Fri, 11 May 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-05-11-light-and-dark-blue-anklet/</guid>
      <description>Here is a light and dark blue half-persian 3-in-1 anklet that I made for a friend&#39;s birthday. Materials:&#xA;26 turquoise anodized aluminum 16ga 1/4&#34; ID 26 blue anodized aluminum 16ga 1/4&#34; ID 52 white EPDM rings 16ga 1/4&#34; ID It&#39;s 28 cm circumference, and took about an hour and a half to make. Click on images to see a bigger version.</description>
    </item>
    <item>
      <title>Dvorak anybody?</title>
      <link>/blog/2007-05-06-dvorak-anybody/</link>
      <pubDate>Sun, 06 May 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-05-06-dvorak-anybody/</guid>
      <description>I&#39;ve finally decided to give Dvorak (Not the composer, Antonin, but the keyboard layout) a run... I&#39;ll be using it exclusively for the next month, and then at the end I&#39;ll write some kind of entry comparing the two, and the pros and cons of each. And I sure hope Dvorak will make a difference in my typing abilities.&#xA;What are your experiences with Dvorak? Why do you like or dislike it?</description>
    </item>
    <item>
      <title>Fancy desktop notification for irssi!</title>
      <link>/blog/2007-04-29-fancy-desktop-notification-for-irssi/</link>
      <pubDate>Sun, 29 Apr 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-04-29-fancy-desktop-notification-for-irssi/</guid>
      <description>A couple of weeks ago, nixternal blogged about notify-send and irssi in Kubuntu. In response to his entry, I read up on the Desktop Notification Specification and learned that notify-send accepts a mixture of html and xml tags. Why not have the nick that pinged you in bold, so that you can better separate it from the message. The script now also displays both brackets around a nickname, instead of just one.</description>
    </item>
    <item>
      <title>Questions needed for Quizbuntu</title>
      <link>/blog/2007-04-21-questions-needed-for-quizbuntu/</link>
      <pubDate>Sat, 21 Apr 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-04-21-questions-needed-for-quizbuntu/</guid>
      <description>I&amp;rsquo;m currently looking for multiple choice questions that could be used for Quizbuntu, #ubuntu-trivia &amp;rsquo;s trivia bot. Anybody willing to write some, please contact me on irc.ubuntu.com (ryanakca), by commenting on this post or at ryanakca (at) kubuntu (dot) org. The questions should be Ubuntu / technology related, but a few offtopic ones will be accepted to make it a bit more interesting.&#xA;Also, The Contact Me form on my blog was broken, and any messages sent with it before April 1st are lost&amp;hellip; I&amp;rsquo;ve fixed postfix and it should be working now :)</description>
    </item>
    <item>
      <title>CBC recommends Ubuntu to average user</title>
      <link>/blog/2007-03-25-cbc-recommends-ubuntu-to-average-user/</link>
      <pubDate>Sun, 25 Mar 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-03-25-cbc-recommends-ubuntu-to-average-user/</guid>
      <description>Friday, March 23, CBC (Canadian Broadcasting Corporation, Canada&amp;rsquo;s main TV/radio news channel) posted an article on their website encouraging readers to switch to Linux, Ubuntu in particular.&#xA;Quoting slashdot:&#xA;&#34;The CBC [Canadian Broadcasting Corporation] has posted an article on its website promoting the use of Ubuntu Linux to the &#39;average computer user&#39;. &#39;With the exception of gaming, which is limited, almost all of the average person&#39;s basic computing needs are well looked after with this package.</description>
    </item>
    <item>
      <title>Ubuntu Trivia, 24/7</title>
      <link>/blog/2007-03-07-ubuntu-trivia-247/</link>
      <pubDate>Wed, 07 Mar 2007 00:00:00 +0000</pubDate>
      <guid>/blog/2007-03-07-ubuntu-trivia-247/</guid>
      <description>&lt;p&gt;We now have access to ubuntu trivia 24 hours a day, 7 days a week,&#xA;thanks to Quizbuntu, the Trivia bot. There will still be official&#xA;matches with prizes organized by the Ubuntu Trivia team (aka, don&amp;rsquo;t&#xA;expect to get a prize from this bot, you get them by winning in the&#xA;Official Matches)&lt;/p&gt;&#xA;&lt;p&gt;To play a game, please join #ubuntu-trivia with your favorite IRC&#xA;client.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;!start&lt;/code&gt; starts a game.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;!skip&lt;/code&gt; skips a question.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;!hint&lt;/code&gt; gives a hint, with a maximum of three hints per question,&#xA;and a minimum of 10 seconds between hints&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;!stop&lt;/code&gt; stops the game.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;!top10&lt;/code&gt; gives the scores.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; &lt;code&gt;/msg Quizbuntu ?&lt;/code&gt; for more commands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Teaching</title>
      <link>/teaching/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/teaching/</guid>
      <description>I am currently teaching:&#xA;INF1070 (W25): Utilisation et administration de systèmes informatiques At UQAM, I have previously taught:&#xA;INF889J (F24): Fondements pratiques des langages de programmation INF1070 (W24): Utilisation et administration de systèmes informatiques At McGill, I was a co-instructor with Brigitte Pientka for:&#xA;COMP302 (F21): Programming Languages and Paradigms At Carnegie Mellon, I was a teaching assistant for:&#xA;15-814 (F18): Types and Programming Languages 15-317/15-657 (F17): Constructive Logic </description>
    </item>
  </channel>
</rss>
