<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/forest/default.xsl"?>
<fr:tree xmlns:fr="http://www.forester-notes.org" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace" root="false" base-url="/forest/">
  <fr:frontmatter>
    <fr:authors>
      <fr:author>
        <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
      </fr:author>
      <fr:contributor>
        <fr:link href="/forest/adeamorim/" title="Arthur Azevedo de Amorim" uri="https://liamoc.net/forest/adeamorim/" display-uri="adeamorim" type="local">Arthur Azevedo de Amorim</fr:link>
      </fr:contributor>
      <fr:contributor>
        <fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine Rizkallah</fr:link>
      </fr:contributor>
      <fr:contributor>
        <fr:link href="/forest/pschachte/" title="Peter Schachte" uri="https://liamoc.net/forest/pschachte/" display-uri="pschachte" type="local">Peter Schachte</fr:link>
      </fr:contributor>
      <fr:contributor>
        <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Pilar Selene Linares Arévalo</fr:link>
      </fr:contributor>
      <fr:contributor>
        <fr:link href="/forest/vjackson/" title="Vincent Jackson" uri="https://liamoc.net/forest/vjackson/" display-uri="vjackson" type="local">Vincent Jackson</fr:link>
      </fr:contributor>
    </fr:authors>
    <fr:date>
      <fr:year>2025</fr:year>
      <fr:month>7</fr:month>
      <fr:day>6</fr:day>
    </fr:date>
    <fr:uri>https://liamoc.net/forest/loc-001B/</fr:uri>
    <fr:display-uri>loc-001B</fr:display-uri>
    <fr:route>/forest/loc-001B/</fr:route>
    <fr:title text="Liam O'Connor › Weeknotes"><fr:link href="/forest/index/" title="Liam O'Connor" uri="https://liamoc.net/forest/index/" display-uri="index" type="local">Liam O'Connor</fr:link> › Weeknotes</fr:title>
  </fr:frontmatter>
  <fr:mainmatter>
    <html:p>This page has an <fr:link href="/forest/loc-001B/atom.xml" type="external">atom feed</fr:link>.</html:p>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>4</fr:month>
          <fr:day>26</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W17/</fr:uri>
        <fr:display-uri>2026-W17</fr:display-uri>
        <fr:route>/forest/2026-W17/</fr:route>
        <fr:title text="Weeknotes 2026-W17">Weeknotes 2026-W17</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was the first week back teaching, but we are off to a good start, I think.</html:p>
        <html:figure>
          <html:img loading="lazy" width="290px" src="/forest/bafkrmiag46bm7aufsod7czqqkglbdva5jtt4iy2f3anh5oq5qlfms3tbma.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmie72kiyr3z6rbfuc5ppns6pmks6oobnqbabjcg3pjy4x6eeeho4le.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmiahy2fluzauhujonenvibflmvgplxwzvqxt3xqnv5qk6ftrflb3kq.jpeg" />
          <html:figcaption>Autumnal sights around Lyneham and Acton.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>26</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0046/</fr:uri>
            <fr:display-uri>loc-0046</fr:display-uri>
            <fr:route>/forest/loc-0046/</fr:route>
            <fr:title text="Deep result in monitoring theory">Deep result in monitoring theory</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>My student <fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link> was absolutely on fire this week. About five times I threw out a few idle conjectures I had, and within hours she'd come back with a proof or a counterexample. We made more progress in one week than I had thinking about this stuff for months.</html:p>
            <html:p>It's well known in the world of runtime verification that the class of <html:em>monitorable</html:em> properties (by which I mean the definition used by Bauer, where no monitor will get into an "ugly" state where no informative answer is possible) is larger than the set of <fr:link href="/forest/ltp-0004/" title="Safety properties" uri="https://liamoc.net/forest/ltp-0004/" display-uri="ltp-0004" type="local">safety</fr:link> or <fr:link href="/forest/ltp-0005/" title="Guarantee properties" uri="https://liamoc.net/forest/ltp-0005/" display-uri="ltp-0005" type="local">guarantee</fr:link> properties, or their boolean combinations (called <html:em>obligation</html:em> properties or <fr:tex display="inline"><![CDATA[\Delta _2]]></fr:tex>).</html:p>
            <html:p>What Kai showed recently is that all monitorable properties are indistinguishable by any monitor from an obligation property. This shows that a lot of the monitorability classes we find in the literature are making a distinction from standard sets in <fr:tex display="inline"><![CDATA[\Delta _2]]></fr:tex> that is <html:em>only observable at infinity anyway</html:em>. So the "largeness" of the monitorability classes is illusory, and obligation properties are all you need.</html:p>
            <html:p>The proof has been mechanised in Isabelle/HOL, and we have a number of other supporting contributions that I think will make a good paper for POPL or LICS. I'm very proud of Kai's progress so far! I think this result will reinforce her plan for her thesis, which is to semantically tackle <html:em>revocable</html:em> monitors (i.e. monitors that can change their mind). Seeing as the difference hierarchy is contained at all finite levels in <fr:tex display="inline"><![CDATA[\Delta _2]]></fr:tex>, we should have an easy time justifying restricting to <fr:tex display="inline"><![CDATA[\Delta _2]]></fr:tex> properties now.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>26</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0045/</fr:uri>
            <fr:display-uri>loc-0045</fr:display-uri>
            <fr:route>/forest/loc-0045/</fr:route>
            <fr:title text="Coro Concert: Radiant Dawn">Coro Concert: Radiant Dawn</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p><fr:link href="/forest/loc-003G/" title="I've joined Coro" uri="https://liamoc.net/forest/loc-003G/" display-uri="loc-003G" type="local">Coro</fr:link>'s concert has now been officially announced. Please <fr:link href="https://www.corocanberra.com/concerts" type="external">buy tickets</fr:link> as soon as you can! The venue is my usual All Saints Ainslie church so the acoustic is good but seating is limited.</html:p><html:figure><fr:link href="https://www.corocanberra.com/concerts" type="external"><html:img loading="lazy" width="450px" src="/forest/bafkrmia74oowpdhkzfzil22fpylrovrordvnbgkgljybwdp4lakwu36a4i.png" /></fr:link></html:figure>
  <html:blockquote>
  <html:p>Coro, one of Canberra's leading choral ensembles and two-time Canberra Critics' CIrcle Award recipient, invites audiences to experience Radiant Dawn: From Lamentation to Light, an extraordinary hour of choral music that traces the path from sorrow and supplication to renewal, wonder, and radiant joy.</html:p>

  <html:p>This thoughtfully curated program - the ensemble's first for 2026 - brings together masterpieces from the Renaissance and the modern era, revealing how composers across centuries have responded to the deepest human emotions with beauty, faith, and hope.</html:p>

  <html:p>Beginning in stillness and grief with three great sacred works of the Renaissance by Handl, Victoria, and Lobo, these works explore mortality, sorrow, and the search for consolation. Yet from darkness emerges hope. William Byrd’s three exquisite settings of the Agnus Dei — for three, four, and five voices — chart a journey from intimate simplicity to glorious fullness of sound. Interwoven are Igor Stravinsky’s luminous Ave Maria and Claude Le Jeune’s joyful Revecy venir du printemps, suggesting grace, renewal, and the first stirrings of life.</html:p>

<html:p>At the centre of the evening, and giving the concert its title, stands James MacMillan’s breathtaking O Radiant Dawn, a contemporary choral masterpiece of glowing sonorities and spiritual intensity. </html:p>

<html:p>Celebrating life with energy, intimacy and warmth, the afternoon closes with works by Finzi and Chilcott, followed by Morten Lauridsen’s beloved O Magnum Mysterium. </html:p>

<html:p>Radiant Dawn: From Lamentation to Light is a concert of striking contrasts and deep emotional resonance — music that journeys through shadow into brilliance, reminding us of the enduring power of the human spirit.</html:p>
</html:blockquote>
</fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>26</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0044/</fr:uri>
            <fr:display-uri>loc-0044</fr:display-uri>
            <fr:route>/forest/loc-0044/</fr:route>
            <fr:title text="Church Music Corner › 4th Sunday of Easter 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 4th Sunday of Easter 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Misericórdia Dómini plena est terra, allelúia: verbo Dei cæli firmáti sunt, allelúia, allelúia.
</html:blockquote>
<html:p>Today at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> I was planning to sing Dering's Duo Seraphim as a duet with our choir director but he was exhausted and unable to come in for the morning mass, so instead I sang some Gregorian chants, specifically the introit for this Sunday in Latin (text above), the Easter Sequence in English using an older translation I remember from St. Mary's Cathedral (text below), and then the introit for <fr:link href="/forest/loc-0042/" title="Church Music Corner › 3rd Sunday of Easter 2026" uri="https://liamoc.net/forest/loc-0042/" display-uri="loc-0042" type="local">last sunday</fr:link>: </html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Christians to the Paschal victim offer sacrifice and praise.</html:td></html:tr>
  <html:tr><html:td>The sheep are ransomed by the Lamb;</html:td></html:tr>
  <html:tr><html:td>And Christ, the undefiled, hath sinners to his Father reconciled.<html:br /></html:td></html:tr>
  <html:tr><html:td>Death and life contended, combat strangely ended:</html:td></html:tr>
  <html:tr><html:td>Life's own champion slain, yet lives to reign.</html:td></html:tr>
  <html:tr><html:td>Tell us, Mary, what thou didst see upon the way.<html:br /></html:td></html:tr>
  <html:tr><html:td>The tomb the living did enclose, I saw Christ's glory as he rose.</html:td></html:tr>
  <html:tr><html:td>The angels attesting, shroud with graveclothes resting.</html:td></html:tr>
  <html:tr><html:td>Christ my hope has risen! He goes before you into Gallilee.<html:br /></html:td></html:tr>
  <html:tr><html:td>That Christ is truly risen from the dead we know.</html:td></html:tr>
  <html:tr><html:td>Victorious King, thy mercy show. Amen. Alleluia.</html:td></html:tr>
  </html:table></html:blockquote>
<html:p>After that we had choral evensong for this month, this time directed by our usual director. We sang Stainer's <fr:link href="https://www.youtube.com/watch?v=hYmHdJJAyeA" type="external">Hail, Gladdening Light</fr:link> as usual, as well as Phillip Moore's third service for the <fr:link href="https://www.youtube.com/watch?v=hRN08tkNN_k" type="external">Magnificat</fr:link> and <fr:link href="https://www.youtube.com/watch?v=KTqucmeGPR4" type="external">Nunc Dimittis</fr:link> (it's hard to find good recordings). Because it was the day after Anzac Day, we also sang Daley's <fr:link href="https://www.youtube.com/watch?v=nMES2S1O7Y8" type="external">In Remembrance</fr:link>.</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Do not stand at my grave and weep;</html:td></html:tr>
  <html:tr><html:td>I am not there, I do not sleep:</html:td></html:tr>
  <html:tr><html:td>I am a thousand winds that blow,</html:td></html:tr>
  <html:tr><html:td>I am the diamond glint on snow,</html:td></html:tr>
  <html:tr><html:td>I am the sunlight on ripened grain,</html:td></html:tr>
  <html:tr><html:td>I am the gentle morning rain.</html:td></html:tr>
  <html:tr><html:td>And when you wake in the morning's hush,</html:td></html:tr>
  <html:tr><html:td>I am the sweet uplifting rush</html:td></html:tr>
  <html:tr><html:td>Of quiet birds in circled flight.</html:td></html:tr>
  <html:tr><html:td>I am the soft stars that shine at night.</html:td></html:tr>
  <html:tr><html:td>Do not stand at my grave and cry,</html:td></html:tr>
  <html:tr><html:td>I am not there, I did not die.</html:td></html:tr>
</html:table>
</html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>4</fr:month>
          <fr:day>19</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W16/</fr:uri>
        <fr:display-uri>2026-W16</fr:display-uri>
        <fr:route>/forest/2026-W16/</fr:route>
        <fr:title text="Weeknotes 2026-W16">Weeknotes 2026-W16</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I was a little unwell at the beginning of this week, and extremely busy in the second half, mostly preparing <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> mid-term tests. Teaching courses is hard work!</html:p>
        <html:figure>
          <html:img loading="lazy" width="290px" src="/forest/bafkrmiginnnfbkqroiauxl6z2tpj5anghu45av62ulmkidvp2t6tm2fzme.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmichncebt4ul4twkspml3scpuko7zcuuezkistsibg2kysecpy3rey.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmifcriojtuxwbviha3chutzt6exbkuysnoqzsoobtkz5wx3jrnt55e.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmidlt6dy4avje3klccoteotfdnuuab5gamlgbrl2jxboiibh2q5vg4.jpeg" />
          <html:figcaption>Autumn is coming to Canberra</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>17</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0043/</fr:uri>
            <fr:display-uri>loc-0043</fr:display-uri>
            <fr:route>/forest/loc-0043/</fr:route>
            <fr:title text="April PhD Monitoring">April PhD Monitoring</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Today we had our regular PhD monitoring event, where all students and faculty in the <fr:link href="https://comp.anu.edu.au/join/foundations/" type="external">Foundations</fr:link> cluster go to a remote location for a day, listen to some talks, and hold interviews with students where we ensure they're well supported. We also try to run some fun activities and get the students socialising with each other. It's always an enjoyable day.</html:p>
            <html:figure><html:img loading="lazy" width="290px" src="/forest/bafkrmiam2kfzrqtk5gfcupo3kugdio7pv2p55dtchc4yhms772zpiyhm7a.jpeg" />
  <html:img loading="lazy" width="290px" src="/forest/bafkrmifxbzm5fueyqikcviiyz2r2qeeuo4co5vq2v7fiiyoyw5ftuhsmi4.jpeg" /></html:figure>
            <html:p>This time we had a fairly packed schedule and many students to get through, so I didn't get any time to play frisbee, although I did take a few nice shots of the landscape around the Cuppacumbalong Homestead where we held our event.</html:p>
            <html:figure><html:img loading="lazy" width="290px" src="/forest/bafkrmihztchlahkdxzgim4gqlpz45jeorwrx4c3ohh2gdj43rdrxhvz2li.jpeg" />
  <html:img loading="lazy" width="290px" src="/forest/bafkrmieom3vzchqyiouaecd4nookk3k7hukjytl52cv3gtlbaz2mv3djhu.jpeg" /></html:figure>
            <html:p>I met a few students who were new to me and had a few stimulating research discussions, and my students <fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link>, <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link> and <fr:link href="/forest/yiyao/" title="Yi Yao" uri="https://liamoc.net/forest/yiyao/" display-uri="yiyao" type="local">Yi Yao</fr:link> got to know each other and other students a bit better. The day was quite a success, I think.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>19</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0042/</fr:uri>
            <fr:display-uri>loc-0042</fr:display-uri>
            <fr:route>/forest/loc-0042/</fr:route>
            <fr:title text="Church Music Corner › 3rd Sunday of Easter 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 3rd Sunday of Easter 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Iubiláte Deo omnis terra, allelúia: psalmum dícite nómini eius, allelúia: date glóriam laudi eius, allelúia, allelúia, allelúia. 
</html:blockquote>
<html:p>Today at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> our director Alasdair was our ad-hoc organist as we sang Mozart's <fr:link href="https://www.youtube.com/watch?v=pscsAvGjQI0" type="external">Ave Verum Corpus</fr:link>: </html:p>
  <html:blockquote>

  <html:table>
  
  <html:tr>
    
  <html:td>
      Ave verum corpus natum de María Vírgine;
    </html:td>

  <html:td>Hail, true body, born of the Virgin Mary;</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Vere passum, immolátum in cruce pro hómine;
      </html:td>

    
  <html:td>True suffering, sacrificed on the cross for Man;</html:td>

  </html:tr>

  
  <html:tr>
  <html:td>Cuius latus perforátum unda fluxit et sánguine</html:td>
 
  <html:td>From whose pierced side flowed waves of blood,</html:td>
</html:tr>

  
  <html:tr>
    
  <html:td> 
      Esto nobis prægustátum in mortis examine.</html:td>

    
  <html:td>Be for us a foretaste in death's trial.</html:td>

</html:tr>
</html:table>

</html:blockquote>
<html:p>After the mass I had my first rehearsal for the upcoming <fr:link href="https://www.corocanberra.com/" type="external">Coro</fr:link> concert. It was very productive. One piece of repertoire that really stuck with me was the Stravinsky <fr:link href="https://www.youtube.com/watch?v=Luh-UlFvxEk" type="external">Ave Maria</fr:link>, which I'd not heard before.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>4</fr:month>
          <fr:day>12</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W15/</fr:uri>
        <fr:display-uri>2026-W15</fr:display-uri>
        <fr:route>/forest/2026-W15/</fr:route>
        <fr:title text="Weeknotes 2026-W15">Weeknotes 2026-W15</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>Thankfully this is the first week of semester break, so I was actually able to do a little research work.</html:p>
        <html:figure>
          <html:img loading="lazy" width="480px" src="/forest/bafkrmifzxh6vnf32orhcqk7w5dend3dgu6hjahc6iftkokqk67bl3baqfq.jpg" />
          <html:figcaption>All Saints Ainslie in evening silhouette.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>12</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003Z/</fr:uri>
            <fr:display-uri>loc-003Z</fr:display-uri>
            <fr:route>/forest/loc-003Z/</fr:route>
            <fr:title text="Progress on linear-temporal properties research notes">Progress on linear-temporal properties research notes</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I have made significant additions to my research notes on <fr:link href="/forest/ltp-0001/" title="Linear-time temporal properties" uri="https://liamoc.net/forest/ltp-0001/" display-uri="ltp-0001" type="local">Linear-time temporal properties</fr:link>. Now I have all the relevant content from <fr:link href="/forest/alpern-schneider-1985/" title="Defining Liveness" uri="https://liamoc.net/forest/alpern-schneider-1985/" display-uri="alpern-schneider-1985" type="local">Defining Liveness</fr:link>, and some of the definitions that will appear in the forthcoming journal paper from me and <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link>. This paper finally got reviews back, and we have quite a few things to do but I'm confident we'll get there.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>12</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0040/</fr:uri>
            <fr:display-uri>loc-0040</fr:display-uri>
            <fr:route>/forest/loc-0040/</fr:route>
            <fr:title text="Holbert-NG status: pluggable terms and tangled">Holbert-NG status: pluggable terms and tangled</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>My students <fr:link href="/forest/miowu/" title="Mio Wu" uri="https://liamoc.net/forest/miowu/" display-uri="miowu" type="local">Mio Wu</fr:link> and <fr:link href="/forest/joshbrown/" title="Josh Brown" uri="https://liamoc.net/forest/joshbrown/" display-uri="joshbrown" type="local">Josh Brown</fr:link> have been doing some great work on the next generation of the Holbert proof assistant. In particular, <fr:link href="/forest/joshbrown/" title="Josh Brown" uri="https://liamoc.net/forest/joshbrown/" display-uri="joshbrown" type="local">Josh</fr:link> has now implemented a <html:em>pluggable</html:em> term structure, allowing various types of terms, each with their own unification methods and structure definitions, to be combined together in judgements. <fr:link href="/forest/miowu/" title="Mio Wu" uri="https://liamoc.net/forest/miowu/" display-uri="miowu" type="local">Mio</fr:link> is confident she can generalise his approach to work for higher order terms as well, which is very exciting.</html:p>
            <html:p>As part of my general desire to stop using anything that feeds the LLM bots, I am gradually beginning to migrate off of GitHub. Fortunately the Holbert-NG crew are also happy to leave GitHub, so we are going to move to <fr:link href="https://tangled.org/liamoc.net/holbert-ng" type="external">tangled</fr:link> for the time being. </html:p>
            <html:p>I also got the chance to do some programming work myself. Soon we should have a similar proof UI to what the original Holbert has. I think most of the architecture is in place now.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>12</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0041/</fr:uri>
            <fr:display-uri>loc-0041</fr:display-uri>
            <fr:route>/forest/loc-0041/</fr:route>
            <fr:title text="Church Music Corner › Low Sunday 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Low Sunday 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Quasi modo géniti infántes, allelúia: rationábile, sine dolo lac concupíscite, allelúia, allelúia, allelúia
</html:blockquote>
<html:p>Today at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> we had small numbers (I was the only tenor) but sang well for Walford Davies' <fr:link href="https://www.youtube.com/watch?v=jkFUl-jq3sk" type="external">Blessed are the pure in heart</fr:link>: </html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Blessed are the pure in heart,</html:td></html:tr>
    <html:tr><html:td>For they shall see our God.</html:td></html:tr>
    <html:tr><html:td>The secret of the Lord is theirs,</html:td></html:tr>
    <html:tr><html:td>Their soul is Christ's abode.<html:br /></html:td></html:tr>
    <html:tr><html:td>Still to the lowly soul</html:td></html:tr>
    <html:tr><html:td>He doth himself impart,</html:td></html:tr>
    <html:tr><html:td>And for his dwelling and his throne</html:td></html:tr>
    <html:tr><html:td>Chooseth the pure in heart.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>Unfortunately we were plagued once again with sound system gremlins today. I'm honestly sick of it, the speakers and microphones are always barely working or not working. Apparently fixing it properly would cost tens of thousands of dollars the parish doesn't have. I don't know what can be done, but it's very frustrating.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>4</fr:month>
          <fr:day>5</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W14/</fr:uri>
        <fr:display-uri>2026-W14</fr:display-uri>
        <fr:route>/forest/2026-W14/</fr:route>
        <fr:title text="Weeknotes 2026-W14">Weeknotes 2026-W14</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was holy week, so I was mostly occupied by church singing. Now I'm thankfully on teaching break, so I might have a chance to get some research work done.</html:p>
        <html:figure>
          <html:img loading="lazy" width="270px" src="/forest/bafkrmihyzqhjebj3fd4l5wjrkpkd4gudrxf3udzdy4g5v4u3bluvwk22aa.jpeg" />
          <html:img loading="lazy" width="270px" src="/forest/bafkrmibyxlop43cczpndkoiiqgzebzuqeitpmdzi54q2yeuk7a6amjqyz4.jpeg" />
          <html:img loading="lazy" width="270px" src="/forest/bafkrmibr5h7bssloago2swco662h2konoidos2pa3jkglydmdlczojvjyy.jpeg" />
          <html:figcaption>Various sights from walking to and from church so often this week.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>2</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003V/</fr:uri>
            <fr:display-uri>loc-003V</fr:display-uri>
            <fr:route>/forest/loc-003V/</fr:route>
            <fr:title text="More LLM Griping">More LLM Griping</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Part of my job as an educator is to create situations where my students will be stressed, they will struggle, they might get frustrated, they might even hate me (although that's rare). My mentor <fr:link href="/forest/kaie/" title="Kai Engelhardt" uri="https://liamoc.net/forest/kaie/" display-uri="kaie" type="local">Kai Engelhardt</fr:link> said that part of his job was to "torture students". It's a joke of course but there is a kernel of truth there: particularly for learning skills like debugging, there's no better way to learn than by trying to reason your way out of a buggy mess of your own creation. Inflicting this kind of stuff on students is actually kind of essential to education. </html:p>
            <html:p>A lot of students these days are totally unused to feeling stuck. I asked my <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> students who failed my midterm test the other week how they studied. Many of them actually did quite a lot of practice! But the moment they encountered a bug they couldn't immediately fix, they turned to the bots to solve their problem for them. They read and understood what the bot did, and they conflated that with being able to do it themselves.</html:p>
            <html:p>Part of the reason <fr:link href="/forest/loc-002O/" title="&quot;AI is Destroying Learning Itself&quot;" uri="https://liamoc.net/forest/loc-002O/" display-uri="loc-002O" type="local">these bots are hurting education</fr:link> because they undercut my ability to inflict (educational, non-excessive) stress on my students. I used to design effective programming courses that would keep the stress levels low enough to avoid demoralising students but high enough that they had to engage and work and learn. Now if stress levels go over a certain (low) threshold, all the work gets done by AI unless it's in an invigilated exam, which I used to avoid because they're stress spikes. I don't have a good solution. Just very unhappy.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>2</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003W/</fr:uri>
            <fr:display-uri>loc-003W</fr:display-uri>
            <fr:route>/forest/loc-003W/</fr:route>
            <fr:title text="Surprising no one, Claude Code is a pile of vibe-coded garbage slop.">Surprising no one, Claude Code is a pile of vibe-coded garbage slop.</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I found <fr:link href="https://neuromatch.social/@jonny/116324676116121930" type="external">this excellent mastodon thread</fr:link> where someone was brave enough to have a look at the leaked Claude Code source code. Anthropic proudly boasted that much of Claude Code was written by Claude Code — and it definitely shows, and not in a good way. One of the most atrocious code bases I've ever seen. I guess they anticipate going out of business before they have to maintain this crap. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>1</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003S/</fr:uri>
            <fr:display-uri>loc-003S</fr:display-uri>
            <fr:route>/forest/loc-003S/</fr:route>
            <fr:title text="Church Music Corner › Holy Week Feriæ 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Holy Week Feriæ 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Dómine ne longe fácias auxílium tuum a me, ad defensiónem meam áspice: líbera me de ore leónis, et a córnibus unicornuórum humilitátem meam. 
</html:blockquote>
<html:p>For the first three ferias of Holy Week, I sang gregorian chants (mostly various lenten introits) for the introit and recessional of our contemplative evening masses at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>. On the Wednesday, I was joined by Lynda Tooth on piano and we performed Dowland's <fr:link href="https://www.youtube.com/watch?v=r5wznr0HAnU" type="external">In this trembling shadow</fr:link>:</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>In this trembling shadow, cast</html:td></html:tr>
  <html:tr><html:td>From those boughes which thy winds shake</html:td></html:tr>
  <html:tr><html:td>Farre from humane troubles plac’d</html:td></html:tr>
  <html:tr><html:td>Songs to the Lord would I make</html:td></html:tr>
  <html:tr><html:td>Darknesse from my minde then take</html:td></html:tr>
  <html:tr><html:td>For thy rites none may begin</html:td></html:tr>
  <html:tr><html:td>Till they feele thy light within.</html:td></html:tr>
</html:table></html:blockquote>
</fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>1</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003T/</fr:uri>
            <fr:display-uri>loc-003T</fr:display-uri>
            <fr:route>/forest/loc-003T/</fr:route>
            <fr:title text="Church Music Corner › Paschal Triduum 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Paschal Triduum 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Nos autem gloriári opórtet, in cruce Dómini nostri Iesu Christi: in quo est salus, vita et ressuréctio nostra: per quem salváti, et liberáti sumus.
  <html:br />
  Adorámus te, Christe, et benedícimus tibi, quia per crucem sanctam tuam redemísti mundum.
</html:blockquote>
<html:p>The triduum at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> consisted just of two main services: the Mass of the Lord's Supper on the Thursday night, followed by the Liturgy of the Passion the following morning. On Thursday we sang <fr:link href="https://www.youtube.com/watch?v=4XL6bI_egk0" type="external">I Give You a New Commandment</fr:link> by Nardone during the foot washing:</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>I give to you a new commandment;</html:td></html:tr>
  <html:tr><html:td>A new commandment I give to you:</html:td></html:tr>
  <html:tr><html:td>That you love one another,</html:td></html:tr>
  <html:tr><html:td>Love one another as I have loved you.</html:td></html:tr>
  <html:tr><html:td>(Ubi cáritas et vera, Deus ibi est)</html:td></html:tr>
  <html:tr><html:td>(Congregávit nos in unum Christi amor)</html:td></html:tr>
  <html:tr><html:td>(Exultémus et in ipso iucundémur)</html:td></html:tr>
  <html:tr><html:td>(Timeámus et amémus Deum vivum.)</html:td></html:tr>    
  <html:tr><html:td>(Et ex corde diligámus nos sincéro.)</html:td></html:tr>
  <html:tr><html:td>Amen.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>As well as Duruflé's <fr:link href="https://www.youtube.com/watch?v=l1BTWCpEFRQ" type="external">Ubi Caritas</fr:link> during communion, with a very similar but slightly different text:</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
  <html:td>Ubi cáritas et amor, Deus ibi est.</html:td>

  <html:td>Where there is charity and love, there God is.</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Congregávit nos in unum Christi amor;</html:td>

  <html:td>The love of Christ has gathered us as one;</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Exultémus et in ipso iucundémur;</html:td>

  <html:td>Let us then exult and delight in him;</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Timeámus et amémus Deum vivum,</html:td>

  <html:td>Let us fear and love the living God,</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Et ex corde diligámus nos sincéro.</html:td>

  <html:td>And love each other with sincere hearts.</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Ubi cáritas et amor, Deus ibi est.</html:td>

  <html:td>Where there is charity and love, there God is.</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Amen.</html:td>

  <html:td>Amen.</html:td>
</html:tr>

  </html:table>

</html:blockquote>
<html:p>We weren't high church enough to do a proper Eucharistic procession, but there was a stripping of the altar afterwards with the recitation of Psalm 22. <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> showed us how it's done with procession, veneration, stripping of the altar, the cleaning of the altar with water and wine, then Fr. <fr:link href="/forest/obrw/" title="Oliver Brewer-Lennon" uri="https://liamoc.net/forest/obrw/" display-uri="obrw" type="local">Oliver Brewer-Lennon</fr:link> dramatically threw aside the brush used to clean the altar, <html:em>smashed the old Paschal candle on the sanctuary steps</html:em>, locked shut the sanctuary gates, tied them with his stole, and ran away (cf. <fr:link href="https://www.biblegateway.com/verse/en/Matthew 26:56" type="external">Matthew 26:56</fr:link>), plunging the church into darkness.</html:p><html:p>The following Good Friday liturgy consisted primarily of the veneration of the Cross and the distribution of the Eucharist which was consecrated the night before. For veneration, we sang first the Victoria <fr:link href="https://www.youtube.com/watch?v=7BT6oMgC7UU" type="external">Reproaches</fr:link>:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>O my people, what have I done to you?</html:td></html:tr>
    <html:tr><html:td>Or in what way have I offended you?</html:td></html:tr>
    <html:tr><html:td>Answer me.</html:td></html:tr>
    <html:tr><html:td>Ἅγιος ὁ Θεός, Holy God,</html:td></html:tr>
    <html:tr><html:td>Ἅγιος ἰσχυρός, Holy and Strong,</html:td></html:tr>
    <html:tr><html:td>Ἅγιος ἀθάνατος, ἐλέησον ἡμᾶς.</html:td></html:tr>
    <html:tr><html:td>Holy and Immortal One, have mercy upon us.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>Then we sang Leighton's <fr:link href="https://www.youtube.com/watch?v=3adowKA4x8g" type="external">Solus ad Victimam</fr:link>:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Alone to sacrifice thou goest, Lord,</html:td></html:tr>
    <html:tr><html:td>Giving thyself to death, whom thou hast slain.</html:td></html:tr>
    <html:tr><html:td>For us thy wretched folk is any word?</html:td></html:tr>
    <html:tr><html:td>Who knew that for our sins this is thy pain?</html:td></html:tr>
    <html:tr><html:td>For they are ours, O Lord, our deeds,</html:td></html:tr>
    <html:tr><html:td>Why must thou suffer torture for our sins?</html:td></html:tr>
    <html:tr><html:td>Let our hearts suffer in thy Passion, Lord,</html:td></html:tr>
    <html:tr><html:td>That very suffering may thy mercy win.</html:td></html:tr>
    <html:tr><html:td>This is the night of tears, the three days' space.</html:td></html:tr>
    <html:tr><html:td>Sorrow abiding in the eventide,</html:td></html:tr>
    <html:tr><html:td>Until the daybreak with the risen Christ,</html:td></html:tr>
    <html:tr><html:td>And hearts that sorrowed shall be satisfied.</html:td></html:tr>
    <html:tr><html:td>So may our hearts share in thine anguish, Lord,</html:td></html:tr>
    <html:tr><html:td>That they may sharers of thy glory be;</html:td></html:tr>
    <html:tr><html:td>Heavy with weeping may the three days pass,</html:td></html:tr>
    <html:tr><html:td>To win the laughter of thine Easter Day.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>During the distribution of communion we sang <fr:link href="https://www.youtube.com/watch?v=m11B9GuDUmM" type="external">O vos omnes</fr:link> from Victoria's Tenebræ responsories.</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
  <html:td>O vos omnes qui tránsitis per viam,</html:td>

  <html:td>O all you people that travel by this road,</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Atténdite et vidéte!</html:td>

  <html:td>Look and see</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Si est dolor símilis, sicut dolor meus.</html:td>

  <html:td>Whether there is any sorrow like my sorrow.</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Atténdite, univérsi pópuli et vidéte dolórem meum</html:td>

  <html:td>Look, all you people, and see my anguish.</html:td>
</html:tr>

    
  <html:tr>
  <html:td>Si est dolor símilis, sicut dolor meus.</html:td>

  <html:td>Whether there is any sorrow like my sorrow.</html:td>
</html:tr>

  </html:table>

</html:blockquote>
</fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>4</fr:month>
              <fr:day>5</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003U/</fr:uri>
            <fr:display-uri>loc-003U</fr:display-uri>
            <fr:route>/forest/loc-003U/</fr:route>
            <fr:title text="Church Music Corner › Easter 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Easter 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  RESURREXI, et adhuc tecum sum, allelúia: posuísti super me manum tuam, allelúia: mirábilis facta est sciéntia tua, allelúia, allelúia.
</html:blockquote>
<html:p>For Easter this year the church at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was filled with flowers, which was lovely. We had a vigil service at night followed by a service in the morning. Sadly the Vigil service didn't include a litany, but we sang <fr:link href="https://www.youtube.com/watch?v=KLr12AX7mEs" type="external">Holy is the True Light</fr:link> at the vigil: </html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Holy is the True Light, and passing wonderful,</html:td></html:tr>
    <html:tr><html:td>Lending radiance to them that endured</html:td></html:tr>
    <html:tr><html:td>In the heat of the conflict.</html:td></html:tr>
    <html:tr><html:td>From Christ they inherit a home of unfading splendour,</html:td></html:tr>
    <html:tr><html:td>Wherein they rejoice with gladness evermore. Alleluia!</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>We also sang the Easter inaugural Gloria from the <fr:link href="https://www.youtube.com/watch?v=9_YotRZXipY" type="external">Darke Mass in F</fr:link>, both in the vigil and the Sunday Mass.</html:p><html:p>For the Sunday Mass we sang Ouseley's <fr:link href="https://www.youtube.com/watch?v=CnEFkTCOuEE" type="external">From the Rising of the Sun</fr:link>: </html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>From the rising of the sun</html:td></html:tr>
  <html:tr><html:td>To the going down of the same,</html:td></html:tr>
  <html:tr><html:td>My Name shall be great among the Gentiles,</html:td></html:tr>
  <html:tr><html:td>And in ev'ry place incense shall be offer'd up unto my Name:</html:td></html:tr>
  <html:tr><html:td>For My Name shall be great among the heathen,</html:td></html:tr>
  <html:tr><html:td>Thus saith the Lord!</html:td></html:tr>
</html:table>
</html:blockquote>
<html:p>I was also given the honour and privilege to once again proclaim the resurrection during the vigil, video below. This chant is <fr:link href="/forest/loc-0012/" title="Easter Proclamation" uri="https://liamoc.net/forest/loc-0012/" display-uri="loc-0012" type="local">my own version</fr:link> by expurgating some bits from the Roman Missal for length. I got a lot of compliments afterwards; although I can detect a few wobbly notes, I think my delivery is improved compared to <fr:link href="/forest/loc-000O/" title="Church Music Corner › Easter 2025" uri="https://liamoc.net/forest/loc-000O/" display-uri="loc-000O" type="local">last year</fr:link>.</html:p><html:iframe style="aspect-ratio: 16 / 9;" width="100%
   " src="https://www.youtube.com/embed/wXlG2XW6D2U" title="Easter Proclamation 2026" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" /></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>3</fr:month>
          <fr:day>30</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W13/</fr:uri>
        <fr:display-uri>2026-W13</fr:display-uri>
        <fr:route>/forest/2026-W13/</fr:route>
        <fr:title text="Weeknotes 2026-W13">Weeknotes 2026-W13</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>These weeknotes are only one day late this time. I'm getting back on the ball! I don't have much to report this week, although I was very busy: mostly the week was occupied with preparation for the concert and for the ANU Open Day, both of which went successfully on Saturday, as well as the usual <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> stress.</html:p>
        <html:figure>
          <html:img loading="lazy" width="320px" src="/forest/bafkrmic6wofmm5ptheny5pj75tuwxwkconll2jbfvmjcgy3vsnzjenbeai.jpeg" />
          <html:figcaption>My computers on display for the open day.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>28</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003R/</fr:uri>
            <fr:display-uri>loc-003R</fr:display-uri>
            <fr:route>/forest/loc-003R/</fr:route>
            <fr:title text="Church Music Corner › Concert: In the Midst of Life"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Concert: In the Midst of Life</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>This is a special edition of <fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> where I share the programme for our Lenten Concert, <html:em>In the Midst of Life</html:em>, that happened today at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>.</html:p>
            <html:p>The concert opened with some lovely piano playing by Lynda Tooth followed by Gibbons' <fr:link href="https://www.youtube.com/watch?v=TQaLMoPGJzk" type="external">Drop, Drop Slow Tears</fr:link>. Then we sang some music from the English renaissance: Farrant's <fr:link href="https://www.youtube.com/watch?v=MPYgrR84yxY" type="external">Call to Remembrance</fr:link>, Morley's <fr:link href="https://www.youtube.com/watch?v=Et6l-Gop5Es" type="external">Nolo Mortem Peccatoris</fr:link>, the Agnus Dei from Byrd's <fr:link href="https://www.youtube.com/watch?v=oJG7H-Xa5xI" type="external">Mass for Four Voices</fr:link>, and Tallis' <fr:link href="https://www.youtube.com/watch?v=8KXemDXXjzM" type="external">Hear the Voice and Prayer</fr:link>. Then, to give us a break, Lynda played variations on the theme of Amazing Grace on the piano, followed by the more dramatic fare of the concert: Anerio's <fr:link href="https://www.youtube.com/watch?v=fArGQY_wvmA" type="external">Christus factus est</fr:link>, Victoria's <fr:link href="https://www.youtube.com/watch?v=m11B9GuDUmM" type="external">O vos omnes</fr:link>, Purcell's <fr:link href="https://www.youtube.com/watch?v=mY0QyXiJVVo" type="external">Funeral Sentences for Queen Mary</fr:link> (from which the title of the concert is drawn),  Attwood's <fr:link href="https://www.youtube.com/watch?v=sqgOMVfPr_c" type="external">Turn thy Face</fr:link> with Dan Walker singing the solo section, Goss' <fr:link href="https://www.youtube.com/watch?v=0QLS98Y47Vs" type="external">O Saviour of the World</fr:link>, Stainer's <fr:link href="https://www.youtube.com/watch?v=dLvthjDEUnQ" type="external">God So Loved the World</fr:link> and finally Lloyd's <fr:link href="https://www.youtube.com/watch?v=n4XdIWfdmlo" type="external">View me, Lord</fr:link>. For an encore we sang the Nunc Dimittis from Gibbons' <fr:link href="https://www.youtube.com/watch?v=4ejmLREGDWo" type="external">Short Service</fr:link>. </html:p>
            <html:p>The concert was quite well attended and raised some much needed funds for the music of the church. We got a lot of positive feedback, I think the concert went very well. Thanks especially to our guest singers, Dan Walker and Patrick Baker! </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>29</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003Q/</fr:uri>
            <fr:display-uri>loc-003Q</fr:display-uri>
            <fr:route>/forest/loc-003Q/</fr:route>
            <fr:title text="Church Music Corner › Palm Sunday 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Palm Sunday 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Hosánna fílio David, benedíctus qui venit in nómine Dómini. Rex Israël: Hosánna in excélsis.<html:br />
  Púeri Hebræórum, portántes ramos olivárum, obviavérunt Dómino, clamántes et dicéntes: Hosánna in excélsis.<html:br />
  Púeri Hebræórum vestiménta prosternébant in via, et clámabant dicéntes: Hosánna fílio David, benedíctus qui venit in nómine Dómini.
</html:blockquote>
<html:p>This Palm Sunday at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> went rather well considering that we were all exhausted from <fr:link href="/forest/loc-003R/" title="Church Music Corner › Concert: In the Midst of Life" uri="https://liamoc.net/forest/loc-003R/" display-uri="loc-003R" type="local">our concert the night before</fr:link>.  We sang Mathias' <fr:link href="https://www.youtube.com/watch?v=Wa7VMMvsvAg" type="external">Lift up your heads</fr:link>:</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Lift up your heads, O ye gates:</html:td></html:tr>
  <html:tr><html:td>And be ye lift up, ye everlasting doors:</html:td></html:tr>
  <html:tr><html:td>And the King of Glory shall come in.</html:td></html:tr>
  <html:tr><html:td>Who is this King of Glory?</html:td></html:tr>
  <html:tr><html:td>The Lord, strong and mighty, </html:td></html:tr>
  <html:tr><html:td>The Lord, mighty in battle.</html:td></html:tr>
  <html:tr><html:td>Lift up your heads, O ye gates:</html:td></html:tr>
  <html:tr><html:td>Even lift them up, ye everlasting doors:</html:td></html:tr>
  <html:tr><html:td>And the King of Glory shall come in.</html:td></html:tr>
  <html:tr><html:td>Who is this King of Glory?</html:td></html:tr>
  <html:tr><html:td>The Lord of Hosts, he is the King of Glory.</html:td></html:tr>
</html:table></html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>3</fr:month>
          <fr:day>25</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W12/</fr:uri>
        <fr:display-uri>2026-W12</fr:display-uri>
        <fr:route>/forest/2026-W12/</fr:route>
        <fr:title text="Weeknotes 2026-W12">Weeknotes 2026-W12</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>These weeknotes are even more late because I was occupied by my singing engagements and then I caught a cold.</html:p>
        <html:figure>
          <html:img loading="lazy" width="290px" src="/forest/bafkrmiagqkz6kylhivzfbfatk5rnua4japlxmzvi53dg2gxacuzmaa7zvq.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmid43qr22lv7xju4h4umjxqzqaywpz6cjkg7relimjh3ktxrqnc6e4.jpeg" />
          <html:figcaption>Purple skies for a few minutes on a Friday sunset.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>22</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003N/</fr:uri>
            <fr:display-uri>loc-003N</fr:display-uri>
            <fr:route>/forest/loc-003N/</fr:route>
            <fr:title text="Reviving the Apple IIe for the open day">Reviving the Apple IIe for the open day</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>On the 28th of March (the same day as our <fr:link href="/forest/loc-003K/" title="Church Music Corner › Fourth Sunday of Lent 2026" uri="https://liamoc.net/forest/loc-003K/" display-uri="loc-003K" type="local">choir concert</fr:link>), we have the ANU open day. I'll be there in the morning, showcasing some of my 
retro computer collection. I decided to write a 140KB program for my Apple IIe (just enough to fit on one floppy image) that prospective students can use to learn about our degree programmes. </html:p>
            <html:figure>
              <html:img loading="lazy" width="550px" src="/forest/bafkrmiejaxoyqopovdfdh2kzgpwprl3h5ytoxsr7kjmmqb46xgc2x4soe4.jpeg" />
            </html:figure>
            <html:p>This was about 1000 lines of assembly: the entire thing is actually graphics, I don't use the Apple II text mode at all. It's actually quite impressive that the Apple IIe is fast enough to do this kind of bitmap rendering. But it truly is a bizarre system: the addressing for the bitmap data is super weird (all over the place), and each byte of bitmap data is 7 (not 8) pixels of data. Still, it means you can do some impressive graphics considering when the
first Apple II came out. </html:p>
            <html:p>It also has a screensaver to stop the burn in on my amber monochrome monitor (which has the right colours for ANU). </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://liamoc.net/forest/loc-003O/</fr:uri>
            <fr:display-uri>loc-003O</fr:display-uri>
            <fr:route>/forest/loc-003O/</fr:route>
            <fr:title text="Humanity in CS/PL, now more than ever">Humanity in CS/PL, now more than ever</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I really recommend <fr:link href="https://koronkevi.ch/posts/humanity.html" type="external">this article</fr:link> by <fr:link href="/forest/koronkebitch/" title="Paulette D. Koronkevich" uri="https://liamoc.net/forest/koronkebitch/" display-uri="koronkebitch" type="local">Paulette D. Koronkevich</fr:link>. It perfectly expresses some of the same thoughts that I've been having about CS, both research and teaching, in this AI-polluted age.</html:p>
            <html:p>I am only in this business because of the people. My PhD advisor <fr:link href="/forest/gckeller/" title="Gabriele Keller" uri="https://liamoc.net/forest/gckeller/" display-uri="gckeller" type="local">Gabi</fr:link> and her husband <fr:link href="/forest/chak/" title="Manuel Chakravarty" uri="https://liamoc.net/forest/chak/" display-uri="chak" type="local">Manuel</fr:link>, my mentor <fr:link href="/forest/kaie/" title="Kai Engelhardt" uri="https://liamoc.net/forest/kaie/" display-uri="kaie" type="local">Kai</fr:link>, my collaborators <fr:link href="/forest/rvg/" title="Rob van Glabbeek" uri="https://liamoc.net/forest/rvg/" display-uri="rvg" type="local">Rob</fr:link> and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter</fr:link> and <fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine</fr:link> and <fr:link href="/forest/zilinc/" title="Zilin Chen" uri="https://liamoc.net/forest/zilinc/" display-uri="zilinc" type="local">Zilin</fr:link>, my colleagues <fr:link href="/forest/ohad/" title="Ohad Kammar" uri="https://liamoc.net/forest/ohad/" display-uri="ohad" type="local">Ohad</fr:link> and <fr:link href="/forest/jamesmckinna/" title="James McKinna" uri="https://liamoc.net/forest/jamesmckinna/" display-uri="jamesmckinna" type="local">James</fr:link> and <fr:link href="/forest/slindley/" title="Sam Lindley" uri="https://liamoc.net/forest/slindley/" display-uri="slindley" type="local">Sam</fr:link>, and most of all my students over the years, among whom in particular I would name Andrew, Jiyeong, Tammy, Emmett, <fr:link href="/forest/sandwichman/" title="Amy Yin" uri="https://liamoc.net/forest/sandwichman/" display-uri="sandwichman" type="local">Amy</fr:link>, <fr:link href="/forest/keshen/" title="Ke Shen" uri="https://liamoc.net/forest/keshen/" display-uri="keshen" type="local">Ke</fr:link> and <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana</fr:link>.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>22</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003M/</fr:uri>
            <fr:display-uri>loc-003M</fr:display-uri>
            <fr:route>/forest/loc-003M/</fr:route>
            <fr:title text="Church Music Corner › Fifth Sunday of Lent 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Fifth Sunday of Lent 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Iudica me Deus, et discérne causam meam de gente non sancta: ab hómine iníquo et dolóso éripe me: quia tu es Deus meus, et fortitúdo mea. 
</html:blockquote>
<html:p>This final Sunday before Holy Week at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was an Evensong sunday, so I sang for the morning
  service and directed our choir for evensong. In the morning I sang Dowland's <fr:link href="https://www.youtube.com/watch?v=r5wznr0HAnU" type="external">In this trembling shadow</fr:link> accompanied by Callum Tolhurst-Close on the organ.</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>In this trembling shadow, cast</html:td></html:tr>
  <html:tr><html:td>From those boughes which thy winds shake</html:td></html:tr>
  <html:tr><html:td>Farre from humane troubles plac’d</html:td></html:tr>
  <html:tr><html:td>Songs to the Lord would I make</html:td></html:tr>
  <html:tr><html:td>Darknesse from my minde then take</html:td></html:tr>
  <html:tr><html:td>For thy rites none may begin</html:td></html:tr>
  <html:tr><html:td>Till they feele thy light within.</html:td></html:tr>
</html:table></html:blockquote>
<html:p>For Evensong, I sang the <html:em>Venite</html:em> chant followed by the Choir singing Stainer's <fr:link href="https://www.youtube.com/watch?v=hYmHdJJAyeA" type="external">Hail, Gladdening Light</fr:link>,  ferial preces and responses, my own <html:em>tonus peregrinus</html:em> arrangement with organum for the Magnificat and the Nunc Dimittis from Orlando Gibbons' <fr:link href="https://www.youtube.com/watch?v=4ejmLREGDWo" type="external">Short Service</fr:link>. For the anthem we sang Wesley's <fr:link href="https://www.youtube.com/watch?v=nIwxmEKdIQw" type="external">Lead Me, Lord</fr:link>. This
was the first time I've directed a choir for Evensong.</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Lead me, Lord.</html:td></html:tr>
  <html:tr><html:td>Lead me in thy righteousness.</html:td></html:tr>
  <html:tr><html:td>Make thy way plain before my face.</html:td></html:tr>
  <html:tr><html:td>For it is thou, Lord,</html:td></html:tr>
  <html:tr><html:td>Thou, Lord, only,</html:td></html:tr>
  <html:tr><html:td>That makest me dwell in safety.</html:td></html:tr>
</html:table></html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>3</fr:month>
          <fr:day>18</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W11/</fr:uri>
        <fr:display-uri>2026-W11</fr:display-uri>
        <fr:route>/forest/2026-W11/</fr:route>
        <fr:title text="Weeknotes 2026-W11">Weeknotes 2026-W11</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>These weeknotes are a few days late because I was swamped by preparing, running, and marking the first mid-term test for <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link>.</html:p>
        <html:figure>
          <html:img loading="lazy" width="290px" src="/forest/bafkrmifuzilhxub4npd65olxqhmckf7obuvy7gmjjh5j6nenshha32hghy.jpeg" />
          <html:img loading="lazy" width="290px" src="/forest/bafkrmihah6uw3fzoy76z4cu6zckureww2chp2zk5qg2mo7u5ymbq2hqkhy.jpeg" />
          <html:figcaption>Some sights from my walking commute.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>15</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003L/</fr:uri>
            <fr:display-uri>loc-003L</fr:display-uri>
            <fr:route>/forest/loc-003L/</fr:route>
            <fr:title text="Some more anti-AI articles">Some more anti-AI articles</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Perhaps I should consolodate all of my previous posts linking to articles discussing various aspects of why LLMs are so unconscionable to me:</html:p>
            <html:ol><html:li><fr:link href="/forest/loc-001H/" title="Open Letter against LLMs in Education" uri="https://liamoc.net/forest/loc-001H/" display-uri="loc-001H" type="local">Open Letter against LLMs in Education</fr:link></html:li>
  <html:li><fr:link href="/forest/loc-001M/" title="Old Man Yells at Cloud" uri="https://liamoc.net/forest/loc-001M/" display-uri="loc-001M" type="local">Old Man Yells at Cloud</fr:link></html:li>
  <html:li><fr:link href="/forest/loc-002O/" title="&quot;AI is Destroying Learning Itself&quot;" uri="https://liamoc.net/forest/loc-002O/" display-uri="loc-002O" type="local">"AI is Destroying Learning Itself"</fr:link></html:li>
  <html:li><fr:link href="/forest/loc-0035/" title="It's rude to show AI output to people." uri="https://liamoc.net/forest/loc-0035/" display-uri="loc-0035" type="local">It's rude to show AI output to people.</fr:link></html:li></html:ol>
            <html:p>This post is adding to their number. <fr:link href="/forest/wilbowma/" title="William J. Bowman" uri="https://liamoc.net/forest/wilbowma/" display-uri="wilbowma" type="local">William J. Bowman</fr:link> recently wrote up <fr:link href="https://www.williamjbowman.com/blog/2026/03/05/against-vibes-when-is-a-generative-model-useful/" type="external">this excellent article</fr:link> which really delves into whether LLMs could actually be considered useful. A great point he made is that as the models get "better", they actually require <html:em>more</html:em> work to be useful, as finding the problems in their output becomes harder and harder.</html:p>
            <html:p>I was also relieved to see that <fr:link href="https://gizmodo.com/people-hate-ai-even-more-than-they-hate-ice-poll-finds-2000731438" type="external">AI is even less popular than ICE in the US</fr:link> (although I was slightly annoyed by the headline of the article, which claims that people hate AI more than ICE, a claim not supported by the poll, which does not measure intensity of dislike).</html:p>
            <html:p>Also Anthony Moser wrote <fr:link href="https://anthonymoser.github.io/writing/ai/haterdom/2025/08/26/i-am-an-ai-hater.html" type="external">this excellent piece</fr:link> that was very cathartic for me to read. </html:p>
            <html:p>Finally, I was glad to see <fr:link href="https://noai.starlightnet.work/list.html" type="external">this list of software that has pledged not to accept AI contributions and not to integrate generative AI features</fr:link>. While most of the software on this list is not useful to me at present, I hope it takes off and grows. I do have a very brutal approach: if any software I use tries to integrate AI features, I immediately cut it out of my workflow, no matter how essential. And, if a project accepts AI-authored contributions, I'm on high alert for any possible replacement. This is, for example, why I stopped using ghostty.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>15</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003K/</fr:uri>
            <fr:display-uri>loc-003K</fr:display-uri>
            <fr:route>/forest/loc-003K/</fr:route>
            <fr:title text="Church Music Corner › Fourth Sunday of Lent 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Fourth Sunday of Lent 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Lætáre Ierúsalem: et convéntum fácite omnes qui dilígitis eam: gaudéte cum lætítia, qui in tristítia fuístis: ut exultétis, et satiémini ab ubéribus consolatiónis vestræ.
</html:blockquote>
<html:p>This was a fairly routine Sunday at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>, where we sang Gibbons' <fr:link href="https://www.youtube.com/watch?v=lZTFLZiZUSo" type="external">Drop, Drop Slow Tears</fr:link>:</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Drop, drop slow tears</html:td></html:tr>
  <html:tr><html:td>And bathe those beauteous feet,</html:td></html:tr>
  <html:tr><html:td>Which brought from heav'n the news and Prince of Peace.<html:br /></html:td></html:tr>
  <html:tr><html:td>Cease not, wet eyes,</html:td></html:tr>
  <html:tr><html:td>His mercies to entreat,</html:td></html:tr>
  <html:tr><html:td>To cry for vengeance, sin doth never cease.<html:br /></html:td></html:tr>
  <html:tr><html:td>In your deep floods</html:td></html:tr>
  <html:tr><html:td>Drown all my faults and fears,</html:td></html:tr>
  <html:tr><html:td>Nor let His eye see sin, but through my tears.</html:td></html:tr>
</html:table></html:blockquote>
<html:p>Next week is Evensong (I'll cantor for the morning mass) and the following week is our concert, <fr:link href="https://www.trybooking.com/events/landing/1554834" type="external">In The Midst of Life</fr:link>. Please do come along!</html:p><html:figure><html:img loading="lazy" width="480px" src="/forest/bafkrmial6e3vqykh7fhefq665lvulub3k5ptbqpw32ktryhb7h2iyujzjq.png" /></html:figure></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>3</fr:month>
          <fr:day>8</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W10/</fr:uri>
        <fr:display-uri>2026-W10</fr:display-uri>
        <fr:route>/forest/2026-W10/</fr:route>
        <fr:title text="Weeknotes 2026-W10">Weeknotes 2026-W10</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week I started to feel a bit more on top of things, and enjoying living in one of the nicest cities in the world.</html:p>
        <html:figure>
          <html:img loading="lazy" width="480px" src="/forest/bafkrmibpvzl46zz65yjp6zufp56rwdm7wwn2nhrt6wfpxvrkzeefmt3s2y.jpeg" />
          <html:figcaption>The corellas assemble on my way to my <fr:link href="https://corocanberra.com/" type="external">Coro</fr:link> audition. </html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>8</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003I/</fr:uri>
            <fr:display-uri>loc-003I</fr:display-uri>
            <fr:route>/forest/loc-003I/</fr:route>
            <fr:title text="Old-fashioned Mac Software still unbeaten">Old-fashioned Mac Software still unbeaten</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Growing increasingly frustrated with the Apple mail client's seemingly unfixable inability to search for emails <html:em>I just read</html:em>, I made the switch to <fr:link href="https://freron.com/" type="external">MailMate</fr:link>, a good old-fashioned Mac OS X-style app with a lot of useful features, good performance, and, most importantly, <html:em>working search</html:em>. Of course, ANU in their infinite wisdom have not seen fit to bless MailMate as an allowed client on their OAuth server, but this is nothing that a little <fr:link href="https://davmail.sourceforge.net/" type="external">davmail</fr:link> can't fix... </html:p>
            <html:p>In general, the quality of software on the Mac is getting worse, primarily because a large amount of it isn't even <html:em>for the Mac</html:em> (and secondarily because Apple themselves are enshittifying their software and their design guidelines). I'm tired of running 18 instances of Chromium to do basic tasks. This is why I continue to use <fr:link href="https://nova.app/" type="external">Nova</fr:link>, <fr:link href="https://macromates.com/" type="external">TextMate</fr:link>, MailMate, etc. I would use <fr:link href="https://orionbrowser.com/" type="external">Orion</fr:link> too, except for its jankiness and poor performance compared to <fr:link href="https://zen-browser.app/" type="external">Zen</fr:link>. The other major motivation is my aversion to the dreaded bots and those who use them, which is why I moved away from ghostty and to <fr:link href="https://alacritty.org/" type="external">alacritty</fr:link> lately, although I'd welcome suggestions there. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>7</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003H/</fr:uri>
            <fr:display-uri>loc-003H</fr:display-uri>
            <fr:route>/forest/loc-003H/</fr:route>
            <fr:title text="A TextMate bundle for Forester">A TextMate bundle for Forester</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>As part of my embrace of well-designed old Mac software, I've started using <fr:link href="https://macromates.com/textmate/" type="external">TextMate</fr:link> again. I made a bundle for building Forester forests that supports completion using <html:code>forester complete</html:code> (not LSP, as TextMate predates that).</html:p>
            <html:p>The bundle can be downloaded from my <fr:link href="https://tangled.org/liamoc.net/forester.tmbundle" type="external">git repository on tangled</fr:link>.</html:p>
            <html:figure><html:img loading="lazy" width="550px" src="/forest/bafkrmidtc3akkqwus3nfpkkxvopx2p5wmts4b2qo4lir5dt4mnka75ux7y.png" />
  <html:img loading="lazy" width="550px" src="/forest/bafkrmib4jixkw5aaiujajnbf6rqwclhmozxvrwek3hpwk6bi45dojcni7e.png" /></html:figure>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>7</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003G/</fr:uri>
            <fr:display-uri>loc-003G</fr:display-uri>
            <fr:route>/forest/loc-003G/</fr:route>
            <fr:title text="I've joined Coro">I've joined Coro</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Last week I auditioned for <fr:link href="https://www.corocanberra.com/concerts" type="external">Coro</fr:link>, a festival concert choir located here in Canberra. I'm delighted to announce that they have invited me to sing with them starting with <html:em>Motets</html:em>, their first concert for 2026, scheduled in May. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>8</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003J/</fr:uri>
            <fr:display-uri>loc-003J</fr:display-uri>
            <fr:route>/forest/loc-003J/</fr:route>
            <fr:title text="Church Music Corner › Third Sunday of Lent 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Third Sunday of Lent 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Oculi mei semper ad Dóminum, quia ipse evéllet de láqueo pedes meos: réspice in me, et miserére mei, quóniam únicus et pauper sum ego.
</html:blockquote>
<html:p>This Sunday our director was hit with the double-whammy of being both sick and busy, so the choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>  was under my (figurative) baton as we sang Saint-Saëns' <fr:link href="https://www.youtube.com/watch?v=rBZo0qP9B6A" type="external">Ave Verum Corpus</fr:link>, a piece new to me: </html:p>
  <html:blockquote>

  <html:table>
  
  <html:tr>
    
  <html:td>
      Ave verum corpus natum de María Vírgine;
    </html:td>

  <html:td>Hail, true body, born of the Virgin Mary;</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Vere passum, immolátum in cruce pro hómine;
      </html:td>

    
  <html:td>True suffering, sacrificed on the cross for Man;</html:td>

  </html:tr>

  
  <html:tr>
  <html:td>Cuius latus perforátum unda fluxit sánguine</html:td>
 
  <html:td>From whose pierced side flowed waves of blood,</html:td>
</html:tr>

  
  <html:tr>
    
  <html:td> 
      Esto nobis prægustátum in mortis examine.</html:td>

    
  <html:td>Be for us a foretaste in death's trial.</html:td>

</html:tr>
</html:table>

</html:blockquote>
<html:p>Our organ scholar Lillian also very successfully played for the entire service for the first time. Congratulations to her!</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>3</fr:month>
          <fr:day>1</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W09/</fr:uri>
        <fr:display-uri>2026-W09</fr:display-uri>
        <fr:route>/forest/2026-W09/</fr:route>
        <fr:title text="Weeknotes 2026-W09">Weeknotes 2026-W09</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was also very busy, with my teaching obligations starting in earnest. </html:p>
        <html:figure><html:img loading="lazy" width="350px" src="/forest/bafkrmidguseshyd5bb2py3xtannb2hhzirgiwcdfebbh62njhwgbtac5wy.jpeg" />
 <html:figcaption>The sunset after rain in Canberra. </html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>1</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003F/</fr:uri>
            <fr:display-uri>loc-003F</fr:display-uri>
            <fr:route>/forest/loc-003F/</fr:route>
            <fr:title text="Welcome, Kai Phan and Edwin Park!">Welcome, <fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link> and <fr:link href="/forest/edwinpark/" title="Edwin Park" uri="https://liamoc.net/forest/edwinpark/" display-uri="edwinpark" type="local">Edwin Park</fr:link>!</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I have taken on another PhD student, <fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link>, who (at least to start) will conduct some investigations into incorrectness logic, along with me, <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link>, and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link>.  Welcome, Kai!</html:p>
            <html:p><fr:link href="/forest/edwinpark/" title="Edwin Park" uri="https://liamoc.net/forest/edwinpark/" display-uri="edwinpark" type="local">Edwin Park</fr:link>, a new honours student, has also arrived from <fr:link href="/forest/unimelb/" title="University of Melbourne" uri="https://liamoc.net/forest/unimelb/" display-uri="unimelb" type="local">University of Melbourne</fr:link> to do an honours project with me here at the ANU. We are looking at program calculational techniques such as <fr:link href="/forest/ccm/" title="Carroll Morgan" uri="https://liamoc.net/forest/ccm/" display-uri="ccm" type="local">Carroll Morgan</fr:link>'s refinement calculus, and exploring proof-assistant-integrated program calculation techniques.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>1</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003E/</fr:uri>
            <fr:display-uri>loc-003E</fr:display-uri>
            <fr:route>/forest/loc-003E/</fr:route>
            <fr:title text="Teaching Structured Programming begins">Teaching <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> begins</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I began teaching my lectures for <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> over the last week. To my surprise, despite being the same cohort for which I saw <fr:link href="/forest/loc-001I/" title="Engagement Crisis in Teaching" uri="https://liamoc.net/forest/loc-001I/" display-uri="loc-001I" type="local">soul-destroyingly low attendance last semester</fr:link>, attendance this time was surprisingly decent. Perhaps it's the higher perceived difficulty of the course, the nicer weather, or the slightly more convenient location. Whatever the cause, I'm glad to actually have sufficient students to engage in a conversational lecture. </html:p>
            <html:p>I have a bit of a sowing-and-then-reaping issue though. I designed the course outline to include weekly lab exercises, three homework tasks, and two mid-term exams. This is all well and good, except now I have to <html:em>make</html:em> all of this material. I'm very overwhelmed but well supported by some good tutors including <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link>, <fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link>, <fr:link href="/forest/carloz/" title="Carlo Zancanaro" uri="https://liamoc.net/forest/carloz/" display-uri="carloz" type="local">Carlo Zancanaro</fr:link> and others.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>3</fr:month>
              <fr:day>1</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003D/</fr:uri>
            <fr:display-uri>loc-003D</fr:display-uri>
            <fr:route>/forest/loc-003D/</fr:route>
            <fr:title text="Church Music Corner › Second Sunday of Lent 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Second Sunday of Lent 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Tibi dixit cor meum, qeæsívi vultum tuum, vultum tuum Dómine requíram: ne avértas fáciem tuam a me.<html:br />
  
Reminíscere miseratiónum tuárum, Dómine, et misericórdiæ tuæ, quæ a saéculo sunt: ne unquam dominéntur nobis inimíci nostri: líbera nos Deus Israel ex ómnibus angústiis nostris.
</html:blockquote>
<html:p>This Sunday our director was away at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> so I directed us for the Agnus Dei from Byrd's <fr:link href="https://www.youtube.com/watch?v=oJG7H-Xa5xI" type="external">Mass for Four Voices</fr:link>, one of my favourite pieces: </html:p>
  <html:blockquote>

  <html:table>
  
  <html:tr>
    
  <html:td>
      Agnus Dei, qui tollis peccáta mundi, miserére nobis.
    </html:td>

  <html:td>Lamb of God, that taketh away the sins of the world, have mercy upon us.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>
      Agnus Dei, qui tollis peccáta mundi, miserére nobis.</html:td>

    
  <html:td>Lamb of God, that taketh away the sins of the world, have mercy upon us.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td> 
      Agnus Dei, qui tollis peccáta mundi, dona nobis pacem.</html:td>

    
  <html:td>Lamb of God, that taketh away the sins of the world, grant us peace.</html:td>

</html:tr>
</html:table>

</html:blockquote>
<html:p>I also auditioned for the <fr:link href="https://www.corocanberra.com/" type="external">Coro</fr:link> choir. I think I stuffed up the sight reading, but I'll hope for the best.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>2</fr:month>
          <fr:day>22</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W08/</fr:uri>
        <fr:display-uri>2026-W08</fr:display-uri>
        <fr:route>/forest/2026-W08/</fr:route>
        <fr:title text="Weeknotes 2026-W08">Weeknotes 2026-W08</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was insanely busy, as I was (and am) preparing to teach <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> this semester. </html:p>
        <html:figure><html:img loading="lazy" width="280px" src="/forest/bafkrmiaecantoitpcx7b476hd5t37y4yfrqzhwehnuzooeh4c7hmi66odu.jpeg" />
  <html:img loading="lazy" width="280px" src="/forest/bafkrmifqgmiho4uhka6ta5folmxw6tuuqknceo2a3lkcgwmlygyx7ctwgm.jpeg" />
  <html:img loading="lazy" width="360px" src="/forest/bafkrmiatt6nfxmifoz4uwc4mmz7z3jjmsaud4r24natoya5ffhvndq4g6q.jpeg" /><html:figcaption>The stunning Lyneham Wetlands on my commute to work. </html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>21</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003C/</fr:uri>
            <fr:display-uri>loc-003C</fr:display-uri>
            <fr:route>/forest/loc-003C/</fr:route>
            <fr:title text="Lunar New Year at Dickson">Lunar New Year at Dickson</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I had to head to the office today even though it's a Saturday to prepare for my upcoming <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> course, but I was surprised to see Lunar New Years festivities had been transferred to the weekend.</html:p>
            <html:figure><html:img loading="lazy" width="360px" src="/forest/bafkrmic4g2qatvewtnsnqwn7iuqplantpntscy2odhs3nhoky25eut7gy4.png" />
 <html:figcaption>Happy Year of the Horse! </html:figcaption></html:figure>
            <html:p>I saw the Dragon and Lion dances as well as some other performances from Chinese and Vietnamese residents of Dickson, and the Canberra Yut Hung Kung Fu school: </html:p>
            <html:figure><html:img loading="lazy" width="280px" src="/forest/bafkrmihat6cvy3xxv3spqxykjcmzchb3ytzzrejb6fr66zdcbbhidecyhi.jpeg" />
  <html:img loading="lazy" width="280px" src="/forest/bafkrmibjk6juf55hboyresc645acuivclnrp5zoomevxuahg5gf2agrweu.jpeg" />
  <html:img loading="lazy" width="280px" src="/forest/bafkrmia357jdhmg2wjkl3rp6pwc4s7dxwnh2olahkwxnlczesyxgdufg7a.jpeg" /></html:figure>
            <html:p>In the nearby market stall there was a Korean 호떡 vendor. From our conversation I gathered that there were Korean 설날 events there as well, but in the morning and I was already too late. Oh well, the 호떡 was delicious though! </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>18</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003B/</fr:uri>
            <fr:display-uri>loc-003B</fr:display-uri>
            <fr:route>/forest/loc-003B/</fr:route>
            <fr:title text="Church Music Corner › Ash Wednesday 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Ash Wednesday 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Miseréris ómnium Dómine, et nihil odísti eórum quæ fecísti, dissímulans peccáta hóminum propter pæniténtiam, et parcens illis, quia tu es Dóminus Deus noster.
</html:blockquote>
<html:p>This Ash Wednesday was my second at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>, and I intoned the <html:em>Trisagion</html:em> again this year. We had a decent compliment of choristers to perform Duruflé's <fr:link href="https://www.youtube.com/watch?v=l1BTWCpEFRQ" type="external">Ubi Caritas</fr:link>:</html:p>
  <html:blockquote>

  <html:table>
  
  <html:tr>
    
  <html:td>
     Ubi cáritas et amor, Deus ibi est.
    </html:td>

  <html:td>Where there is charity and love, there God is.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>
      Congregávit nos in unum Christi amor,</html:td>

    
  <html:td>The love of Christ gathers us as one,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Exultémus et in ipso iucundémur</html:td>

    
  <html:td>Let us rejoice and be glad in him,</html:td>

</html:tr>

  <html:tr>
  <html:td>
  Timeámus et amémus Deum vivum</html:td>


  <html:td>Let us fear and love the living God</html:td>

</html:tr>


  <html:tr>
  <html:td>Et ex corde diligámus nos sincéro.</html:td>


  <html:td>And love each other with sincere hearts.</html:td>
</html:tr>

</html:table>

</html:blockquote>
<html:p>As well as Gibbons' <fr:link href="https://www.youtube.com/watch?v=TQaLMoPGJzk" type="external">Drop, Drop Slow Tears</fr:link> which is just a lovely poem:</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Drop, drop slow tears</html:td></html:tr>
  <html:tr><html:td>And bathe those beauteous feet,</html:td></html:tr>
  <html:tr><html:td>Which brought from heav'n the news and Prince of Peace.<html:br /></html:td></html:tr>
  <html:tr><html:td>Cease not, wet eyes,</html:td></html:tr>
  <html:tr><html:td>His mercies to entreat,</html:td></html:tr>
  <html:tr><html:td>To cry for vengeance, sin doth never cease.<html:br /></html:td></html:tr>
  <html:tr><html:td>In your deep floods</html:td></html:tr>
  <html:tr><html:td>Drown all my faults and fears,</html:td></html:tr>
  <html:tr><html:td>Nor let His eye see sin, but through my tears.</html:td></html:tr>
</html:table></html:blockquote>
<html:p>For this Lent I am making some private observances and sacrifices, but I will also be singing the evening office (either Roman or Scottish Episcopal) every day of this Lent. This Sunday will be a choral Evensong!</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>22</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-003A/</fr:uri>
            <fr:display-uri>loc-003A</fr:display-uri>
            <fr:route>/forest/loc-003A/</fr:route>
            <fr:title text="Church Music Corner › First Sunday of Lent 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › First Sunday of Lent 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Invocábit me, et ego dixi exáudiam eum: erípiam eum, et glorificábo eum: longitúdine diérum adimplébo eum.
</html:blockquote>
<html:p>This Sunday was a busy one for me, as the choir of <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> sings Evensong now on the final Sunday of the month. I, along with a few of our other male singers, sang for the morning mass without the rest of the choir. I sang a special <html:em>tonus peregrinus</html:em> gospel acclamation, and for an anthem I sang Tallis' <fr:link href="https://www.youtube.com/watch?v=F4LHpA5PWKg" type="external">Why Fumeth in Sight</fr:link>, the famous Theme of Ralph Vaughan Williams' <html:em>Fantasia</html:em> fame. I've linked to a recording of me singing the first verse.  </html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Why fumeth in sight: the Gentils spite,</html:td></html:tr>
  <html:tr><html:td>In fury raging stout?</html:td></html:tr>
  <html:tr><html:td>Why taketh in hond: the people fond,</html:td></html:tr>
  <html:tr><html:td>Vayne thinges to bring about?</html:td></html:tr>
  <html:tr><html:td>The kinges arise: the lordes devise,</html:td></html:tr>
  <html:tr><html:td>in counsayles mett therto:</html:td></html:tr>
  <html:tr><html:td>Agaynst the Lord: with false accord,</html:td></html:tr>
  <html:tr><html:td>against his Christ they go.<html:br /></html:td></html:tr>
  <html:tr><html:td>Let us they say: breake downe their ray,</html:td></html:tr>
  <html:tr><html:td>of all their bondes and cordes:</html:td></html:tr>
  <html:tr><html:td>We will renounce: that they pronounce,</html:td></html:tr>
  <html:tr><html:td>their loores as stately lordes.</html:td></html:tr>
  <html:tr><html:td>But God of might: in heaven so bright,</html:td></html:tr>
  <html:tr><html:td>Shall laugh them all to scorne:</html:td></html:tr>
  <html:tr><html:td>The Lord on hie: shall them defie,</html:td></html:tr>
  <html:tr><html:td>they shall be once forlorne.<html:br /></html:td></html:tr>
  <html:tr><html:td>Then shall his ire: speake all in fire,</html:td></html:tr>
  <html:tr><html:td>to them agayne therfore:</html:td></html:tr>
  <html:tr><html:td>He shall with threate: their malice beate,</html:td></html:tr>
  <html:tr><html:td>in his displeasure sore.</html:td></html:tr>
  <html:tr><html:td>Yet am I set: a king so great,</html:td></html:tr>
  <html:tr><html:td>on Sion hill full fast:</html:td></html:tr>
  <html:tr><html:td>Though me they kill: yet will that hill,</html:td></html:tr>
  <html:tr><html:td>my lawe and worde outlast.</html:td></html:tr>
</html:table></html:blockquote>
<html:p>For Evensong we sang Psalm 51 to a nice Anglican chant, and the <fr:link href="https://www.youtube.com/watch?v=6YRRgC0bjk0" type="external">Nunc Dimittis</fr:link> from Gibbons' Short Service. We didn't get the Magnificat ready in time, so Alasdair and I just sang an antiphonal plainchant Magnificat to the <html:em>tonus peregrinus.</html:em> For the anthem, we sang an old favourite of mine, Morley's <fr:link href="https://www.youtube.com/watch?v=Et6l-Gop5Es" type="external">Nolo Mortem Peccatoris</fr:link>:</html:p><html:table style="text-align: left">
  <html:tr><html:td><html:em>Nolo mortem peccatoris,</html:em></html:td></html:tr>
  <html:tr><html:td><html:em>Haec sunt verba salvatoris.</html:em><html:br /></html:td></html:tr>
  <html:tr><html:td>Father, I am thine only Son</html:td></html:tr>
  <html:tr><html:td>Sent down from heav'n mankind to save,</html:td></html:tr>
  <html:tr><html:td>Father, all things fulfill'd and done</html:td></html:tr>
  <html:tr><html:td>According to thy will, I have.</html:td></html:tr>
  <html:tr><html:td>Father, my will, now all is this:</html:td></html:tr>
  <html:tr><html:td><html:em>Nolo mortem peccatoris.</html:em><html:br /></html:td></html:tr>
  <html:tr><html:td>Father behold my painful smart.</html:td></html:tr>
  <html:tr><html:td>Taken for man on ev'ry side;</html:td></html:tr>
  <html:tr><html:td>E'en from my birth to death most tart,</html:td></html:tr>
  <html:tr><html:td>No kind of pain I have denied</html:td></html:tr>
  <html:tr><html:td>But suffered all, and all for this:</html:td></html:tr>
  <html:tr><html:td><html:em>Nolo mortem peccatoris.</html:em><html:br /></html:td></html:tr>  
  <html:tr><html:td><html:em>Nolo mortem peccatoris.</html:em></html:td></html:tr>
</html:table></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>2</fr:month>
          <fr:day>15</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W07/</fr:uri>
        <fr:display-uri>2026-W07</fr:display-uri>
        <fr:route>/forest/2026-W07/</fr:route>
        <fr:title text="Weeknotes 2026-W07">Weeknotes 2026-W07</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I returned to Canberra this week. I needed the remainder of the week to recover from my illness and the flight, but I'm feeling alright now. As much as I enjoyed being in Edinburgh again, it's great to be back in clean, sunny, quiet Canberra. </html:p>
        <html:figure>
          <html:img loading="lazy" width="360px" src="/forest/bafkrmih446gqn5cwzq2ktcag4pvpdf4z2w7kxnxajygtwnggq2bxtg7qjm.jpeg" />
          <html:figcaption>A Leafy Canberra Street. </html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>15</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0039/</fr:uri>
            <fr:display-uri>loc-0039</fr:display-uri>
            <fr:route>/forest/loc-0039/</fr:route>
            <fr:title text="Begun Notes on Linear-time Temporal Properties">Begun Notes on Linear-time Temporal Properties</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>In my work with <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link> and <fr:link href="/forest/rvg/" title="Rob van Glabbeek" uri="https://liamoc.net/forest/rvg/" display-uri="rvg" type="local">Rob van Glabbeek</fr:link>, I've been thinking a bit about the space of linear-time temporal properties <fr:tex display="inline"><![CDATA[\Sigma ^\omega ]]></fr:tex>. There are a lot of results about this, some of which we're still working on proving. While the canonical account will be in our forthcoming journal paper and <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana</fr:link>'s PhD thesis, I'm going to start writing <fr:link href="/forest/ltp-0001/" title="Linear-time temporal properties" uri="https://liamoc.net/forest/ltp-0001/" display-uri="ltp-0001" type="local">a research notebook</fr:link> on this topic. I've decided to do this rather than blog about our results, because it's more in the spirit of Zettelkästen (Zettelkastengeist?) — the post I had in mind ended up ballooning in size because it needed so much context. Instead, I will just fill in the notebook including our current conjectures.</html:p>
            <html:p>Currently, there isn't much there, just some basic definitions from <fr:link href="/forest/alpern-schneider-1985/" title="Defining Liveness" uri="https://liamoc.net/forest/alpern-schneider-1985/" display-uri="alpern-schneider-1985" type="local">Defining Liveness</fr:link>. But I will eventually hopefully have a fairly well-developed summary of a lot of the work in this area over there.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>15</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0038/</fr:uri>
            <fr:display-uri>loc-0038</fr:display-uri>
            <fr:route>/forest/loc-0038/</fr:route>
            <fr:title text="Church Music Corner › Quinquagesima Sunday 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Quinquagesima Sunday 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Tibi dixit cor meum, quæsívi vultum tuum, vultum tuum Dómine requíram: ne avértas fáciam tuam a me.<html:br />
  Esto mihi in Deum protectórem, et in locum refúgii, ut salvum me fácias: quóniam firmaméntum meum, et refúgium meum es tu: et propter nomen tuum dux mihi eris, et enútries me.
</html:blockquote>
<html:p>This Sunday was bizarrely called the Sunday of the "Transfiguration", despite that not being the actual feast of the Transfiguration. It's because my church <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> is hewing to the Revised Common Lectionary. I entitled this post Quinquagesima Sunday because that's what is listed in the Scottish Book of Common Prayer (and <fr:link href="/forest/loc-0033/" title="I am a Scottish Episcopalian" uri="https://liamoc.net/forest/loc-0033/" display-uri="loc-0033" type="local">I am a Scottish Episcopalian</fr:link>). I joined the Ainslie choir for the first time in 2026. We performed Ouseley's <fr:link href="https://www.youtube.com/watch?v=CnEFkTCOuEE" type="external">From the Rising of the Sun</fr:link>: </html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>From the rising of the sun</html:td></html:tr>
  <html:tr><html:td>To the going down of the same,</html:td></html:tr>
  <html:tr><html:td>My Name shall be great among the Gentiles,</html:td></html:tr>
  <html:tr><html:td>And in ev'ry place incense shall be offer'd up unto my Name:</html:td></html:tr>
  <html:tr><html:td>For My Name shall be great among the heathen,</html:td></html:tr>
  <html:tr><html:td>Thus saith the Lord!</html:td></html:tr>
</html:table>
</html:blockquote>
<html:p>I also received some CD recordings from John Kitchen at <fr:link href="https://www.osp.org.uk/" type="external">Old St. Paul's</fr:link> while I was in Edinburgh, that I took the time to listen to recently. Calum Robertson, who plays the organ at Old St. Paul's, wrote <fr:link href="https://www.youtube.com/watch?v=Eamf9BAikeo" type="external">a beautiful anthem</fr:link> from this moving poem by Irene Zimmerman:</html:p><fr:tree show-metadata="false"><fr:frontmatter><fr:authors><fr:author>Irene Zimmerman</fr:author></fr:authors><fr:uri>https://liamoc.net/forest/loc-0037/</fr:uri><fr:display-uri>loc-0037</fr:display-uri><fr:route>/forest/loc-0037/</fr:route><fr:title text="Liturgy">Liturgy</fr:title><fr:taxon>Poem</fr:taxon></fr:frontmatter><fr:mainmatter><html:table style="text-align: left">
  <html:tr><html:td>All the way to Elizabeth</html:td></html:tr>
<html:tr><html:td>and in the months afterward</html:td></html:tr>
<html:tr><html:td>she wove him, pondering,</html:td></html:tr>
<html:tr><html:td>“This is my body, my blood!”<html:br /></html:td></html:tr>
<html:tr><html:td>Beneath the watching eyes</html:td></html:tr>
<html:tr><html:td>of donkey, ox, and sheep</html:td></html:tr>
<html:tr><html:td>she rocked him, crooning,</html:td></html:tr>
<html:tr><html:td>“This is my body, my blood!”<html:br /></html:td></html:tr>
<html:tr><html:td>In the moonless desert flight</html:td></html:tr>
<html:tr><html:td>and the Egypt-days of his growing,</html:td></html:tr>
<html:tr><html:td>she nourished him, singing,</html:td></html:tr>
<html:tr><html:td>“This is my body, my blood!”<html:br /></html:td></html:tr>
<html:tr><html:td>Under the blood-smeared cross</html:td></html:tr>
<html:tr><html:td>she rocked his mangled bones,</html:td></html:tr>
<html:tr><html:td>remembering him, moaning,</html:td></html:tr>
<html:tr><html:td>“This is my body, my blood!”<html:br /></html:td></html:tr>
<html:tr><html:td>When darkness, stones, and tomb</html:td></html:tr>
<html:tr><html:td>bloomed to Easter morning,</html:td></html:tr>
<html:tr><html:td>she ran to him, shouting,</html:td></html:tr>
<html:tr><html:td>“This is my body, my blood!”<html:br /></html:td></html:tr>
<html:tr><html:td>And no one thought to tell her:</html:td></html:tr>
<html:tr><html:td>“Woman, it is not fitting</html:td></html:tr>
<html:tr><html:td>for you to say those words.</html:td></html:tr>
<html:tr><html:td>You don’t resemble him.”</html:td></html:tr>
</html:table></fr:mainmatter></fr:tree><html:p>The poem, at least to my reading, seems to clearly advocate for women's ordination, despite the author's communion opposing the same.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>2</fr:month>
          <fr:day>8</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W06/</fr:uri>
        <fr:display-uri>2026-W06</fr:display-uri>
        <fr:route>/forest/2026-W06/</fr:route>
        <fr:title text="Weeknotes 2026-W06">Weeknotes 2026-W06</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was unfortunately marred by a nasty cold that took me out of most of it. Nonetheless I got some church singing done, and I had a productive meeting that generated some new ideas, which I might blog about next week.</html:p>
        <html:figure>
          <html:img loading="lazy" width="360px" src="/forest/bafkrmie6o52vgpi5qup6a6uryujj24op5mhod4idqb235yqxyc64b6shsa.jpeg" />
          <html:figcaption>My spiritual home: St. Michael and All Saints, Edinburgh </html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>5</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0035/</fr:uri>
            <fr:display-uri>loc-0035</fr:display-uri>
            <fr:route>/forest/loc-0035/</fr:route>
            <fr:title text="It's rude to show AI output to people.">It's rude to show AI output to people.</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I came across <fr:link href="https://distantprovince.by/posts/its-rude-to-show-ai-output-to-people/" type="external">this article</fr:link> by Alex Martsinovich which I thought captured very well one of the main objections I have to LLMs as a technology. It used to be that every piece of text, even down to a road sign, was written by a human somewhere with the intention of communicating something to you, the reader — what Alex calls "proof of thought". Thanks to LLMs, this fundamental property of language has been irrevocably destroyed: a massive tragedy in my view.  </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>2</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0034/</fr:uri>
            <fr:display-uri>loc-0034</fr:display-uri>
            <fr:route>/forest/loc-0034/</fr:route>
            <fr:title text="Church Music Corner › Presentation of the Lord 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Presentation of the Lord 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Suscépimus Deus, misericórdiam tuam in médio templi tui : secúndum nomen tuum Deus, ita et laus tua in fines terræ: iustítia plena est déxtera tua.
</html:blockquote>
<html:p>For this special feast at <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> (which, per Fr. <fr:link href="/forest/obrw/" title="Oliver Brewer-Lennon" uri="https://liamoc.net/forest/obrw/" display-uri="obrw" type="local">Oliver</fr:link>'s policy, was <html:em>not</html:em> transferred to the Sunday), I offered to sing the traditional Gregorian chant propers for the mass, which I had typeset conveniently <fr:link href="/forest/loc-0031/" title="Candlemas Chants" uri="https://liamoc.net/forest/loc-0031/" display-uri="loc-0031" type="local">in Forester</fr:link> for easy reading. Despite the fact that I had a cold, I got a lot of compliments about my chanting and I feel it made the service really special. I also enjoyed a non-alcoholic pint with Fr. Oliver afterwards. </html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>8</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0036/</fr:uri>
            <fr:display-uri>loc-0036</fr:display-uri>
            <fr:route>/forest/loc-0036/</fr:route>
            <fr:title text="Church Music Corner › Fifth Sunday after Epiphany 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Fifth Sunday after Epiphany 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Veníte adorémus Deum, et procidámus ante Dóminum: plorémus ante eum, qui fecit nos: quia ipse est Dóminus Deus noster.
</html:blockquote>
<html:p>This Sunday I once again sang at both <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> and <fr:link href="https://www.osp.org.uk/" type="external">Old St. Paul's</fr:link>, despite a cold preventing me from intoning the propers or singing at full voice. In the morning we sang Wood's <fr:link href="https://www.youtube.com/watch?v=Qf202pdjMZk" type="external">Hey You, the Middle Ball</fr:link>: </html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>O thou the central orb of righteous love,</html:td></html:tr>
    <html:tr><html:td>Pure beam of the Most High,</html:td></html:tr>
    <html:tr><html:td>Eternal Light of this our wintry world,</html:td></html:tr>
    <html:tr><html:td>Thy radiance bright awakes new joy in faith,</html:td></html:tr>
    <html:tr><html:td>Hope soars above.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Come, quickly come and let thy glory shine,</html:td></html:tr>
    <html:tr><html:td>Gilding our darksome heav'n with rays divine.</html:td></html:tr>
    <html:tr><html:td>Thy saints with holy lustre round thee move,</html:td></html:tr>
    <html:tr><html:td>As stars about thy throne, set in the height</html:td></html:tr>
    <html:tr><html:td>Of God's ordaining counsel, </html:td></html:tr>
    <html:tr><html:td>As thy sight gives measured grace to each.</html:td></html:tr>
    <html:tr><html:td>Thy power to prove.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Let thy bright beams disperse the gloom of sin,</html:td></html:tr>
    <html:tr><html:td>Our nature all shall feel eternal day,</html:td></html:tr>
    <html:tr><html:td>In fellowship with thee,</html:td></html:tr>
    <html:tr><html:td>Transforming day to souls erewhile unclean,</html:td></html:tr>
    <html:tr><html:td>now pure within.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Amen.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>We also sang Victoria's <fr:link href="https://www.youtube.com/watch?v=0P5gMpJtVZY" type="external">Missa O Quam Gloriosum</fr:link> for a mass setting. In the evening, in a rare exception to the normal Evensong service, Old St. Pauls instead had an event to introduce the choir and congregation to the new Revised English Hymnal.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>2</fr:month>
          <fr:day>1</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W05/</fr:uri>
        <fr:display-uri>2026-W05</fr:display-uri>
        <fr:route>/forest/2026-W05/</fr:route>
        <fr:title text="Weeknotes 2026-W05">Weeknotes 2026-W05</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was primarily spent working in Edinburgh.</html:p>
        <html:figure>
          <html:img loading="lazy" width="260px" src="/forest/bafkrmies2h4anvqp4nvjxvvpum7iwlx747y3ovu6g4uair4nxsuksyo3g4.jpeg" />
          <html:img loading="lazy" width="260px" src="/forest/bafkrmidcev2wwjmghnw2uivxf7snp77ud3eww6gcbesgldm66rutrxvzde.jpeg" />
          <html:figcaption>A rare glimpse of the sun in wintry Edinburgh.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://liamoc.net/forest/loc-0033/</fr:uri>
            <fr:display-uri>loc-0033</fr:display-uri>
            <fr:route>/forest/loc-0033/</fr:route>
            <fr:title text="I am a Scottish Episcopalian">I am a Scottish Episcopalian</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I have <fr:link href="/forest/loc-0022/" title="Quid est veritas?" uri="https://liamoc.net/forest/loc-0022/" display-uri="loc-0022" type="local">previously</fr:link> <fr:link href="/forest/loc-002W/" title="Why I am not a Roman Catholic" uri="https://liamoc.net/forest/loc-002W/" display-uri="loc-002W" type="local">written</fr:link> <fr:link href="/forest/loc-002X/" title="Why I am not an Anglican" uri="https://liamoc.net/forest/loc-002X/" display-uri="loc-002X" type="local">extensively</fr:link> about my struggles with faith and the particular mode of agnostic faith that I hold. Recently, Fr. <fr:link href="/forest/obrw/" title="Oliver Brewer-Lennon" uri="https://liamoc.net/forest/obrw/" display-uri="obrw" type="local">Oliver Brewer-Lennon</fr:link> was kind enough to host me at his home for hours where we had a wide-ranging conversation, including about my faith. For the first time in my life I found a priest who I feel I can rely upon for spiritual direction and who also is just a good friend. He offered a compelling solution to my <fr:link href="/forest/loc-002X/" title="Why I am not an Anglican" uri="https://liamoc.net/forest/loc-002X/" display-uri="loc-002X" type="local">census dilemma</fr:link> — I can just write "Scottish Episcopalian" on the form. Surely if people can write Jedi as their religion, Scottish Episcopalianism would be acceptable. Next time I visit Edinburgh I will probably take part in a ceremony where I can be officially received into the church. Even though I am thousands of kilometres away usually, I can still call <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> my parish 
and <fr:link href="/forest/obrw/" title="Oliver Brewer-Lennon" uri="https://liamoc.net/forest/obrw/" display-uri="obrw" type="local">Oliver Brewer-Lennon</fr:link> my priest.</html:p>
            <html:p>He was also nice enough to give me free access to the church whenever I want to use it, so I have been chanting the evening office there according to the Use of Sarum. To avoid keeping 17 places open in 3 books simultaneously, I transcribed large parts of the Sarum vespers and compline office into Forester. You can see the results <fr:link href="/forest/sarum-26-01-22/" title="Sarum Vespers (Thu 22nd Jan)" uri="https://liamoc.net/forest/sarum-26-01-22/" display-uri="sarum-26-01-22" type="local">here</fr:link> for example, but there are more that can be found by searching "Ordo". They use my chant plugins. Fr. <fr:link href="/forest/obrw/" title="Oliver Brewer-Lennon" uri="https://liamoc.net/forest/obrw/" display-uri="obrw" type="local">Oliver</fr:link> will join me for the <fr:link href="/forest/sarum-26-02-03/" title="Sarum Vespers (St. Blaise)" uri="https://liamoc.net/forest/sarum-26-02-03/" display-uri="sarum-26-02-03" type="local">vespers</fr:link> and <fr:link href="/forest/sarum-26-02-03-b/" title="Sarum Compline" uri="https://liamoc.net/forest/sarum-26-02-03-b/" display-uri="sarum-26-02-03-b" type="local">compline</fr:link> of St. Blaise next week.   </html:p>
            <html:p>On the way back from our chat I stopped by a charity shop and got this old illustrated KJV bible for free:</html:p>
            <html:figure>
              <html:img loading="lazy" width="350px" src="/forest/bafkrmigf7bpqtbb3oms5zcfpxfdc3crilg3zfvn5twelrxe5i5qie4grdy.jpeg" />
            </html:figure>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>2</fr:month>
              <fr:day>1</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0032/</fr:uri>
            <fr:display-uri>loc-0032</fr:display-uri>
            <fr:route>/forest/loc-0032/</fr:route>
            <fr:title text="Church Music Corner › Fourth Sunday after Epiphany 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Fourth Sunday after Epiphany 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Laetétur cor quæréntium Dóminum : quaérite Dóminum, et confirmámini: quaérite fáciem eius semper.
</html:blockquote>
<html:p>This Sunday I once again sang at both <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> and <fr:link href="https://www.osp.org.uk/" type="external">Old St. Paul's</fr:link>. Old St. Pauls transferred Candlemas (the Presentation of the Lord) to Sunday, so the evensong was a special one, but the morning mass was an ordinary time mass. In the morning we sang Bach's <fr:link href="https://www.youtube.com/watch?v=Z3noM6iZrds" type="external">O Jesu Christ, meins Lebens Licht</fr:link>: </html:p>
  <html:blockquote>

  <html:table>
  
  <html:tr>
    
  <html:td>
      O Jesu Christ, meins Lebens Licht, 
    </html:td>

  <html:td>Lord Jesu Christ, my life and light,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>
      Mein Hort, mein Trost, mein Zuversicht,</html:td>

    
  <html:td>My strength, my stay, my day-star bright,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td> 
      Auf Erden bin ich nur ein Gast, :</html:td>

    
  <html:td>On earth I have no home or rest,</html:td>

</html:tr>

  <html:tr>
  <html:td>
  Und drückt mich sehr der Sünden Last.</html:td>


  <html:td>By all my grievous sin oppressed.</html:td>

</html:tr>
</html:table>

</html:blockquote>
<html:p>I cantored for the propers. For the Mass setting, we sang the <fr:link href="https://www.youtube.com/watch?v=4m23f0HCCQ4&amp;list=OLAK5uy_lR9KBwM8xDlMcafjOPICA3f7WawCwwe7U&amp;index=18" type="external">St. Anne Mass</fr:link> by Sir James MacMillan.</html:p><html:p>In the evening, we began with a <fr:link href="https://www.youtube.com/watch?v=hYmHdJJAyeA" type="external">Stainer anthem</fr:link> I'm sure I've done before but I'm not sure when, then this <fr:link href="https://www.youtube.com/watch?v=x7ienPABe_o" type="external">Mozart Magnificat</fr:link> (for which I sang the tenor part in the brief solo quartet sections), a 'Mozart' (actually John Kitchen) Nunc Dimittis, for which no recording exists but can be heard on our <fr:link href="https://youtu.be/Iuxew7FwMpc?t=1843" type="external">livestream</fr:link>. Finally for an anthem we sang the very challenging but interesting Rutter <fr:link href="https://www.youtube.com/watch?v=InI__zYVxfc" type="external">Hymn to the Creator of Light</fr:link>:</html:p>
  <html:blockquote>
<html:table style="text-align: left">
<html:tr><html:td>Glory be to thee, O Lord, glory be to thee,</html:td></html:tr>
<html:tr><html:td>Creator of the visible light, </html:td></html:tr>
<html:tr><html:td>the sun’s ray, the flame of fire;</html:td></html:tr>
<html:tr><html:td>Creator also of the light invisible and</html:td></html:tr> <html:tr><html:td>intellectual:</html:td></html:tr>
<html:tr><html:td>that which is known of God, the light invisible.</html:td></html:tr> 
<html:tr><html:td>Glory be to thee, O Lord, glory be to thee,</html:td></html:tr>
<html:tr><html:td>Creator of the light.</html:td></html:tr>
<html:tr><html:td>for writings of the law, glory be to thee:</html:td></html:tr>
<html:tr><html:td>for oracles of prophets, glory be to thee:</html:td></html:tr>
<html:tr><html:td>for melody of psalms, glory be to thee:</html:td></html:tr>
<html:tr><html:td>for wisdom of proverbs, glory be to thee:</html:td></html:tr>
<html:tr><html:td>experience of histories, glory be to thee:</html:td></html:tr>
<html:tr><html:td>a light which never sets.</html:td></html:tr>
<html:tr><html:td>God is the Lord, who hath shewed us light.<html:br /></html:td></html:tr>
<html:tr><html:td>Light, who dost my soul enlighten;</html:td></html:tr>
<html:tr><html:td>Sun, who all my life dost brighten;</html:td></html:tr>
<html:tr><html:td>Joy, the sweetest man e’er knoweth;</html:td></html:tr>
<html:tr><html:td>Fount, whence all my being floweth.</html:td></html:tr>
<html:tr><html:td>From thy banquet let me measure,</html:td></html:tr>
<html:tr><html:td>Lord, how vast and deep its treasure;</html:td></html:tr>
<html:tr><html:td>Through the gifts thou here dost give us,</html:td></html:tr>
<html:tr><html:td>As thy guest in heaven receive us.  </html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>As usual we did John Kitchen's <fr:link href="https://youtu.be/Iuxew7FwMpc?t=3440" type="external">Divine Praises</fr:link> at the end during the Benediction, which was a magical experience when I first heard it in the congregation of OSP years ago.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>1</fr:month>
          <fr:day>25</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W04/</fr:uri>
        <fr:display-uri>2026-W04</fr:display-uri>
        <fr:route>/forest/2026-W04/</fr:route>
        <fr:title text="Weeknotes 2026-W04">Weeknotes 2026-W04</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was primarily spent travelling, although I have safely made it to Edinburgh. I'm here for two weeks or so, and I'm trying to maximise the amount of good church singing I do while I'm here.</html:p>
        <html:figure>
          <html:img loading="lazy" width="260px" src="/forest/bafkrmictjs2dgrtruxj4c3ccutqkf4b4awntvo56os7dzebihdsovtsoua.jpeg" />
          <html:img loading="lazy" width="260px" src="/forest/bafkrmib522adspwiozpjcdsnlm4uv76ouckadt54qjt2j66vez257pr6oe.jpeg" />
          <html:figcaption>Gloomy, wet, cold, miserable, lovely Edinburgh.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>21</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0030/</fr:uri>
            <fr:display-uri>loc-0030</fr:display-uri>
            <fr:route>/forest/loc-0030/</fr:route>
            <fr:title text="David Byrne: Who is the Sky?">David Byrne: Who is the Sky?</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure>
              <html:img loading="lazy" width="350px" src="/forest/bafkrmiczchqxstep2ba5cnwkj6dml6byozbsaecivnknk3zf2xvsg4ar4i.jpg" />
            </html:figure>
            <html:p>Today in Sydney I saw David Byrne's concert tour, <html:em>Who is the Sky?</html:em>. The guy has incredible energy, even now that he's in his seventies. While he's not as active as he was in <fr:link href="https://www.youtube.com/watch?v=8al5cSQNmME" type="external">Stop Making Sense</fr:link>, he is still a mesmerising performer. The setlist included a surprisingly large amount of Talking Heads classics: <html:em>Houses in Motion</html:em> (which was simply amazing), <html:em>Life During Wartime</html:em>, <html:em>And She Was</html:em>, <html:em>Slippery People</html:em>, <html:em>This Must Be The Place</html:em>, <html:em>Once in a Lifetime</html:em>, <html:em>Burning Down the House</html:em>, <html:em>Heaven</html:em>, <html:em>Psycho Killer</html:em> and <html:em>Nothing but Flowers</html:em>. There were also a few solo tracks I recognised: <html:em>Like Humans Do</html:em>, <html:em>Strange Overtones</html:em> and <html:em>Everybody's Coming to My House</html:em>. </html:p>
            <html:p>What stands out to me is the <html:em>extremely</html:em> tight choreography and use of the stage space. The entire performance was just the performers carrying all their instruments like a marching band while wearing blue jumpsuits, with various images projected on the screens behind them. Somehow, it never got old. It was an utterly captivating performance, and the music was fantastic of course.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>25</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002Z/</fr:uri>
            <fr:display-uri>loc-002Z</fr:display-uri>
            <fr:route>/forest/loc-002Z/</fr:route>
            <fr:title text="Church Music Corner › Third Sunday after Epiphany 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Third Sunday after Epiphany 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Dóminus secus mare Galiláeae vidit duos fratres, Petrum et Andréam, et vocávit eos: Veníte post me: fáciam vos fíeri piscatóres hóminum.<html:br />
Adoráte Deum omnes Angeli eius audívit, et lætáta est Sion: et exsultavérunt fíliæ Iudæ.
</html:blockquote>
<html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmie33dyw7unnmyb2tftdzu4ow5e3vafh3ff4enb2fgks6hqbvt47ye.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmid3ynlxfzxiy4zrpwxvcsir4pko4nifkgo3tmmmmfz3mw5ky7h3ga.jpeg" />
   <html:figcaption>It's good to be back at St. Michael and All Saints.</html:figcaption></html:figure><html:p>This Sunday I sang with two choirs: <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> for the morning mass and <fr:link href="https://www.osp.org.uk/" type="external">Old St. Paul's</fr:link> for evensong, which included lucernarium and benediction of the Blessed Sacrament. In the morning we sang Franck's <fr:link href="https://www.youtube.com/watch?v=PK3TeWqSAZk" type="external">Panis Angelicus</fr:link> and a simple choral mass setting whose composer I can't now recall. </html:p>
  <html:blockquote>

  <html:table>
  
  <html:tr>
    
  <html:td>
      Panis angelicus
    </html:td>

  <html:td>Bread of angels</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>fit panis hominum;</html:td>

    
  <html:td>Becomes the bread of men;</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Dat panis cœlicus figuris terminum:</html:td>

    
  <html:td>The heavenly bread ends the old figures:</html:td>

</html:tr>

  <html:tr>
  <html:td>O res mirabilis!</html:td>


  <html:td>O wondrous thing!</html:td>

</html:tr>

  <html:tr>
  <html:td>Manducat Dominum</html:td>

  <html:td>To eat of the Lord</html:td>
</html:tr>

  <html:tr>
  <html:td>
pauper, servus et humilis.</html:td>

  <html:td>The poor, the servant, the humble.</html:td>
</html:tr>
</html:table>

</html:blockquote>
<html:p>I cantored for the propers. In the evening, as it's the Conversion of St. Paul, the namesake of the church, we performed some ambitious repertoire, including the <fr:link href="https://www.youtube.com/watch?v=AIsBdhEdfV0" type="external">Bairstow Magnificat</fr:link> and <fr:link href="https://www.youtube.com/watch?v=3hnVnlZy5yo" type="external">Nunc Dimittis</fr:link>, as well as Palestrina's Magnus Sanctus Paulus for eight voices, which I can't find a recording of anywhere.</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
      
  <html:td>Magnus sanctus Paulus,</html:td>

  <html:td>Saint Paul the Great,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>vas electiónis</html:td>

  <html:td>The vessel that was chosen,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>vere digne est glorificándus,</html:td>

  <html:td>truly worthy to be praised,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>qui et thronum duodécimum  méruit possidére.</html:td>

  <html:td>who merited the twelfth throne.</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>intercéde pro nobis ad Deum,</html:td>

  <html:td>Intercede for us to God,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>qui te elegit, ut digni efficiamur gratia Dei.</html:td>

  <html:td>who chose thee, that we may be made worthy of the grace of God.</html:td>

      </html:tr>
    
    </html:table>

  </html:blockquote>
<html:p>We also performed Widor's <fr:link href="https://www.youtube.com/watch?v=i1FLpyxo3nw" type="external">Tantum Ergo</fr:link> for the Benediction.</html:p><html:p>In between those two services I also stopped in to hear Evensong at St. Mary's Episcopal Cathedral in Edinburgh's west end. The choir there is very good, and I always like attending evensong there, although one of the sopranos was annoyingly out of tune this time.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>1</fr:month>
          <fr:day>18</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W03/</fr:uri>
        <fr:display-uri>2026-W03</fr:display-uri>
        <fr:route>/forest/2026-W03/</fr:route>
        <fr:title text="Weeknotes 2026-W03">Weeknotes 2026-W03</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week has mostly been spent catching up with work and preparing for my Edinburgh trip.</html:p>
        <html:figure>
          <html:img loading="lazy" width="260px" src="/forest/bafkrmidz6y7d3olu3kgalwqf5xs7q24iazhhxmjfhequi47maikjrlwpum.jpeg" />
          <html:img loading="lazy" width="260px" src="/forest/bafkrmic242inaygvmevukkoohldarzv32ll3qgvfctavj73gxngrfdduce.jpeg" />
          <html:figcaption>A Kookaburra sighted on my way to work.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>16</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002W/</fr:uri>
            <fr:display-uri>loc-002W</fr:display-uri>
            <fr:route>/forest/loc-002W/</fr:route>
            <fr:title text="Why I am not a Roman Catholic">Why I am not a Roman Catholic</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p>I was baptised into the Roman church and confirmed in the faith by a high-ranking prelate in the Church at St. Mary's Cathedral, where I sang in the choir for over a decade. I have attended and sung at traditional Latin masses, I'm very familiar with catholic theology and liturgy, and I even won an award for Catholic studies at my cathedral high school. I love the Latin language, I love the traditions of the Church, particularly its musical tradition, and I love the universality of the Roman church. Still, I left the Church gradually as I became preoccupied with other aspects of my life, and then various pedophilia scandals, including of <fr:link href="https://www.abc.net.au/news/2016-06-10/william-standen-catholic-brother-sentenced-jail-abuse/7501086" type="external">the headmaster of my school</fr:link> and of the <fr:link href="https://en.wikipedia.org/wiki/George_Pell#Allegations_of_child_sexual_abuse" type="external">prelate who confirmed me</fr:link>, were the nails in the coffin. I stopped regularly attending any church.</html:p><html:p>Gradually, particularly after moving to Edinburgh, as I accrued a greater understanding of <fr:link href="/forest/loc-0022/" title="Quid est veritas?" uri="https://liamoc.net/forest/loc-0022/" display-uri="loc-0022" type="local">my own peculiar mode of belief</fr:link>, I returned to regular churchgoing, but this time at an extremely "Anglo-catholic" Scottish Episcopal church, although I'd still pop into the Edinburgh Jesuit church for a Catholic mass now and again. The main thing that prevented me from wholly returning to Rome (aside from my personal affinity to that SEC church), was that I just couldn't bring myself to assent to the doctrines of the Roman church. While I'm not a fan in general of the Articles of Religion for the Church of England, article XIX has a point:</html:p>
  <html:blockquote>As the Church of Jerusalem, Alexandria, and Antioch, have erred; so also the Church of Rome hath erred, not only in their living and manner of Ceremonies, but also in matters of Faith.</html:blockquote>
<html:p>I don't think this point is particularly controversial, even among many lay Roman Catholics. It is hard to say with a straight face that the Church has <html:em>always</html:em> taught the right doctrines and that <html:em>all</html:em> of its authoritative teachings are irreversible, and yet the First Vatican Council effectively commits the Roman Church to precisely that position. Even where infallibility is narrowly defined, the broader assumption remains: that the Church cannot, in any meaningful sense, have been wrong in its teaching. This position is so ludicrous that it seems that recent popes quietly admit that it's not true while upholding continuity of magisterial teaching in public: what looks, in hindsight, like error must always be re-described as development, ambiguity, or misapplication. This makes genuine doctrinal correction (as opposed to "reinterpretation") impossible. </html:p><html:p>So, what would the Roman church have to do to win me back over?</html:p><html:ul><html:li><html:strong>Overturn Vatican I, admit error, and confess wrongdoing</html:strong>. There is no way that any of the other changes in this list could be made without first admitting that the Church was wrong.</html:li>
  <html:li><html:strong>Equality between genders, including for holy orders and the episcopate.</html:strong> Recalling Galatians 3:28 <html:em>"In Christ there is no male or female"</html:em>, the argument that women cannot act <html:em>in persona Christi</html:em> for the purposes of the sacraments seems ridiculous. As for the episcopate, claiming that the gender of the apostles was <html:em>theologically</html:em> important rather than merely <html:em>socially convenient</html:em> seems completely scripturally and logically unfounded. Of course the apostles were male: the society of the time would have broadly rejected female philosophers, teachers, or evangelists. Their maleness gave them some <html:em>temporal</html:em> authority, but that doesn't mean that their maleness was in any way necessary for their <html:em>sacramental</html:em> authority. And, there's significant evidence that before the Constantinian adoption of Christianity into the Imperial system, early Christians had many female religious leaders, anyway — not least of which is Mary Magdalene, sometimes called Apostle to the Apostles.</html:li>
  <html:li><html:strong>Welcome and equality for LGBTQ+ individuals and couples, and apologise for harm done.</html:strong> There are ministries and pockets of the Church were gay people are welcome, because Christ is always on the side of those who are marginalised and oppressed. But, in general, the Church remains a deeply homophobic and transphobic institution (despite the presence, throughout the Church’s history, of much-lauded figures whose sex lives would sit <html:em>very</html:em> uneasily in the Church’s proscriptive framework). The Church would have to revise its exclusionary attitudes before I would consider fully returning. This would include extending the sacrament of matrimony to gay couples. </html:li>
  <html:li><html:strong>Eliminate overscrupulous sin accounting, particularly regarding sexual ethics.</html:strong> The Church produces elaborate frameworks for evaluating sin, and overformalises what it understands sin to be. In particular, the elaborate framework of sexual ethics based on "natural law" gets really weird fast. I'm not saying that there's no such thing as sinful sexual behaviour, but declaring contraception sinful (as an example) seems both scientifically illiterate and needlessly overproscriptive. The Church shouldn't be in the business of classifying more and more and more human activities into various levels of sinfulness. The fullness of the law is love, not a bureaucratic accounting of how many rules you break. </html:li>
  <html:li><html:strong>Distinguish between what is sinful and what ought to be illegal.</html:strong> The Church has already done this to a certain extent, pushing for the decriminalisation of homosexuality in those places where it is still illegal, but I think this should be applied more generally. For example,  while I'm not taking a firm position here, I'd be willing to accept that abortion might be a sin, even a grave sin, at least in most cases. I don't think it should be illegal, however, because the harm that is done seems by most measures far greater when abortion is illegal than when it is legal. Medical grey areas shouldn't invite legal intervention. The same goes for adultery, blasphemy and many other things that can be declared sinful with a lot of scriptural support but nonetheless shouldn't be banned by the state. </html:li>
  <html:li><html:strong>Recognise the validity of (most) Anglican orders.</html:strong> The <html:em>Apostolicæ curæ</html:em> letter of Leo XIII deemed Anglican ordinations invalid because the form and intention of some of the historical ordination rites didn't seem to refer to the sacrificial priesthood that the Roman church maintains. This is clearly a post-hoc rationalisation of the conclusion that he wanted to reach — Anglican orders being invalid — because many of the churches that the Roman Church deems <html:em>valid</html:em>, even the Eastern Rite churches within the Roman church itself, also omit some of the important sacrificial language used by the Roman rite. Apostolic succession can pass just as easily through Edwardine Anglicans as it can pass through Arian heretics during the time of St. Hilary. To reject this succession because the Anglican church erred at some points in its history sounds a lot like Donatism. If the Church does recognise these orders, along with the first two changes in my list, there is very little that stands in the way of reunification of these two faiths.</html:li></html:ul><html:p>None of these changes that would make a return to Rome conceivable for me can be addressed in isolation, because all of them would require the Church to admit that it has taught wrongly in the past. I'm not holding my breath.</html:p><html:p>Ultimately, what keeps me from swimming back across the Tiber is not any particular point of disagreement but a deeper structural problem: A church that cannot admit having been wrong in matters of faith cannot meaningfully repent, and a church that cannot meaningfully repent cannot convincingly claim to be guided by the Spirit of truth. I continue to love much of what the Roman Church has given me, but I cannot assent to a vision of the Church that treats its own history as something that must always be explained away rather than, at times, confessed.</html:p><html:p>As a postscript, I should add that none of the above should be read as a complaint about the Church’s <html:em>liturgical</html:em> inheritance, which remains one of the great treasures of Western Christianity. If anything, my frustration is that this inheritance is often treated carelessly or instrumentally, either as a battlefield for ideology or as something endlessly malleable (see <fr:link href="/forest/loc-002K/" title="The ICEL Lord's Prayer is Terrible" uri="https://liamoc.net/forest/loc-002K/" display-uri="loc-002K" type="local">The ICEL Lord's Prayer is Terrible</fr:link>). The fact is that here in Australia, finding a reverent, beautiful liturgy in a Catholic church is vanishingly rare — mostly limited to the big cathedrals, and those liturgies outside of the <html:em>novus ordo</html:em> milieu: the <fr:link href="https://en.wikipedia.org/wiki/Personal_ordinariate" type="external">personal ordinariates</fr:link> and the FSSP Latin Masses, which have congregations that tend greatly towards far-right reactionary ideology. This is an issue of governance, not doctrine. A Church capable of regulating doctrine in extraordinary detail seems strangely incapable of insisting on reverence, beauty, and care in its public worship. This asymmetry only reinforces the impression of an authority structure that is confident where it should be cautious, and timid where it should be firm. </html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>16</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002X/</fr:uri>
            <fr:display-uri>loc-002X</fr:display-uri>
            <fr:route>/forest/loc-002X/</fr:route>
            <fr:title text="Why I am not an Anglican">Why I am not an Anglican</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>If I still lived in Scotland, answering the Religion question on a census would be easy (at least, easy modulo <fr:link href="/forest/loc-0022/" title="Quid est veritas?" uri="https://liamoc.net/forest/loc-0022/" display-uri="loc-0022" type="local">my peculiar mode of belief</fr:link>): I would simply write "Scottish Episcopalian". The SEC aligns closely with the kind of worship and belief that matters to me — Catholic-style liturgy and theology, reverent sacramental practice, and a progressive, egalitarian, and consistent moral framework. But were I given the same question in Australia, it would be much harder to write "Anglican". The cognate church to the SEC in Australia is fragmented, factionalised, and often incoherent.</html:p>
            <html:p>Were I to tell a Sydneysider that I was an Anglican, I might be mistaken for a member of the dreaded Sydney diocese — fiercely low-church and conservative. They deny women ordination; they discriminate against LGBTQ+ people; they celebrate the Eucharist with no liturgical reverence, while wearing a suit and tie; they pursue schism with the wider Anglican communion. The small Anglo-catholic outposts that survive in Sydney, like Christ Church St. Laurence, are stuck in a constant struggle against the broader diocese. Even St. James King St, which is more distinctly Anglican in its liturgy, is very much at odds with the diocese, which sometimes seems more like an American evangelical "non-denominational" group than a real Anglican diocese. Other dioceses in the Anglican Church of Australia, trying to maintain unity with this bunch of schismatic agitators masquerading as a diocese, pursue a minimal or compromise-driven theology and liturgy. This constant balancing act prevents the church from taking decisive action on ethical issues like women's ordination or LGBTQ+ inclusion, and liturgy, a tremendous source of beauty and devotion, is often sidelined or distorted (see <fr:link href="/forest/loc-002K/" title="The ICEL Lord's Prayer is Terrible" uri="https://liamoc.net/forest/loc-002K/" display-uri="loc-002K" type="local">The ICEL Lord's Prayer is Terrible</fr:link>). The more the church compromises to hold itself together, the less coherent and spiritually compelling it becomes. </html:p>
            <html:p>Another difficulty I have with Anglicanism is the Thirty-Nine Articles of Religion. I disagree with several key aspects of the Articles: their emphasis on justification by faith alone, their rejection of purgatory and prayers for the dead, their apparent denial of the physical presence in the Eucharist, and their subordination of tradition to Scripture. In the Anglican Church of Australia, clergy are formally required to assent to the Articles, whereas laity generally are not. In practice, however, even among clergy the Articles are often interpreted loosely or ignored, to maintain unity or suit their own personal theological preferences. While this laxity is fortunate for someone like me who disagrees with many of the Articles, it also highlights the church's structural incoherence and inconsistency in both doctrine and governance. The Oxford Movement offers an interpretation of the Articles which is much more Catholic-leaning and far more agreeable to me, but even so, I do not find myself comfortable with the fundamentally Protestant theology that one would get from a basic reading.  The Scottish Episcopal Church, thankfully, does not impose the same subscription anywhere (they abandoned the Articles in 1979, after the Relief Act which enforced their subscription was finally repealed), which is one reason it feels much closer to my ideal. </html:p>
            <html:p>More broadly, the Anglican Communion as a whole lacks a fixed, consistent set of beliefs. In the United States, bishops like John Shelby Spong moved so far away from the faith that they couldn't meaningfully be called Christian, let alone Anglican. In Australia, the aforementioned Sydney Diocese is a hyperconservative low-church enclave in tension with the rest of the Communion. In no sense could these two be said to share the same faith. Across the wider church, there is no guarantee that any given parish or diocese actually adheres to the same theological or moral framework. This absence of a coherent, shared faith makes it difficult to affirm Anglicanism as a whole, even when individual parishes (like CCSL or St. Peter's Eastern Hill) contain aspects I admire.</html:p>
            <html:p>There are parts of Anglicanism that I genuinely appreciate — mostly, those elements that echo the Catholic tradition rather than the Protestant or uniquely Anglican. The more a parish resembles a reverent, sacramental, and theologically coherent Catholic church, the more it appeals to me.  In other words, what I value in Anglicanism is what it shares with Catholicism, not what makes it uniquely Anglican, with one massive exception: The Book of Common Prayer. Its beautiful language, Cranmer's excellent translations of Latin collects, the lovely rhythm of its condensed office and psalter, and its theological subtlety are consistently beautiful, and it remains a singular strength of the Anglican tradition. </html:p>
            <html:p>Ultimately, I think my ideal Anglican church would end up looking a lot like <fr:link href="/forest/loc-002W/" title="Why I am not a Roman Catholic" uri="https://liamoc.net/forest/loc-002W/" display-uri="loc-002W" type="local">my ideal Catholic church</fr:link>: reverent, sacramental, inclusive, fearlessly progressive, and theologically catholic; without hubristic claims to infallibility, yet undivided by factional squabbles. When I lay it out this way, it doesn't seem like such a church could exist any time soon. Until then, I will remain vaguely a non-Roman Catholic who worships predominantly at Anglican churches, although I have no idea what I'll write on the next census.  </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>18</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002Y/</fr:uri>
            <fr:display-uri>loc-002Y</fr:display-uri>
            <fr:route>/forest/loc-002Y/</fr:route>
            <fr:title text="Church Music Corner › Second Sunday after Epiphany 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Second Sunday after Epiphany 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Omnis terra adóret te, Deus, et psallat tibi: psalmum dicat nómini tuo, Altíssime.</html:blockquote>
<html:p>This Sunday I sang at my usual <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>, although the choir is still on break. Instead, our soprano Cindy Chen (who played the organ for the hymns) joined me for singing Prätorius' uncommon piece <fr:link href="https://www.youtube.com/watch?v=otx6qo7QcI0" type="external">Christe der du bist Tag und Licht</fr:link> (translation is mine): </html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Christe der du bist tag und licht,</html:td>

    
  <html:td>O Christ, thou art both day and light,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Vor dir ist, Herr, verborgen nicht;</html:td>

    
  <html:td>For there is, Lord, naught hid from thee;</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Du väterliches Lichtes glanz,</html:td>

    
  <html:td>Thy fatherly light upon us shine,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Lehr' uns den Weg der Wahrheit ganz.</html:td>

    
  <html:td>Teach us thy way of perfect truth.</html:td>

  </html:tr>

</html:table>

</html:blockquote>
<html:p>Cindy and I sang it well, despite many tricky bits!</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>1</fr:month>
          <fr:day>11</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W02/</fr:uri>
        <fr:display-uri>2026-W02</fr:display-uri>
        <fr:route>/forest/2026-W02/</fr:route>
        <fr:title text="Weeknotes 2026-W02">Weeknotes 2026-W02</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week I have been holidaying in Melbourne!</html:p>
        <html:figure>
          <html:img loading="lazy" width="250px" src="/forest/bafkrmif2wgp7jmnnnutvj2msfvxy7wa3qvzjo46ulilmkwovtg3txipopm.jpeg" />
          <html:img loading="lazy" width="250px" src="/forest/bafkrmia7kfpnwbfukkmugsbwkdcsfx4sti5kezryhng24fjp3v5aunfcxi.jpeg" />
          <html:img loading="lazy" width="250px" src="/forest/bafkrmicyuhpw6vk6twbekl2cqzqnv5anz2hymv44baakmlyjik66xus2mi.jpeg" />
          <html:img loading="lazy" width="250px" src="/forest/bafkrmid42uxph27cxom753oeeqfxw3hkr2pc5dkxx7wbzfo3dxob6jwyq4.jpeg" />
          <html:figcaption>Some sights of Melbourne.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>11</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002V/</fr:uri>
            <fr:display-uri>loc-002V</fr:display-uri>
            <fr:route>/forest/loc-002V/</fr:route>
            <fr:title text="Churchy Tourism in Melbourne">Churchy Tourism in Melbourne</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>The clergy and lay canons at <fr:link href="https://www.stpeters.org.au/" type="external">St. Peter's Eastern Hill</fr:link>, in addition to letting me <fr:link href="/forest/loc-002U/" title="Church Music Corner › Baptism of the Lord 2026" uri="https://liamoc.net/forest/loc-002U/" display-uri="loc-002U" type="local">sing in their choir</fr:link>, were also kind enough to let me join them for their private divine office, and I've been joining them every day I've been here in Melbourne. I start the day with Matins and Lauds and end the day with Vespers. It's been surprisingly restorative. For one, it stops me from sleeping in later and later which often happens over time when I travel. I plan to do the same thing when I travel to Edinburgh later in the month.</html:p>
            <html:p>I also attended some services at the lovely Catholic <fr:link href="https://melbournecatholic.org/st-patricks-cathedral" type="external">St. Patrick's Cathedral</fr:link> across the road, although I found their service schedule disappointing compared to Sydney's St. Mary's Cathedral. The building itself is beautiful, however: </html:p>
            <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmihpmxqu2mgv7doarmsv6ruycvwzwnq2inhpc4vygsv2hdz7cn4xnu.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmidotkm7yvnmgqeprlczzgv2h2w73w5dhynk2vzy4kegmnq6bv6i2y.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmibdi7iurgaob2zprupqzz5quqx7thi6i4xuw6jbkczhjv5uorqi4e.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmibqwrothe2aycdum2yrhihgftk542oz7vq5e6qitzizm52gtxi54a.jpeg" />
   <html:figcaption>St Patrick's Cathedral, Melbourne</html:figcaption></html:figure>
            <html:p>Also, for completeness' sake I guess, I visited briefly the Anglican <fr:link href="https://cathedral.org.au/" type="external">St. Paul's Cathedral</fr:link> near Flinders Street Station, but unlike St. Pat's it was quite overrun with tourists. Still much to appreciate in the building itself, however:</html:p>
            <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmidteliu5ex6eckftbxtwgydwykh2qrxshgwuh5e43wi3ewocsclla.jpeg" />
    <html:img loading="lazy" width="250px" src="/forest/bafkrmigvi2piwoiscfsgpz4zbevfjvbrf3tidaab3oxmgik3yezkuylrza.jpeg" />
    <html:img loading="lazy" width="250px" src="/forest/bafkrmigw6p5fk2ldeh4wys4tgfhcc2ium7tty4iagiixsrmmrbbge5p4te.jpeg" />
    <html:figcaption>St Paul's Cathedral, Melbourne</html:figcaption></html:figure>
            <html:p>I also went to the State Library of Victoria, where in addition to seeing the impressive La Trobe Reading Room I also got to have a look at a few manuscripts that were interesting to me:</html:p>
            <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmigxz637hpgm4f4okndpiejz5ijub4z47xbnufh5u2xc6oit2ynp2i.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmigeoxnonwsus5d5tc3eo3wdvzwvqw3khiveeztut2bta33ekwlbbq.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmigaqhcf573oinpqzsmu2e3d7dlsdavf45rkgqdu2pnyvhrbhnysoq.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmia6tjv7f42n54a4xo3jyu6dt4gkplxiwouisey43vtanpydffvas4.jpeg" />
   <html:figcaption>Some interesting finds at the State Library.</html:figcaption></html:figure>
            <html:p>The first manuscript pictured above seems to be a chant for the text <html:em>Levíta Lauréntius</html:em>, but it doesn't seem to resemble any of the chants from the Solesmes books. I'm not sure where this melody comes from or where it's ended up (if anywhere) in the modern graduals. The next one, in a frame, seems to be a page from a nocturnal or antiphonary, because what starts halfway down the page is <html:em>Centum quadraginta</html:em>, an antiphon for the memorial of the Holy Innocents. The third shot, which isn't of a chant book, seems to be a missal of some kind, with a Eucharistic canon on the left and some propers on the right, including the <html:em>ad te levávi</html:em> text that immediately signifies the first Sunday of Advent. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>11</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002U/</fr:uri>
            <fr:display-uri>loc-002U</fr:display-uri>
            <fr:route>/forest/loc-002U/</fr:route>
            <fr:title text="Church Music Corner › Baptism of the Lord 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Baptism of the Lord 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Dilexísti iustítiam, et odísti iniquitátem: proptérea unxit te Deus, Deus tuus. Óleo lætítiæ præ consórtibus tuis.<html:br />
  Benedíctus qui venit in nómine Dómini: benedíximus vobis de domo Dómini: Deus Dóminus, et illúxit nobis, allelúia, allelúia.
 </html:blockquote>
<html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmihhcueutm3hh43phb4abadsodejwcekpkqs63mdhoc3n3h6owknyy.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmibksguousobysiqgu7lamebtus7zdklqjlhg7ce4qk3ivtoqvbwt4.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmigovvpgrmjxa7imujstguzvb652ss67kxegxjiiu6unsojr5p3z5a.jpeg" />
   <html:img loading="lazy" width="250px" src="/forest/bafkrmidmo3xad3jnnqtom27lnaoes5yqoswc33vdqczw75xnc3hzqng2m4.jpeg" />
   <html:figcaption>St Peter's Eastern Hill, Melbourne.</html:figcaption></html:figure><html:p>This Sunday I sang with the choir of <fr:link href="https://www.stpeters.org.au/" type="external">St. Peter's Eastern Hill</fr:link> in Melbourne. We sang the Simple Communion Service in F Major by William Harris, for which I can't find a recording online (although the <fr:link href="https://www.youtube.com/watch?v=LsT4HF1ND7E" type="external">livestream link for St. Peter's</fr:link> isn't bad, and we sang it well). For a motet we sang Marenzio's <fr:link href="https://www.youtube.com/watch?v=5DW4n-Wgcs8" type="external">Tribus miraculis</fr:link>: </html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Tribus miráculis ornátum, diem sanctum cólimus:</html:td>

    
  <html:td>Distinguished by three miracles, this holy day is celebrated:</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Hódie stella Magos duxit ad præsépium:</html:td>

    
  <html:td>Today the star led the Magi to the manger;</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Hódie vinum ex aqua factum est ad núptias:</html:td>

    
  <html:td>Today wine was made from water at the wedding;</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Hódie in Jordáne a Joánne Christus baptizári vóluit,</html:td>

    
  <html:td>Today in the Jordan by John, Christ chose to be baptized</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>ut salváret nos, Allelúia.</html:td>

    
  <html:td>in order to save us, Alleluia.</html:td>

  </html:tr>

</html:table>

</html:blockquote>
<html:p>It was really nice to sing with a choir that was a little more well-resourced, meet some lovely new people, and learn some music that was new to me. I'll be sure to join this choir again whenever I'm in Melbourne!</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2026</fr:year>
          <fr:month>1</fr:month>
          <fr:day>4</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2026-W01/</fr:uri>
        <fr:display-uri>2026-W01</fr:display-uri>
        <fr:route>/forest/2026-W01/</fr:route>
        <fr:title text="Weeknotes 2026-W01">Weeknotes 2026-W01</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This new-years week was predominantly spent resting and preparing for my travel to Melbourne to avoid the dreaded Summernats festival, so I have little to report, save my church singing for the week.</html:p>
        <html:figure>
          <html:img loading="lazy" width="350px" src="/forest/bafkrmiaufv7wmqxpzpebxeioz2t7hhocfq6mbv5e2n5yqinsh24ljzruxi.jpeg" />
          <html:figcaption>A Canberra moonrise from my apartment balcony.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2026</fr:year>
              <fr:month>1</fr:month>
              <fr:day>4</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002T/</fr:uri>
            <fr:display-uri>loc-002T</fr:display-uri>
            <fr:route>/forest/loc-002T/</fr:route>
            <fr:title text="Church Music Corner › Epiphany of the Lord 2026"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Epiphany of the Lord 2026</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Ecce advénit dominátor Dóminus: et regnum in manu eius, et potéstas, et impérium. 
 </html:blockquote>
<html:p>I was a one-man choir for the mass at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> today. I sang a Christmas Gloria in place of the usual one from the Dudman mass setting, and for an anthem I sang Cornelius' <fr:link href="https://www.youtube.com/watch?v=a2dNKv48WJQ" type="external">The Three Kings</fr:link>, where the choir was replaced with a lovely piano accompaniment:</html:p>
  <html:blockquote>
      <html:table style="text-align: left">
        <html:tr><html:td>Three kings from Persian lands afar</html:td></html:tr>
        <html:tr><html:td>To Jordan follow the pointing star.</html:td></html:tr>
        <html:tr><html:td>And this the quest of the travellers three,</html:td></html:tr>
        <html:tr><html:td>Where the newborn King of the Jews may be.</html:td></html:tr>
        <html:tr><html:td>Full royal gifts they bear for the king;</html:td></html:tr>
        <html:tr><html:td>Gold, incense, myrrh are their offering.<html:br /></html:td></html:tr>
        <html:tr><html:td>The star shines out with a steadfast ray,</html:td></html:tr>
        <html:tr><html:td>The kings to Bethlehem make their way,</html:td></html:tr>
        <html:tr><html:td>And there in worship they bend the knee,</html:td></html:tr>
        <html:tr><html:td>As Mary's child in her lap they see.</html:td></html:tr>
        <html:tr><html:td>Full royal gifts they show to the king;</html:td></html:tr>
        <html:tr><html:td>Gold, incense, myrrh are their offering.<html:br /></html:td></html:tr>
        <html:tr><html:td>Thou child of Man, lo, to Bethlehem</html:td></html:tr>
        <html:tr><html:td>The kings are travelling; travel with them!</html:td></html:tr>
        <html:tr><html:td>The star of Mercy, the star of Grace,</html:td></html:tr>
        <html:tr><html:td>Shall lead thy heart to its resting place.</html:td></html:tr>
        <html:tr><html:td>Gold, incense, myrrh, thou canst not bring;</html:td></html:tr>
        <html:tr><html:td>Offer thy heart to the infant King.</html:td></html:tr>
        <html:tr><html:td>Offer thy heart.</html:td></html:tr>
      </html:table>
  </html:blockquote>
<html:p>I think it went rather well! I got many compliments during and after the service.</html:p><html:p>I've also finally added all my Chester-published polyphonic works and the English Church Music books to my <fr:link href="/forest/loc-002D/" title="Music Index" uri="https://liamoc.net/forest/loc-002D/" display-uri="loc-002D" type="local">Music Index</fr:link>, so the index should be more or less complete for now.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>12</fr:month>
          <fr:day>28</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W52/</fr:uri>
        <fr:display-uri>2025-W52</fr:display-uri>
        <fr:route>/forest/2025-W52/</fr:route>
        <fr:title text="Weeknotes 2025-W52">Weeknotes 2025-W52</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week, perhaps obviously, has no research or teaching related news to report, but plenty of church engagements kept me busy, along with the usual family Christmas catchup.</html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>25</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002R/</fr:uri>
            <fr:display-uri>loc-002R</fr:display-uri>
            <fr:route>/forest/loc-002R/</fr:route>
            <fr:title text="Church Music Corner › Nativity of the Lord 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Nativity of the Lord 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote> Dóminus dixit ad me: Fílius meus es tu, Ego hódie génui te.
  <html:br />
  Puer natus est nobis, et fílius datus est nobis: cuius impérium super húmerum eius: et vocábitur nomen eius, magni consílii Angelus.
 </html:blockquote>
<html:p>This Christmas at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> we reprised Bach's <fr:link href="https://www.youtube.com/watch?v=T5Df7f_BLU8" type="external">Jesu, Joy of Man's Desiring</fr:link> at the Midnight Mass, this time with an oboe (our oboist also played the descant lines for the classic Willcocks carols):</html:p>
  <html:blockquote>
      <html:table style="text-align: left">
        <html:tr><html:td>Jesu, joy of man's desiring,</html:td></html:tr>
        <html:tr><html:td>Holy wisdom, love most bright;</html:td></html:tr>
        <html:tr><html:td>Drawn by Thee, our souls aspiring</html:td></html:tr>
        <html:tr><html:td>Soar to uncreated light.<html:br /></html:td></html:tr>
          
        <html:tr><html:td>Word of God, our flesh that fashioned,</html:td></html:tr>
        <html:tr><html:td>With the fire of life impassioned,</html:td></html:tr>
        <html:tr><html:td>Striving still to truth unknown,</html:td></html:tr>
        <html:tr><html:td>Soaring, dying round Thy throne.<html:br /></html:td></html:tr>
          
        <html:tr><html:td>Through the way where hope is guiding,</html:td></html:tr>
        <html:tr><html:td>Hark, what peaceful music rings;</html:td></html:tr>
        <html:tr><html:td>Where the flock, in Thee confiding,</html:td></html:tr>
        <html:tr><html:td>Drink of joy from deathless springs.<html:br /></html:td></html:tr>
          
        <html:tr><html:td>Theirs is beauty's fairest pleasure;</html:td></html:tr>
        <html:tr><html:td>Theirs is wisdom's holiest treasure.</html:td></html:tr>
        <html:tr><html:td>Thou dost ever lead Thine own</html:td></html:tr>
        <html:tr><html:td>In the love of joys unknown.</html:td></html:tr>
      </html:table>
  </html:blockquote>
<html:p>There were many many stars visible in the night sky on the way to and from the service. Reminds me of the English version of the Cantique de Noël ("O Holy Night").</html:p><html:p>Our director Alasdair cantored solo for the Christmas day mass, so we only had to sing for one service. I also tuned into the livestreamed midnight mass at my old haunt <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link>, and got hit with massive liturgical envy. They did all of the ordinaries and propers in Latin with gregorian chant. Some really great liturgy work in general. I plan to sing with them again for two weeks next month!</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>28</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002S/</fr:uri>
            <fr:display-uri>loc-002S</fr:display-uri>
            <fr:route>/forest/loc-002S/</fr:route>
            <fr:title text="Church Music Corner › 1st Sunday after Christmas 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 1st Sunday after Christmas 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>Deus in loco sancto suo: Deus, qui inhabitáre facit unánimes in domo: ipse dabit virtútem et fortitúdinem plebi suæ.
  <html:br />
  Dum médium siléntium tenérent ómnia, et nox in suo cursu médium iter habéret, omnípotens sermo tuus, Dómine, de cælis a regálibus sédibus venit.
 </html:blockquote>
<html:p>I got up early to attend the BCP service at <fr:link href="https://www.stjohnscanberra.org/" type="external">St. John's</fr:link>, but was disappointed to see that the service was following the APBA and not the BCP. I think the BCP is only used after January. Furthermore, even by APBA standards the Eucharistic prayer was rushed and insufficiently reverent. Oh well, it is a lovely little church:</html:p><html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmifpslpbzkjltttar3ggbzdk62twigh7coqvd56fad7tkd2g3egmau.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmihhsqyazauljdj66bzdu3swhq2hfud6elid6cjc627bb7jpklq6la.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmiejlky4nxgmklx5rbmis4vslux57fzpoyccvs3ohvjunrblzwfog4.jpeg" />
  <html:figcaption>Church of St. John the Baptist, Reid.</html:figcaption></html:figure><html:p>Then I walked to <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>, and volunteered at the last minute to cantor for this choirless Sunday mass. I sang an old favourite of mine a capella: <fr:link href="https://www.youtube.com/watch?v=y2xZ_qfyApc" type="external">The truth sent from above</fr:link> (famously used by Ralph Vaughan Williams in his Fantasia on Christmas Carols):</html:p>
  <html:blockquote>
      <html:table style="text-align: left">
        <html:tr><html:td>This is the truth sent from above,</html:td></html:tr>
        <html:tr><html:td>The truth of God, the God of love,</html:td></html:tr>
        <html:tr><html:td>Therefore don't turn me from your door</html:td></html:tr>
        <html:tr><html:td>But hearken all, both rich and poor.<html:br /></html:td></html:tr>
          
        <html:tr><html:td>The first thing which I do relate</html:td></html:tr>
        <html:tr><html:td>Is that God did Man create;</html:td></html:tr>
        <html:tr><html:td>The next thing which to you I'll tell:</html:td></html:tr>
        <html:tr><html:td>Woman was made with Man to dwell.<html:br /></html:td></html:tr>
          
        <html:tr><html:td>Then after this 'twas God's own choice</html:td></html:tr>
        <html:tr><html:td>To place them both in Paradise,</html:td></html:tr>
        <html:tr><html:td>There to remain from Evil free,</html:td></html:tr>
        <html:tr><html:td>Except they ate of such a tree.<html:br /></html:td></html:tr>
          
        <html:tr><html:td>Thus we were heirs to endless woes</html:td></html:tr>
        <html:tr><html:td>Till God the Lord did interpose,</html:td></html:tr>
        <html:tr><html:td>And so a promise soon did run</html:td></html:tr>
        <html:tr><html:td>That he would redeem us by his Son. <html:br /></html:td></html:tr>
        
        <html:tr><html:td>And at this season of the year,</html:td></html:tr>
        <html:tr><html:td>Our blest Redeemer did appear.</html:td></html:tr>
        <html:tr><html:td>Here he did live, and here did preach,</html:td></html:tr>
        <html:tr><html:td>Any many thousands he did teach.<html:br /></html:td></html:tr>
        
        <html:tr><html:td>Thus he in Love to us behaved,</html:td></html:tr>
        <html:tr><html:td>To show us how we must be saved,</html:td></html:tr>
        <html:tr><html:td>And if you too want to know the way</html:td></html:tr>
        <html:tr><html:td>Be pleased to hear what He did say.</html:td></html:tr>
      </html:table>
  </html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>12</fr:month>
          <fr:day>21</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W51/</fr:uri>
        <fr:display-uri>2025-W51</fr:display-uri>
        <fr:route>/forest/2025-W51/</fr:route>
        <fr:title text="Weeknotes 2025-W51">Weeknotes 2025-W51</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week somehow I didn't end up getting much work done, although a bunch of admin was handled. Next week I will be singing at Midnight Mass and then travelling to Sydney to spend Christmas day with my family.</html:p>
        <html:figure>
          <html:img loading="lazy" width="350px" src="/forest/bafkrmihojjco44nlffrx722spsdrph7iw2uwekellumsxt2bltvkjofe4y.jpeg" />
          <html:figcaption>A nice Canberra morning.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>21</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002Q/</fr:uri>
            <fr:display-uri>loc-002Q</fr:display-uri>
            <fr:route>/forest/loc-002Q/</fr:route>
            <fr:title text="Church Music Corner › 4th Sunday of Advent 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 4th Sunday of Advent 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote> Roráte cæli désuper, et nubes pluant iustum: aperiátur terra, et gérminet Salvatórem.
 </html:blockquote>
<html:figure><html:img loading="lazy" width="350px" src="/forest/bafkrmihdjxmbloe5626rozju7yj5zakwklfvnm3oo7e4ylzotop2dxqgb4.jpeg" />
   <html:figcaption>Rehearsing in a hot and humid, but charming church.</html:figcaption></html:figure><html:p>This muggy Sunday at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> we sang Prätorius' <fr:link href="https://www.youtube.com/watch?v=7RjAXOcTebI" type="external">Es ist ein Ros' entsprungen</fr:link> under my direction. There was also a memorial minute of silence for the victims of the horrific Bondi shooting in Sydney last Sunday. </html:p>
  <html:blockquote>
      
  <html:table>
        
  <html:tr>
        
  <html:td>Es ist ein Ros entsprungen,</html:td>

        
  <html:td>There is a rose up-springing,</html:td>

        </html:tr>

  <html:tr>
        
  <html:td>aus einer Wurzel zart,</html:td>

        
  <html:td>from a tender root,</html:td>

        </html:tr>

  <html:tr>
        
  <html:td>wie uns die Alten sungen,</html:td>

        
  <html:td>as the ancients have sung,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>von Jesse kam die Art</html:td>

        
  <html:td>it comes from Jesse's branch.</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>und hat ein Blümlein bracht</html:td>

        
  <html:td>Its blossom flowering bright,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>mitten im kalten Winter,</html:td>

        
  <html:td>amidst the cold winter,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>wohl zu der halben Nacht.</html:td>

        
  <html:td>when half the night remains.</html:td>

      </html:tr>

  <html:tr>
        
  <html:td><html:br /></html:td>

        
  <html:td />

      </html:tr>

  <html:tr>
        
  <html:td>Das Röslein, das ich meine,</html:td>

        
  <html:td>This little rose of which I sing,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>davon Jesaja sagt,</html:td>

        
  <html:td>of which Isaiah spoke, </html:td>

      </html:tr>

  <html:tr>
        
  <html:td>hat uns gebracht alleine</html:td>

        
  <html:td>was brought to us solely by</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>Marie, die reine Magd.</html:td>

        
  <html:td>Mary, the pure maiden.</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>Aus Gottes ew'gem Rat</html:td>

        
  <html:td>By God's eternal plan,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>hat sie ein Kind geboren</html:td>

        
  <html:td>a child was born to her</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>und blieb doch reine Magd.</html:td>

        
  <html:td>but she remained a pure Maiden.</html:td>

      </html:tr>

  <html:tr>
        
  <html:td><html:br /></html:td>

        
  <html:td />

      </html:tr>

  <html:tr>
        
  <html:td>Das Blümelein so kleine,</html:td>

        
  <html:td>That little blossom, so tiny,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>das duftet uns so süß,</html:td>

        
  <html:td>that to us smells so sweet,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>mit seinem hellen Scheine</html:td>

        
  <html:td>with its bright shining</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>Vertreibt's die Finsternis.</html:td>

        
  <html:td>drives away the darkness.</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>Wahr' Mensch und wahrer Gott,</html:td>

        
  <html:td>True man and truer God,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>hilft uns aus allem Leide,</html:td>

        
  <html:td>He aids us from all suffering,</html:td>

      </html:tr>

  <html:tr>
        
  <html:td>rettet von Sünd und Tod.</html:td>

        
  <html:td>and saves us from sin and death.</html:td>

      </html:tr>

    </html:table>

  </html:blockquote>
<html:p><html:em>Edit:</html:em> I tuned in to the mass at my old haunt <fr:link href="https://smas.church/" type="external">St. Michael and All Saints</fr:link> and discovered that they sang the same anthem (but in English). Nice bit of synchronicity.</html:p><html:p><html:em>Edit 2:</html:em> I also forgot to mention that last Wednesday, three of us also went to the <fr:link href="https://goodwin.org.au/retirement-living/" type="external">Goodwin Retirement Village</fr:link> in Ainslie to sing for the Christmas service they held in their chapel, where we sang the <fr:link href="https://www.youtube.com/watch?v=WII-nEAykqY" type="external">Coventry Carol</fr:link>:</html:p>
  <html:blockquote>
    <html:table style="text-align: left">
      <html:tr><html:td>Lully, lullay, þow littell tyne childe,</html:td></html:tr>
      <html:tr><html:td>by, by, lully, lullay.</html:td></html:tr>
      <html:tr><html:td>þow littell tyne childe:</html:td></html:tr>
      <html:tr><html:td>by, by, lully, lullay.</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>O! Sisters too, how may we do</html:td></html:tr>
      <html:tr><html:td>for to preserve this day</html:td></html:tr>
      <html:tr><html:td>this pore yongling for whom we do singe:</html:td></html:tr>
      <html:tr><html:td>by, by, lully, lullay?</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>Herod, the king, in his raging,</html:td></html:tr>
      <html:tr><html:td>chargid he hath this day,</html:td></html:tr>
      <html:tr><html:td>his men of might in his owne sight,</html:td></html:tr>
      <html:tr><html:td>all yonge children to slay.</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>That wo is me, pore childe, for Thee</html:td></html:tr>
      <html:tr><html:td>and ever morne and day</html:td></html:tr>
      <html:tr><html:td>for thi parting nether say nor singe:</html:td></html:tr>
      <html:tr><html:td>by, by, lully, lullay.</html:td></html:tr>
    </html:table>
  </html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>12</fr:month>
          <fr:day>14</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W50/</fr:uri>
        <fr:display-uri>2025-W50</fr:display-uri>
        <fr:route>/forest/2025-W50/</fr:route>
        <fr:title text="Weeknotes 2025-W50">Weeknotes 2025-W50</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week felt quite productive. The <fr:link href="/forest/loc-001W/" title="ANU Logic Summer School 2025" uri="https://liamoc.net/forest/loc-001W/" display-uri="loc-001W" type="local">Logic Summer School</fr:link> has now finished, and my PhD student at <fr:link href="/forest/uoe/" title="University of Edinburgh" uri="https://liamoc.net/forest/uoe/" display-uri="uoe" type="local">University of Edinburgh</fr:link>, <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link>, has now embarked back to the UK. My course (<fr:link href="/forest/isa-0001/" title="Interactive theorem proving" uri="https://liamoc.net/forest/isa-0001/" display-uri="isa-0001" type="local">Interactive theorem proving</fr:link>) was only for the first week, so I had some time to get work done this week. <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link> and I finally finished a mammoth proof in Isabelle that matrices over a Kleene algebra are themselves a Kleene algebra, a proof that's important for <fr:link href="/forest/dexterkozen/" title="Dexter Kozen" uri="https://liamoc.net/forest/dexterkozen/" display-uri="dexterkozen" type="local">Dexter Kozen</fr:link>'s completeness result for Kleene algebras. This required some novel proof engineering, and some constructions to make the proof go though that we think <fr:link href="/forest/dexterkozen/" title="Dexter Kozen" uri="https://liamoc.net/forest/dexterkozen/" display-uri="dexterkozen" type="local">Dexter</fr:link> may have missed in his pen-and-paper proof. I may write up my thoughts this coming week, but it's also possible that you might have to wait for a paper. <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link> and I also sketched out some future directions for our work, which is quite exciting.</html:p>
        <html:figure>
          <html:img loading="lazy" width="350px" src="/forest/bafkrmihvymxrds3fmynog2lhv6eekfo74psieqsblib5nc5qvazf44zob4.jpeg" />
          <html:figcaption>A picturesque cloudy Canberra evening.</html:figcaption>
        </html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>9</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002N/</fr:uri>
            <fr:display-uri>loc-002N</fr:display-uri>
            <fr:route>/forest/loc-002N/</fr:route>
            <fr:title text="Web Components are confusing; bugs fixed.">Web Components are confusing; bugs fixed.</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I use <fr:link href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components" type="external">Web Components</fr:link> to make widgets that I can easily emit from Forester documents, such as my <fr:link href="/forest/loc-0015/" title="Gregorian Chants in Forester" uri="https://liamoc.net/forest/loc-0015/" display-uri="loc-0015" type="local">Gregorian Chants in Forester</fr:link> and <fr:link href="/forest/loc-0029/" title="Syntax Highlighting in Forester for Isabelle (and More)" uri="https://liamoc.net/forest/loc-0029/" display-uri="loc-0029" type="local">Syntax Highlighting</fr:link> plugins. I noticed that on large pages (such as my <fr:link href="/forest/loc-001B/" title="Liam O'Connor › Weeknotes" uri="https://liamoc.net/forest/loc-001B/" display-uri="loc-001B" type="local">weeknotes page</fr:link>) these plugins would sometimes mysteriously fail to load. I later realised that this is because the <html:code>innerText</html:code>, <html:code>innerHTML</html:code> and <html:code>textContent</html:code> properties may not be initialised when the web component is attached to the DOM, if the page is still loading. The solution requires attaching mutation listeners and waiting for the text to be added later. This seems unnecessarily complicated, but anyway, the plugins have been fixed now. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>9</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002O/</fr:uri>
            <fr:display-uri>loc-002O</fr:display-uri>
            <fr:route>/forest/loc-002O/</fr:route>
            <fr:title text="&quot;AI is Destroying Learning Itself&quot;">"AI is Destroying Learning Itself"</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I've already listed a <fr:link href="/forest/loc-001H/" title="Open Letter against LLMs in Education" uri="https://liamoc.net/forest/loc-001H/" display-uri="loc-001H" type="local">decent number of anti-LLM articles</fr:link> from various perspectives: the technological assault on artistic pursuit, authentic self-development, our social protocols, and on the stability of the economy, but (beyond the <fr:link href="/forest/loc-001H/" title="Open Letter against LLMs in Education" uri="https://liamoc.net/forest/loc-001H/" display-uri="loc-001H" type="local">open letter itself</fr:link>) I hadn't seen much quality writing on the profound damage this technology is doing to higher education, until I read <fr:link href="https://www.currentaffairs.org/news/ai-is-destroying-the-university-and-learning-itself" type="external">this current affairs article</fr:link> by Ronald Purser. A lot of it ties in with a <fr:link href="/forest/loc-001M/" title="Old Man Yells at Cloud" uri="https://liamoc.net/forest/loc-001M/" display-uri="loc-001M" type="local">general decline in conscientiousness</fr:link> that I think is not only a sign of a sick society, but also a deeply unfulfilling one. It's well worth the read.  </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>14</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002P/</fr:uri>
            <fr:display-uri>loc-002P</fr:display-uri>
            <fr:route>/forest/loc-002P/</fr:route>
            <fr:title text="Church Music Corner › 3rd Sunday of Advent 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 3rd Sunday of Advent 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote> Gaudéte in Dómino semper: íterum dico, gaudéte: modéstia vestra nota sit ómnibus homínibus: Dóminus prope est. Nihil sollíciti sitis: sed omni orátione petitiónes vestræ innotéscant apud Deum.
 </html:blockquote>
<html:p>This "Gaudete" Sunday at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> we had fun singing <fr:link href="https://www.youtube.com/watch?v=l1NgHonWNE0" type="external">this medieval carol</fr:link>:</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Gaudéte, gaudéte Christus est natus</html:td>

    
  <html:td>Rejoice! Rejoice, Christ is born</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>ex María vírgine, Gaudéte!</html:td>

    
  <html:td>of the Virgin Mary, Rejoice!</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Tempus adest grátiæ, hoc quod optabámus,</html:td>

    
  <html:td>The time of grace has come, of which we wished,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Carmina lætítiæ devóte reddámus!</html:td>

    
  <html:td>Let us faithfully render songs of joy!</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Deus homo factus est, nátura mirante</html:td>

    
  <html:td>God has become Man, nature marvels.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Mundus renovátus est, a Christo regnánte</html:td>

    
  <html:td>The world is renewed by the reigning Christ.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Ezechiélis porta clausa per tránsítur</html:td>

    
  <html:td>The closed gate of Ezekiel is passed,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Unde lux est orta salus invenítur.</html:td>

    
  <html:td>Whence light has risen, salvation is found.</html:td>

  </html:tr>
 
  <html:tr>
    
  <html:td>Ergo nostra cóntio psallat iam in lústro,</html:td>

    
  <html:td>Now let our assembly sing psalms to him in gladness,</html:td>

  </html:tr>
 
  <html:tr>
    
  <html:td>Benedícat Dómino, salus regi nostro.</html:td>

    
  <html:td>Let us bless the Lord, greetings to our King.</html:td>

  </html:tr>

  
  <html:tr>
  
  <html:td>Gaudéte, gaudéte Christus est natus</html:td>

  
  <html:td>Rejoice! Rejoice, Christ is born</html:td>

  </html:tr>

  <html:tr>
  
  <html:td>ex María vírgine, Gaudéte!</html:td>

  
  <html:td>of the Virgin Mary, Rejoice!</html:td>

  </html:tr>

</html:table>

</html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>12</fr:month>
          <fr:day>7</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W49/</fr:uri>
        <fr:display-uri>2025-W49</fr:display-uri>
        <fr:route>/forest/2025-W49/</fr:route>
        <fr:title text="Weeknotes 2025-W49">Weeknotes 2025-W49</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>Much of this past week was spent organising for my <fr:link href="/forest/loc-001W/" title="ANU Logic Summer School 2025" uri="https://liamoc.net/forest/loc-001W/" display-uri="loc-001W" type="local">Logic Summer School</fr:link> course or preparing for the Service of Lessons and Carols at Ainslie. Both went well I think! But I was so exhausted last night that these weeknotes are a day late.</html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>6</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002M/</fr:uri>
            <fr:display-uri>loc-002M</fr:display-uri>
            <fr:route>/forest/loc-002M/</fr:route>
            <fr:title text="The first week of LSS is over">The first week of LSS is over</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure>
              <html:img width="250px" src="/forest/bafkrmieyfviqcu27jeilblvtknepgsvc3j24qnd6f2nimkpopfkyvkajwy.jpeg" />
            </html:figure>
            <html:p>The first week of the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">ANU</fr:link> <fr:link href="/forest/loc-001W/" title="ANU Logic Summer School 2025" uri="https://liamoc.net/forest/loc-001W/" display-uri="loc-001W" type="local">Logic Summer School</fr:link> has concluded, including my introductory course on <fr:link href="/forest/isa-0001/" title="Interactive theorem proving" uri="https://liamoc.net/forest/isa-0001/" display-uri="isa-0001" type="local">Interactive theorem proving</fr:link>. I think the course went well and students learnt a little of what makes theorem proving fun. Chelsea Edmonds will follow on from my course in week 2 with her own course on software verification. I hope I prepared the students well. We went on an excursion to the Tidbinbilla nature reserve (photos of which I have also previously shared on <fr:link href="/forest/2025-W27/" title="Weeknotes 2025-W27" uri="https://liamoc.net/forest/2025-W27/" display-uri="2025-W27" type="local">Weeknotes 2025-W27</fr:link> and <fr:link href="/forest/2025-W44/" title="Weeknotes 2025-W44" uri="https://liamoc.net/forest/2025-W44/" display-uri="2025-W44" type="local">Weeknotes 2025-W44</fr:link>).</html:p>
            <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmiasqd743ygwzu4fwhb6lqtbxfxc2l2dmgchhwtn2xba4il2pi4cyq.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmihbucj6nsdrabmai76kwe2p6dn62fkslpf3cvr6jflofdolpbdyu4.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmicejy4sk5k6xmh75yegdookn6yts4oav54qtkzbcd4ah4bxlfdg4y.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmidukzqsv72vodnnzribuaeeukmar2xbwdasru6u6fkqowa5oqfmty.jpeg" />
  <html:figcaption>Various Australian fauna seen at Tidbinbilla</html:figcaption></html:figure>
            <html:p>It was a lot of fun to show some of our visiting students some of the natural landscapes so easily accessible from Canberra. I think we all had a really good day, even though it was sweltering hot. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>7</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002L/</fr:uri>
            <fr:display-uri>loc-002L</fr:display-uri>
            <fr:route>/forest/loc-002L/</fr:route>
            <fr:title text="Church Music Corner › 2nd Sunday of Advent 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 2nd Sunday of Advent 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Populus Sion, ecce Dóminus véniet ad salvándas gentes: et audítam fáciet Dóminus glóriam vocis suæ, in lætítia cordis vestri.</html:blockquote>
<html:p>This was a big Sunday at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>. In the morning a small group of us sang Bach's <fr:link href="https://www.youtube.com/watch?v=T5Df7f_BLU8" type="external">Jesu, Joy of Man's Desiring</fr:link>:</html:p>
  <html:blockquote>
    <html:table style="text-align: left">
      <html:tr><html:td>Jesu, joy of man's desiring,</html:td></html:tr>
      <html:tr><html:td>Holy wisdom, love most bright;</html:td></html:tr>
      <html:tr><html:td>Drawn by Thee, our souls aspiring</html:td></html:tr>
      <html:tr><html:td>Soar to uncreated light.<html:br /></html:td></html:tr>
        
      <html:tr><html:td>Word of God, our flesh that fashioned,</html:td></html:tr>
      <html:tr><html:td>With the fire of life impassioned,</html:td></html:tr>
      <html:tr><html:td>Striving still to truth unknown,</html:td></html:tr>
      <html:tr><html:td>Soaring, dying round Thy throne.<html:br /></html:td></html:tr>
        
      <html:tr><html:td>Through the way where hope is guiding,</html:td></html:tr>
      <html:tr><html:td>Hark, what peaceful music rings;</html:td></html:tr>
      <html:tr><html:td>Where the flock, in Thee confiding,</html:td></html:tr>
      <html:tr><html:td>Drink of joy from deathless springs.<html:br /></html:td></html:tr>
        
      <html:tr><html:td>Theirs is beauty's fairest pleasure;</html:td></html:tr>
      <html:tr><html:td>Theirs is wisdom's holiest treasure.</html:td></html:tr>
      <html:tr><html:td>Thou dost ever lead Thine own</html:td></html:tr>
      <html:tr><html:td>In the love of joys unknown.</html:td></html:tr>
    </html:table>
</html:blockquote>
<html:p>But, more significantly, we had our annual Lessons and Carols service. I cantored for the initial <fr:link href="https://www.youtube.com/watch?v=9uJdSvo1e2U" type="external">Matin Responsory</fr:link> based on a Nunc Dimittis by Palestrina (despite the fact the Carols for Choirs edition says it's based on a Magnificat):</html:p>
  <html:blockquote><html:table style="text-align: left"><html:tr><html:td><html:strong>I look from afar,</html:strong></html:td></html:tr>
<html:tr><html:td>And lo, I see the power of God coming, and a cloud covering the whole Earth.</html:td></html:tr>
<html:tr><html:td><html:strong>Go ye out to meet him and say:</html:strong></html:td></html:tr>
<html:tr><html:td>Tell us, art thou he that should come to reign over thy people Israel?</html:td></html:tr>
<html:tr><html:td>High and low, rich and poor, one with another,</html:td></html:tr>
<html:tr><html:td>Go ye out to meet him and say:</html:td></html:tr>
<html:tr><html:td>Hear, O thou Shepherd of Israel, thou that leadest Joseph like a sheep,</html:td></html:tr>
<html:tr><html:td>Tell us, art thou he that should come?</html:td></html:tr>
<html:tr><html:td>Stir up thy strength, O Lord, and come</html:td></html:tr>
<html:tr><html:td>To reign over thy people, Israel.</html:td></html:tr>
<html:tr><html:td><html:strong>Glory be to the Father and to the Son, and to the Holy Ghost.</html:strong></html:td></html:tr>
<html:tr><html:td>I look from afar,</html:td></html:tr>
<html:tr><html:td>And lo, I see the power of God coming, and a cloud covering the whole Earth.</html:td></html:tr>
<html:tr><html:td>Go ye out to meet him and say:</html:td></html:tr>
<html:tr><html:td>Tell us, art thou he that should come to reign over thy people Israel?</html:td></html:tr></html:table></html:blockquote>
<html:p> We had several guest singers join us including Rachel Mink and Dan Walker from Luminescence. Rachel sang the initial verse of <fr:link href="https://www.youtube.com/watch?v=rA4Ng96nb3Y" type="external">Once In Royal David's City</fr:link>, after which we processed to the remaining verses. After the first lesson from yours truly, we performed Ord's <fr:link href="https://www.youtube.com/watch?v=oykLGvCfGCI" type="external">Adam Lay Ybounden</fr:link>: </html:p>
  <html:blockquote><html:table style="text-align: left"><html:tr><html:td>Adam lay ybounden, bounden in a bond.</html:td></html:tr>
<html:tr><html:td>Four thousand winter thought he not too long.</html:td></html:tr>
<html:tr><html:td>And all was for an apple, an apple that he took,</html:td></html:tr>
<html:tr><html:td>As clerkes finden written in their book.</html:td></html:tr>
<html:tr><html:td>Ne had the apple taken been, the apple taken been,</html:td></html:tr>
<html:tr><html:td>Ne had never our ladye a been heavené queen.</html:td></html:tr>
<html:tr><html:td>Blessed be the time that apple taken was,</html:td></html:tr>
<html:tr><html:td>Therefore we moun singen <html:em>Deo Gracias</html:em>.</html:td></html:tr></html:table></html:blockquote>
<html:p>Following another reading, we had one of my favourite Christmas classics, Prätorius' <fr:link href="https://www.youtube.com/watch?v=7RjAXOcTebI" type="external">Es ist ein Ros' entsprungen</fr:link>. </html:p>
  <html:blockquote>
    
  <html:table>
      
  <html:tr>
      
  <html:td>Es ist ein Ros entsprungen,</html:td>

      
  <html:td>There is a rose up-springing,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>aus einer Wurzel zart,</html:td>

      
  <html:td>from a tender root,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>wie uns die Alten sungen,</html:td>

      
  <html:td>as the ancients have sung,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>von Jesse kam die Art</html:td>

      
  <html:td>it comes from Jesse's branch.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>und hat ein Blümlein bracht</html:td>

      
  <html:td>Its blossom flowering bright,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>mitten im kalten Winter,</html:td>

      
  <html:td>amidst the cold winter,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>wohl zu der halben Nacht.</html:td>

      
  <html:td>when half the night remains.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td><html:br /></html:td>

      
  <html:td />

    </html:tr>

  <html:tr>
      
  <html:td>Das Röslein, das ich meine,</html:td>

      
  <html:td>This little rose of which I sing,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>davon Jesaja sagt,</html:td>

      
  <html:td>of which Isaiah spoke, </html:td>

    </html:tr>

  <html:tr>
      
  <html:td>hat uns gebracht alleine</html:td>

      
  <html:td>was brought to us solely by</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Marie, die reine Magd.</html:td>

      
  <html:td>Mary, the pure maiden.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Aus Gottes ew'gem Rat</html:td>

      
  <html:td>By God's eternal plan,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>hat sie ein Kind geboren</html:td>

      
  <html:td>a child was born to her</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>und blieb doch reine Magd.</html:td>

      
  <html:td>but she remained a pure Maiden.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td><html:br /></html:td>

      
  <html:td />

    </html:tr>

  <html:tr>
      
  <html:td>Das Blümelein so kleine,</html:td>

      
  <html:td>That little blossom, so tiny,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>das duftet uns so süß,</html:td>

      
  <html:td>that to us smells so sweet,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>mit seinem hellen Scheine</html:td>

      
  <html:td>with its bright shining</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Vertreibt's die Finsternis.</html:td>

      
  <html:td>drives away the darkness.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Wahr' Mensch und wahrer Gott,</html:td>

      
  <html:td>True man and truer God,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>hilft uns aus allem Leide,</html:td>

      
  <html:td>He aids us from all suffering,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>rettet von Sünd und Tod.</html:td>

      
  <html:td>and saves us from sin and death.</html:td>

    </html:tr>

  </html:table>

</html:blockquote>
<html:p>After the next reading was the original traditonal arrangement of the <fr:link href="https://www.youtube.com/watch?v=WII-nEAykqY" type="external">Coventry Carol</fr:link> with the crunchy false relation in the cadence.</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Lully, lullay, þow littell tyne childe,</html:td></html:tr>
    <html:tr><html:td>by, by, lully, lullay.</html:td></html:tr>
    <html:tr><html:td>þow littell tyne childe:</html:td></html:tr>
    <html:tr><html:td>by, by, lully, lullay.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>O! Sisters too, how may we do</html:td></html:tr>
    <html:tr><html:td>for to preserve this day</html:td></html:tr>
    <html:tr><html:td>this pore yongling for whom we do singe:</html:td></html:tr>
    <html:tr><html:td>by, by, lully, lullay?</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Herod, the king, in his raging,</html:td></html:tr>
    <html:tr><html:td>chargid he hath this day,</html:td></html:tr>
    <html:tr><html:td>his men of might in his owne sight,</html:td></html:tr>
    <html:tr><html:td>all yonge children to slay.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>That wo is me, pore childe, for Thee</html:td></html:tr>
    <html:tr><html:td>and ever morne and day</html:td></html:tr>
    <html:tr><html:td>for thi parting nether say nor singe:</html:td></html:tr>
    <html:tr><html:td>by, by, lully, lullay.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>The next reading was followed by <fr:link href="https://www.youtube.com/watch?v=LRuXdOb6TrA" type="external">O little town of Bethlehem</fr:link> with the Willcocks descant. Then, after the next reading we sang the <html:em>significantly</html:em> less common arrangement of the Basque carol <html:em>Gabriel's Message</html:em>, also known as <html:em>the Angel Gabriel</html:em> or the <fr:link href="https://www.youtube.com/watch?v=RJnJ6Ko_kyw" type="external">Most Highly Flavoured Gravy</fr:link>.</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>The Angel Gabriel from heaven came,</html:td></html:tr>
    <html:tr><html:td>his wings as drifted snow, his eyes as flame;</html:td></html:tr>
    <html:tr><html:td>'All hail', said he, 'thou lowly maiden Mary</html:td></html:tr>
    <html:tr><html:td>Most highly favoured lady, <html:em>Gloria</html:em>.'</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>'For known a blesséd Mother thou shalt be,</html:td></html:tr>
    <html:tr><html:td>all generations laud and honour thee,</html:td></html:tr>
    <html:tr><html:td>thy Son shall be Immanuel by seers foretold;</html:td></html:tr>
    <html:tr><html:td>Most highly favoured lady, <html:em>Gloria</html:em>.'</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Then gentle Mary meekly bowed her head,</html:td></html:tr>
    <html:tr><html:td>'To me be as it pleaseth God', she said,</html:td></html:tr>
    <html:tr><html:td>'My soul shall laud and magnify his holy name':</html:td></html:tr>
    <html:tr><html:td>most highly favoured lady, <html:em>Gloria</html:em>.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Of her, Immanuel, the Christ was born</html:td></html:tr>
    <html:tr><html:td>in Bethlehem all on a Christmas morn,</html:td></html:tr>
    <html:tr><html:td>and Christian folk throughout the world will ever say:</html:td></html:tr>
    <html:tr><html:td>'most highly favoured lady, <html:em>Gloria</html:em>.'</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>After one more reading, we performed what I think was a highlight of the whole service, and one of our best performances, Lauridsen's <fr:link href="https://www.youtube.com/watch?v=tZ-nuU-hda8" type="external">O Magnum Mysterium</fr:link>:</html:p>
  <html:blockquote>
    
  <html:table>
      
  <html:tr>
      
  <html:td>O mágnum mystérium</html:td>

      
  <html:td>O great mystery,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>et admirábile sacraméntum,</html:td>

      
  <html:td>and wondrous sacrament,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>ut animália vidérent Dóminum nátum,</html:td>

      
  <html:td>that animals should see the newborn Lord,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>jacéntem in præsépio.</html:td>

      
  <html:td>lying in a manger.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Beáta virgo, cújus víscera meruérunt</html:td>

      
  <html:td>Blessed virgin, whose womb was worthy</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>portáre Dóminum Chrístum. Alleluia</html:td>

      
  <html:td>to bear the Lord Christ. Alleluia</html:td>

    </html:tr>

  </html:table>

</html:blockquote>
<html:p>Then we processed out <fr:link href="https://www.youtube.com/watch?v=ZOA2Y9Ms34s" type="external">while shepherds washed their socks</fr:link> and ascended to the organ loft for the remainder of the service, where we performed Warlock's <fr:link href="https://www.youtube.com/watch?v=gQnuxaqbYx8" type="external">Bethlehem Down</fr:link>. I heard that anthem was written on a napkin by an alcoholic and antitheist Peter Warlock in exchange for beer money, and that he died a few years after writing it. But the anthem itself is quite special.</html:p>
  <html:blockquote><html:table style="text-align: left"><html:tr><html:td>When He is King we will give him the King's gifts,</html:td></html:tr>
  <html:tr><html:td>Myrrh for its sweetness, and gold for a crown,</html:td></html:tr>
  <html:tr><html:td>"Beautiful robes", said the young girl to Joseph</html:td></html:tr>
  <html:tr><html:td>Fair with her first-born on Bethlehem Down.</html:td></html:tr>
  <html:tr><html:td><html:br /></html:td></html:tr>
  <html:tr><html:td>Bethlehem Down is full of the starlight</html:td></html:tr>
  <html:tr><html:td>Winds for the spices, and stars for the gold,</html:td></html:tr>
  <html:tr><html:td>Mary for sleep, and for lullaby music</html:td></html:tr>
  <html:tr><html:td>Songs of a shepherd by Bethlehem fold.</html:td></html:tr>
  <html:tr><html:td><html:br /></html:td></html:tr>
  <html:tr><html:td>When He is King they will clothe Him in grave-sheets,</html:td></html:tr>
  <html:tr><html:td>Myrrh for embalming, and wood for a crown,</html:td></html:tr>
  <html:tr><html:td>He that lies now in the white arms of Mary</html:td></html:tr>
  <html:tr><html:td>Sleeping so lightly on Bethlehem Down.</html:td></html:tr>
  <html:tr><html:td><html:br /></html:td></html:tr>
  <html:tr><html:td>Here He has peace and a short while for dreaming,</html:td></html:tr>
  <html:tr><html:td>Close-huddled oxen to keep Him from cold,</html:td></html:tr>
  <html:tr><html:td>Mary for love, and for lullaby music</html:td></html:tr>
  <html:tr><html:td>Songs of a shepherd by Bethlehem fold.</html:td></html:tr></html:table></html:blockquote>
<html:p>This was followed by another congregational carol with Willcocks descant, <fr:link href="https://www.youtube.com/watch?v=9Bwn0k0k8xI" type="external">Hark the Herald Angels Sing</fr:link> and our last anthem of the evening, Wood's <fr:link href="https://www.youtube.com/watch?v=Qf202pdjMZk" type="external">Hey you! The Middle Ball</fr:link>. </html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>O thou the central orb of righteous love,</html:td></html:tr>
    <html:tr><html:td>Pure beam of the Most High,</html:td></html:tr>
    <html:tr><html:td>Eternal Light of this our wintry world,</html:td></html:tr>
    <html:tr><html:td>Thy radiance bright awakes new joy in faith,</html:td></html:tr>
    <html:tr><html:td>Hope soars above.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Come, quickly come and let thy glory shine,</html:td></html:tr>
    <html:tr><html:td>Gilding our darksome heav'n with rays divine.</html:td></html:tr>
    <html:tr><html:td>Thy saints with holy lustre round thee move,</html:td></html:tr>
    <html:tr><html:td>As stars about thy throne, set in the height</html:td></html:tr>
    <html:tr><html:td>Of God's ordaining counsel, </html:td></html:tr>
    <html:tr><html:td>As thy sight gives measured grace to each.</html:td></html:tr>
    <html:tr><html:td>Thy power to prove.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Let thy bright beams disperse the gloom of sin,</html:td></html:tr>
    <html:tr><html:td>Our nature all shall feel eternal day,</html:td></html:tr>
    <html:tr><html:td>In fellowship with thee,</html:td></html:tr>
    <html:tr><html:td>Transforming day to souls erewhile unclean,</html:td></html:tr>
    <html:tr><html:td>now pure within.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Amen.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>Of course, it wouldn't be a Christmas Carols service without the "Word of the Father" chord, so we finished up with Willcocks' arrangement of <fr:link href="https://www.youtube.com/watch?v=RkS57yCIk7E" type="external">O Come, All Ye Faithful</fr:link>.
</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>11</fr:month>
          <fr:day>30</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W48/</fr:uri>
        <fr:display-uri>2025-W48</fr:display-uri>
        <fr:route>/forest/2025-W48/</fr:route>
        <fr:title text="Weeknotes 2025-W48">Weeknotes 2025-W48</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I spent much of this week preparing notes for my upcoming Logic Summer School course, <fr:link href="/forest/isa-0001/" title="Interactive theorem proving" uri="https://liamoc.net/forest/isa-0001/" display-uri="isa-0001" type="local">Interactive theorem proving</fr:link>.</html:p>
        <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmiawrxze7qvcjboz2sq62ic2jicr4rp7zaiysox5jpa4nim372qcpa.jpeg" /><html:img loading="lazy" width="250px" src="/forest/bafkrmicewepyxponct4rbp2qx5nykgxba72tsyenx467ozmxpstkuz2llm.jpeg" />
 <html:figcaption>Clear skies on my walk to work.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>24</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002J/</fr:uri>
            <fr:display-uri>loc-002J</fr:display-uri>
            <fr:route>/forest/loc-002J/</fr:route>
            <fr:title text="SAPLING Report">SAPLING Report</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Today I went with many colleagues to <fr:link href="/forest/google-syd/" title="Google Sydney" uri="https://liamoc.net/forest/google-syd/" display-uri="google-syd" type="local">Google Sydney</fr:link> for the <fr:link href="https://comp.anu.edu.au/sapling/index.html" type="external">Sydney Area Programming Languages Interest Group (SAPLING) 2025 meeting</fr:link>. I didn't present anything at the meeting but my PhD student, <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link> did a lightning talk introducing her work on incorrectness logic.</html:p>
            <html:p>It was good to see many colleagues from <fr:link href="/forest/unsw/" title="UNSW Sydney" uri="https://liamoc.net/forest/unsw/" display-uri="unsw" type="local">UNSW Sydney</fr:link> and catch up with some of my former students who were now working for Google.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>30</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002K/</fr:uri>
            <fr:display-uri>loc-002K</fr:display-uri>
            <fr:route>/forest/loc-002K/</fr:route>
            <fr:title text="The ICEL Lord's Prayer is Terrible">The ICEL Lord's Prayer is Terrible</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p>One of my <html:em>many</html:em> bugbears with the Australian Anglican liturgy for the mass (based on <html:em>A Prayer Book for Australia</html:em>) is that they adopted the absolutely atrocious "modern" version of the Lord's Prayer from the Vatican's International Commission on English in the Liturgy some time during the 1970s:</html:p>
  <html:blockquote><html:table style="text-align: left">
  <html:tr><html:td>Our Father in Heaven,</html:td></html:tr>
  <html:tr><html:td>Hallowed be your name,</html:td></html:tr>
  <html:tr><html:td>Your kingdom come,</html:td></html:tr>
  <html:tr><html:td>Your will be done on Earth as in Heaven,</html:td></html:tr>
  <html:tr><html:td>Give us today our daily bread,</html:td></html:tr>
  <html:tr><html:td>And forgive us our sins,</html:td></html:tr>
  <html:tr><html:td>As we forgive those who sin against us,</html:td></html:tr>
  <html:tr><html:td>Save us from the time of trial,</html:td></html:tr>
  <html:tr><html:td>And deliver us from evil.</html:td></html:tr>
  <html:tr><html:td>(For the Kingdom, the Power and the Glory are yours, now and forever.)</html:td></html:tr>
  <html:tr><html:td>Amen</html:td></html:tr>
</html:table></html:blockquote>
<html:p>I won't get into whether or why the doxology should or shouldn't be included in the prayer (although the answer is that it shouldn't), but I think this is an absolutely <html:em>terrible</html:em> translation that is so egregiously bad that I mumble the prayer in Latin at that point in the service at All Saints when I sing there.</html:p><html:p>About 50-60 years ago when the ICEL attempted to make modern translations of liturgical prayers, they had four main goals in mind:</html:p><html:ul><html:li><html:strong>Accessibility to normal English speakers</html:strong>. Unlike the archaic BCP English which often tends to be poetic, the ICEL liturgy was intended to be straightforward for normal English speakers with no special training to understand.</html:li>
<html:li><html:strong>Avoiding theological pitfalls</html:strong>. Lines such as "Lead us not into temptation" should be avoided because they imply that God somehow directly tempts us, which is theologically problematic. </html:li>
<html:li><html:strong>Ecumenism</html:strong>. The liturgy was intended for Roman Catholic liturgies worldwide, across all English-speaking cultures, and the liturgical movement it started was also carried forward by many mainline Protestant and Anglican churches.</html:li>
<html:li><html:strong>Dynamic Equivalence</html:strong>. Avoiding direct translation from the Latin or Greek, but instead trying to convey meaning in a natural, idiomatic, modern way for the target language.</html:li></html:ul><html:p>I personally disagree with some of these goals, but even putting aside my personal disagreements, I think this version of the prayer fails at all of these goals.</html:p><html:ul><html:li><html:strong>Accessibility to normal English speakers</html:strong>. The line "Save us from the time of trial" seems to be referring to a particular time in the future — perhaps the time when Christ returns — rather than the trials and temptations of everyday life, to which the prayer was originally referring. In fact, I suspect almost all English-speaking Christians would think this line now refers to an apocalyptic time of trial. Doesn't seem very accessible to me.</html:li>
<html:li><html:strong>Avoiding theological pitfalls</html:strong>. They got rid of the theological problem of "leading into temptation" but added a brand new one: "As we forgive those who sin against us". Firstly, this line implies that it is possible to sin against a human being ("Every sin is chiefly against God" - Thomas Aquinas, ST-II-II 66.6) and, even worse, that human beings have the capacity to forgive sins ("Who can forgive sins but God alone?" - Mark 2:7).  </html:li>
<html:li><html:strong>Ecumenism</html:strong>. The ICEL came up with this translation for use in Roman Catholic liturgy, but it has now been completely removed from use in the same liturgy (and even before, was usually only used in a few dioceses), replaced with a much more direct translation from the Latin Missal. In fact, the only churches still using this terrible translation are mostly Anglican churches like mine.</html:li>
<html:li><html:strong>Dynamic Equivalence</html:strong>. They half-assed this, replacing the "thy"s and "art"s but leaving in several turns of phrase that clearly come from the Book of Common Prayer ("Hallowed be your name") that don't sound natural or idiomatic in modern English. </html:li></html:ul><html:p>I think there's some value in having something beautiful, poetic, or outside the norm in the liturgy. I think this is the value of the Latin liturgy, but the same value can be found in the poetic language of the BCP liturgies. Having something that appears "not of this world", different from the mundane language we use every day, is important to elevate the liturgy and set it apart from the normal day-to-day life of worshippers. The whole idea of "Dynamic Equivalence" robs the liturgy of its distinctiveness. I hope one day my church will put the APBA in the dustbin of history where it belongs.</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>30</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002I/</fr:uri>
            <fr:display-uri>loc-002I</fr:display-uri>
            <fr:route>/forest/loc-002I/</fr:route>
            <fr:title text="Church Music Corner › 1st Sunday of Advent 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 1st Sunday of Advent 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Ad te levávi ánimam méam: Déus méus in te confido, non erubéscam: neque irrídeant me inimíci mei: étenim univérsi qui te expéctant, non confundéntur.</html:blockquote>
<html:p>This Sunday at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> we were almost pre-warmed up from our rehearsal yesterday (for next week's Carol service). We sang Waters' lovely short anthem <fr:link href="https://www.youtube.com/watch?v=s6uU6lk4kd4" type="external">I sing of a maiden that is mateless</fr:link>:</html:p>
  <html:blockquote>
    <html:table style="text-align: left">
      <html:tr><html:td>I syng of a mayden þat is makeles,</html:td></html:tr>
      <html:tr><html:td>kyng of alle kynges to here sone che ches.</html:td></html:tr>
      <html:tr><html:td>He came also stylle þer his moder was</html:td></html:tr>
      <html:tr><html:td>as dew in aprylle, þat fallyt on þe gras.</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>Moder &amp; mayden, was neuer non but che –</html:td></html:tr>
      <html:tr><html:td>wel may swych a lady, Godes moder be.</html:td></html:tr>
    </html:table>
</html:blockquote>
<html:p>I am starting to organise a group of monthy Evensong singers for next year. If you want to contriubte your voice, please get in touch with me!
</html:p><html:p>Also, as I recently got a collection of Tallis anthems to add to my <fr:link href="/forest/loc-002D/" title="Music Index" uri="https://liamoc.net/forest/loc-002D/" display-uri="loc-002D" type="local">score collection</fr:link>, I sang through a verse of <html:em>Why fum'th in sight</html:em>, the anthem that would, long after its writing, be rediscovered by Ralph Vaughan Williams and inspire his beautiful Fantasia for string orchestra.</html:p><html:iframe style="aspect-ratio: 16 / 9;" width="100%
   " src="https://www.youtube.com/embed/F4LHpA5PWKg" title="Why Fum'th in Sight" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" /></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>11</fr:month>
          <fr:day>23</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W47/</fr:uri>
        <fr:display-uri>2025-W47</fr:display-uri>
        <fr:route>/forest/2025-W47/</fr:route>
        <fr:title text="Weeknotes 2025-W47">Weeknotes 2025-W47</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I'm making these weeknotes in a rush, because I'm going to SAPLING tomorrow and I have to get up super early to get to Sydney on time.</html:p>
        <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmib6bbj3b7uuw3vggljlc7b7pqj6zq4qmm2sy5ro4y5bdo6kecwmou.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmifetapd264zkgvuqqs45wym7nzeqk3ydmfvtucgpys52yljaaamaa.jpeg" />
  <html:figcaption>The wonderfully frequent technicolour sunsets in Canberra.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>22</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002G/</fr:uri>
            <fr:display-uri>loc-002G</fr:display-uri>
            <fr:route>/forest/loc-002G/</fr:route>
            <fr:title text="I'm making a new programming language">I'm making a new programming language</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I've sketched out a design and begun implementation of a programming language, called Hito. Partly, this is just a programming exercise for me, but I also think the language might fill a niche that is currently unfilled.</html:p>
            <html:figure>
              <html:img loading="lazy" width="250px" src="/forest/bafkrmiaoaadjb5h5kctkp7gtrgcoydywexjd3dtnofkz7xjlovmx5rsede.png" />
            </html:figure>
            <html:p>Hito (from the Japanese pronunciation of the vaguely lambda-esque character 人, which also means "person"), is designed as a <html:em>embeddable</html:em>, <html:em>lightweight</html:em> scripting language that is <html:em>purely functional</html:em>. In particular, it's designed as an embeddable scripting language for situations where something like <fr:link href="https://www.lua.org/" type="external">Lua</fr:link> even would be overkill. Often, full imperative procedures feel to me too heavy, but a language for quick specification of some calculations, formulas, pipelines or filters would be ideal. An example would be mark calculation formulae for a course gradebook. That said, the language is fairly extensible, so it could in theory be used for much more complicated applications. </html:p>
            <html:p>I've nearly finished the first prototype implementation, which is written entirely in fairly clean, modern C. Primitive operations are pluggable, just as function pointers supplied to the runtime. It uses a simple mark-and-sweep precise garbage collector and a three-stack abstract machine design for executing the code. It will be dynamically typed, with support for pattern matching and a lightweight kind of algebraic data types, and higher-order functions and closures. The syntax is fairly clean, I think, and designed to be approachable to non-FP people. I have yet to make a proper website, but there is a <fr:link href="https://github.com/liamoc/hito" type="external">code repository</fr:link> if you want to poke around.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>20</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002F/</fr:uri>
            <fr:display-uri>loc-002F</fr:display-uri>
            <fr:route>/forest/loc-002F/</fr:route>
            <fr:title text="A Forester plugin for TSV tables">A Forester plugin for TSV tables</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  I have a fairly large collection of anthem books and musical scores for sacred music (see my <fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link>), to the point where it has become difficult to actually remember what scores I have and where they might be found. So, I made a small plug-in for forester to make sortable, searchable tables for TSV files, and made a small database of all my anthem books. You can have a look at it <fr:link href="/forest/loc-002D/" title="Music Index" uri="https://liamoc.net/forest/loc-002D/" display-uri="loc-002D" type="local">here</fr:link>.
</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>23</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002H/</fr:uri>
            <fr:display-uri>loc-002H</fr:display-uri>
            <fr:route>/forest/loc-002H/</fr:route>
            <fr:title text="Getting away from GitHub">Getting away from GitHub</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I'm increasingly uncomfortable keeping my code, this forest, and many of my papers on GitHub, seeing as they feed data to the dreaded bots, they are owned by Microsoft (who feed data and money to the dreaded bots), and it no longer is as intuitive or useful as it used to be.</html:p>
            <html:p>So, I'm interested in figuring out an alternative to host all my git repositories. <fr:link href="https://www.forester-notes.org/" type="external">Forester</fr:link> uses <fr:link href="https://sourcehut.org/" type="external">sourcehut</fr:link>, which is nice because it's so lightweight and free of the dreaded bots, but I find the interface for it very confusing. Perhaps I just need to get used to it. Does anyone have any other suggestions?</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>23</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002E/</fr:uri>
            <fr:display-uri>loc-002E</fr:display-uri>
            <fr:route>/forest/loc-002E/</fr:route>
            <fr:title text="Church Music Corner › Christ the King 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Christ the King 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  DIGNUS est Agnus qui occísus est, accípere virtútem, et divinitátem, et sapiéntiam, et fortitúdinem, et honórem. Ipsi glória et impérium in sæcula sæculórum.
</html:blockquote>
<html:p>This Sunday we were very few in numbers and without a director at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> but we held it together for Isom's <fr:link href="https://www.youtube.com/watch?v=MNs6-lUtYXY" type="external">King of all ages</fr:link>:</html:p>
  <html:blockquote>
    <html:table style="text-align: left">
      <html:tr><html:td>King of all Ages, throned on high,</html:td></html:tr>
      <html:tr><html:td>Yet saviour too of those with faith,</html:td></html:tr>
      <html:tr><html:td>Death at your onslaught died in fear,</html:td></html:tr>
      <html:tr><html:td>And grace triumphant rules supreme.</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>Risen from death, the heav'nly Christ,</html:td></html:tr>
      <html:tr><html:td>Receives from God the Father's hand,</html:td></html:tr>
      <html:tr><html:td>Power over all created things,</html:td></html:tr>
      <html:tr><html:td>A gift he could not know on Earth.</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>Then at your coming on the clouds,</html:td></html:tr>
      <html:tr><html:td>With shining strength to be our judge,</html:td></html:tr>
      <html:tr><html:td>Cancel the debt we owe you still,</html:td></html:tr>
      <html:tr><html:td>Give back the glory we have lost.</html:td></html:tr>
      <html:tr><html:td><html:br /></html:td></html:tr>
      <html:tr><html:td>Glory to you, O Christ our Lord,</html:td></html:tr>
      <html:tr><html:td>Exalted far beyond our sight,</html:td></html:tr>
      <html:tr><html:td>Reigning and forevermore,</html:td></html:tr>
      <html:tr><html:td>with Father and with Paraclete.</html:td></html:tr>
    </html:table>
</html:blockquote>
<html:p>I busted out my falsetto for a few bits, but we survived. The Carols and  Lessons service is coming up on December 7th, so we have many rehearsals over the next few weeks.
</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>11</fr:month>
          <fr:day>16</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W46/</fr:uri>
        <fr:display-uri>2025-W46</fr:display-uri>
        <fr:route>/forest/2025-W46/</fr:route>
        <fr:title text="Weeknotes 2025-W46">Weeknotes 2025-W46</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was very productive. My <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">Programming as Problem Solving</fr:link> students sat their exam, I finished some <fr:link href="/forest/jfp/" title="Journal of Functional Programming" uri="https://liamoc.net/forest/jfp/" display-uri="jfp" type="local">Journal of Functional Programming</fr:link> reviews, I assembled a bunch of furniture (see below), and I did a bunch of honours thesis marking. </html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>16</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002C/</fr:uri>
            <fr:display-uri>loc-002C</fr:display-uri>
            <fr:route>/forest/loc-002C/</fr:route>
            <fr:title text="New furniture for retro computing lab">New furniture for retro computing lab</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>My collection of vintage computers are now safely situated in my <fr:link href="/forest/loc-001O/" title="I'm moving to Dickson" uri="https://liamoc.net/forest/loc-001O/" display-uri="loc-001O" type="local">new home in Dickson</fr:link>. This week I purchased some new furniture to house some of my most prized machines. At some point I will make a database of everything I've got here in my forest, but here's a photo of some of my lab in the mean time:</html:p>
            <html:figure>
              <html:img loading="lazy" width="450px" src="/forest/bafkrmiess5ud5tihuvm65kc34x6ypxghqwvdxio2s7ghv6iz3gbxqyorte.jpeg" />
            </html:figure>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>10</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002B/</fr:uri>
            <fr:display-uri>loc-002B</fr:display-uri>
            <fr:route>/forest/loc-002B/</fr:route>
            <fr:title text="Gang-gang cockatoos sighted at last">Gang-gang cockatoos sighted at last</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I've lived in Canberra for over a year, and yet I never saw the Gang-gang Cockatoo, the ACT's faunal emblem since 1997, despite seeing parrots of all sorts on my walks around the city's various natural areas. </html:p>
            <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmia2yiw4itybwyiik2whrnoim4qqanivd36wkzk5x2vhxxpmdsjv5y.png" />
  <html:figcaption>The Gang-gang Cockatoo has long been associated with Canberra.</html:figcaption></html:figure>
            <html:p>Fortunately, when I was walking on the <fr:link href="/forest/loc-0020/" title="The benefits of avoiding cars" uri="https://liamoc.net/forest/loc-0020/" display-uri="loc-0020" type="local">Dickson bike path</fr:link> today, I saw a couple on a nearby gum-tree, behaving completely oblivious to the city bustle around them. </html:p>
            <html:figure><html:img loading="lazy" width="250px" src="/forest/bafkrmiapdflwqq5ya4v4bcmgqzteqelqnsgjcsoasdgvjlfq667ibajmeq.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmidpoqigacjo3cmk3rwi5vbazmqkytvpfsvgzyhmjrzbkccxotj6au.jpeg" /></html:figure>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>16</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002A/</fr:uri>
            <fr:display-uri>loc-002A</fr:display-uri>
            <fr:route>/forest/loc-002A/</fr:route>
            <fr:title text="Church Music Corner › 23rd Sunday after Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 23rd Sunday after Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Dicit Dóminus: Ego cógito cogitatiónes pacis, et non afflictiónis: invocábitis me, et ego exáudiam vos: et redúcam captivitátem vestram de cunctis locis.
</html:blockquote>
<html:p>This Sunday we were few in numbers at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> but we sang well for Anna Þorvaldsdottir's <fr:link href="https://www.youtube.com/watch?v=seAPOVymx_k" type="external">Heyr þú oss himnum á</fr:link>, doing our best at the Icelandic pronunciation:</html:p>
  <html:blockquote>
    
  <html:table>
      
  <html:tr>
      
  <html:td>Heyr þú oss himnum á</html:td>

      
  <html:td>Hear us in heaven,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>hýr vor faðir, börn þín smá,</html:td>

      
  <html:td>loving Father, as we, your small children,</html:td>

      </html:tr>

  <html:tr>
      
  <html:td>lukku oss þar til ljá,</html:td>

      
  <html:td>ask for the fortune</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>lif eilíft þér erfum hjá,</html:td>

      
  <html:td>to receive eternal life.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>og að þér aldrei flæmumst frá.</html:td>

      
  <html:td>We shall not stray from your path.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Þitt ríki þróist hér</html:td>

      
  <html:td>May we help your kingdom</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>það þín stjórn og kristni er,</html:td>

      
  <html:td>to grow here on earth.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>svo að menn sem flestir,</html:td>

      
  <html:td>Following your guidance,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>safnist, Guð, til handa þér,</html:td>

      
  <html:td>we gather around in your name</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>fegin yfir því fögnum vér.</html:td>

      
  <html:td>and gladly celebrate.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Síst skarta sönglist má,</html:td>

      
  <html:td>We cannot make a joyful song</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>sé þar ekki elskan hjá,</html:td>

      
  <html:td>unless we are moved by love.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>syngjum þvi þýtt lof þá,</html:td>

      
  <html:td>So let us sing our gentle praise</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Þér, Guð drottinn, himnum á.</html:td>

      
  <html:td>to you, Lord God, in heaven,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Maður rétt kristinn mun þess gá.</html:td>

      
  <html:td>as the truly faithful have done.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>En þegar aumir vér,</html:td>

      
  <html:td>When our poor souls</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>öndumst burt úr heimi hér,</html:td>

      
  <html:td>pass away from this world,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>oss tak þá, Guð, að þér</html:td>

      
  <html:td>take us God to you,</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>í þá dýrð, sem aldrei þver.</html:td>

      
  <html:td>into your everlasting glory.</html:td>

    </html:tr>

  <html:tr>
      
  <html:td>Amen, Amen, það eflaust sker.</html:td>

      
  <html:td>Amen, Amen, may this be done.</html:td>

    </html:tr>

  </html:table>

</html:blockquote>
<html:p>We also are going to be thin on numbers for Christ the King next week, and I will be directing. I welcome any anthem suggestions that aren't too reliant on sopranos in particular.
</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>11</fr:month>
          <fr:day>9</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W45/</fr:uri>
        <fr:display-uri>2025-W45</fr:display-uri>
        <fr:route>/forest/2025-W45/</fr:route>
        <fr:title text="Weeknotes 2025-W45">Weeknotes 2025-W45</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was mostly occupied with various administrative catchups after my two weeks of leave.  </html:p>
        <html:figure><html:img loading="lazy" width="240px" src="/forest/bafkrmihv3rp62dfl36mvy53ekgm4vv63nmwifwozsidpyc7tnjzuk7ziwa.jpeg" />
  <html:img loading="lazy" width="240px" src="/forest/bafkrmid5uqgbovckq3i4pnbnxutclhaqdq6ot55rjf7axvsi5h376wef3i.jpeg" />
 <html:figcaption>Some nice sunsets near the Lyneham wetlands.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>9</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0028/</fr:uri>
            <fr:display-uri>loc-0028</fr:display-uri>
            <fr:route>/forest/loc-0028/</fr:route>
            <fr:title text="ITP course at the ANU Logic Summer School">ITP course at the ANU Logic Summer School</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>As <fr:link href="/forest/loc-001W/" title="ANU Logic Summer School 2025" uri="https://liamoc.net/forest/loc-001W/" display-uri="loc-001W" type="local">I previously mentioned</fr:link>, I am teaching at the ANU Logic Summer School this year, on an introduction to interactive theorem proving using the proof assistant <fr:link href="https://isabelle.in.tum.de/" type="external">Isabelle</fr:link>. Here's the course blurb as found on <fr:link href="https://comp.anu.edu.au/lss/lectures/2025/" type="external">the website</fr:link>:</html:p>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>11</fr:month>
                  <fr:day>9</fr:day>
                </fr:date>
                <fr:title text="Abstract">Abstract</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>This course will introduce the use of interactive proof assistants both for mathematics and for work in software verification. We will introduce the basics of interactive theorem proving using the proof assistant Isabelle/HOL. Starting from elementary logical formulae, we will prove many theorems “live” in lectures, and apply what we have learned to proof exercises and challenges. Proof assistants can be both very fun and very addictive in equal measure. It is my hope to share that fun with you.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>11</fr:month>
                  <fr:day>9</fr:day>
                </fr:date>
                <fr:title text="Topic list (tentative)">Topic list (tentative)</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:ol><html:li>Propositional and first-order logic, natural deduction proofs. Types, definitions, unfolding.</html:li>
    <html:li>Simplifier, rewriting, function definitions, other definitions.</html:li>
    <html:li>Structural induction, inductive definitions, induction tactics.</html:li>
    <html:li>Structured proofs in Isar, calculational proofs.</html:li>
    <html:li>More automatic methods, sledgehammer.</html:li></html:ol>
                <html:p>Remaining topics to be covered if there is time:</html:p>
                <html:ul><html:li>General recursion and termination measures</html:li>
    <html:li>Type classes and locales</html:li>
    <html:li>Program verification with SIMPL or AutoCorres</html:li>
    <html:li>Designing tactics with Eisbach</html:li></html:ul>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>11</fr:month>
                  <fr:day>9</fr:day>
                </fr:date>
                <fr:title text="Prerequisites">Prerequisites</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>Some familiarity with simple first order and propositional logic is assumed. Some functional programming experience (in particular, some familiarity with lambda calculus or a language like Haskell) is also recommended.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>11</fr:month>
                  <fr:day>9</fr:day>
                </fr:date>
                <fr:title text="Recommended Further Reading">Recommended Further Reading</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p><fr:link href="http://concrete-semantics.org/" type="external">Concrete Semantics</fr:link>, <fr:link href="/forest/nipkow/" title="Tobias Nipkow" uri="https://liamoc.net/forest/nipkow/" display-uri="nipkow" type="local">Tobias Nipkow</fr:link> and <fr:link href="/forest/gklein/" title="Gerwin Klein" uri="https://liamoc.net/forest/gklein/" display-uri="gklein" type="local">Gerwin Klein</fr:link></html:p>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>11</fr:month>
                  <fr:day>9</fr:day>
                </fr:date>
                <fr:title text="Lecturer">Lecturer</fr:title>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p><fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link> is a Senior Lecturer at the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">Australian National University</fr:link> and an Honorary Fellow at the <fr:link href="/forest/uoe/" title="University of Edinburgh" uri="https://liamoc.net/forest/uoe/" display-uri="uoe" type="local">University of Edinburgh</fr:link>, where he worked until 2024. He obtained his PhD from UNSW in 2019, the <fr:link href="/forest/oconnor-thesis-2019/" title="Type Systems For Systems Types" uri="https://liamoc.net/forest/oconnor-thesis-2019/" display-uri="oconnor-thesis-2019" type="local">dissertation</fr:link> for which received the John Makepeace Bennett award. He has broad interests in theoretical computer science, especially in semantics, models and specifications, as well as in the application of these theoretical techniques to practical problems in programming languages, systems and software engineering.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <html:p>I will also make the <fr:link href="/forest/isa-0001/" title="Interactive theorem proving" uri="https://liamoc.net/forest/isa-0001/" display-uri="isa-0001" type="local">course notes</fr:link> available on this forest, as they are completed.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>9</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0029/</fr:uri>
            <fr:display-uri>loc-0029</fr:display-uri>
            <fr:route>/forest/loc-0029/</fr:route>
            <fr:title text="Syntax Highlighting in Forester for Isabelle (and More)">Syntax Highlighting in Forester for Isabelle (and More)</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p>Similar to my <fr:link href="/forest/loc-0015/" title="Gregorian Chants in Forester" uri="https://liamoc.net/forest/loc-0015/" display-uri="loc-0015" type="local">theme plugin for Gregorian Chants</fr:link>, I've implemented a simple plugin for syntax highlighted blocks using the <fr:link href="https://shiki.style/" type="external">Shiki</fr:link> library. Unlike the chant plugin, it doesn't self-host all the required JS but instead loads from a CDN. If this becomes problematic later I will investigate self-hosting it, but it seems that self-hosting Shiki is somewhat complicated. </html:p><html:p>I didn't use any other syntax-highlighting gizmos for Forester because I plan to write <fr:link href="/forest/isa-0001/" title="Interactive theorem proving" uri="https://liamoc.net/forest/isa-0001/" display-uri="isa-0001" type="local">lecture notes</fr:link> for my upcoming <fr:link href="/forest/loc-0028/" title="ITP course at the ANU Logic Summer School" uri="https://liamoc.net/forest/loc-0028/" display-uri="loc-0028" type="local">course at the LSS</fr:link> and this would require me to support Isabelle code. The advantage of Shiki is that it supports textMate grammars, and <fr:link href="/forest/gklein/" title="Gerwin Klein" uri="https://liamoc.net/forest/gklein/" display-uri="gklein" type="local">Gerwin Klein</fr:link> made <fr:link href="https://github.com/lsf37/Isabelle.tmbundle" type="external">one for Isabelle</fr:link>.</html:p><html:p>Like the chant plugin, it consists of a single drop-in module of JavaScript, some changes to the stylesheet and a macro definition tree. As can be seen below, the results are quite nice:</html:p>

<html:shiki-block language="Isabelle Theory" load-languages="c,javascript" root-path="/forest">theory Main imports Pure 
begin
typedecl bool
judgment Trueprop :: ‹bool ⇒ prop› ("(_)" 5)

axiomatization
  False :: ‹bool› and True :: ‹bool› and
  conj :: ‹bool ⇒ bool ⇒ bool› (infixr "∧" 35) and
  disj :: ‹bool ⇒ bool ⇒ bool› (infixr "∨" 30) and
  implies :: ‹bool ⇒ bool ⇒ bool› (infixr "⟶" 25) and
  not :: ‹bool ⇒ bool› ("¬ _" [40] 40)
where
  (* Conjunction *)
  conjI  : "⟦ A ; B ⟧ ⟹ (A ∧ B)" and
  conjunct1 : "A ∧ B ⟹ A" and
  conjunct2 : "A ∧ B ⟹ B"
end</html:shiki-block>

<html:p>(If it doesn't display correctly, you may need to clear your browser cache.)</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>9</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0027/</fr:uri>
            <fr:display-uri>loc-0027</fr:display-uri>
            <fr:route>/forest/loc-0027/</fr:route>
            <fr:title text="Church Music Corner › 22nd Sunday after Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 22nd Sunday after Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Intret orátio mea in conspéctu tuo: inclína aurem tuam ad precem meam Dómine.
</html:blockquote>
<html:p>This Sunday I directed our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> for Purcell's <fr:link href="https://www.youtube.com/watch?v=ACqaMARAmZk" type="external">Thou Knowest, Lord</fr:link>:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Thou knowest, Lord, the secrets of our hearts:</html:td></html:tr>
    <html:tr><html:td>Shut not, shut not thy merciful ears unto our prayer,</html:td></html:tr>
    <html:tr><html:td>But spare us, Lord. Spare us, Lord most holy.</html:td></html:tr>
    <html:tr><html:td>O God! O God most mighty! O holy and merciful Saviour,</html:td></html:tr>
    <html:tr><html:td>Thou most worthy judge eternal,</html:td></html:tr>
    <html:tr><html:td>Suffer us not, suffer us not at our last hour,</html:td></html:tr>
    <html:tr><html:td>For any pains of death to fall from thee.</html:td></html:tr>
    <html:tr><html:td>Amen.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>We also had a brief meeting yesterday morning to discuss our future plans for the choir. We have some exciting music ahead, and some of us agreed to sing at a special service at Goodwin Retirement Living for the residents there during Advent. Next year at the church, we plan to have semi-regular concerts, and I will also be forming a small group to sing regular Evensong services.
</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>11</fr:month>
          <fr:day>2</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W44/</fr:uri>
        <fr:display-uri>2025-W44</fr:display-uri>
        <fr:route>/forest/2025-W44/</fr:route>
        <fr:title text="Weeknotes 2025-W44">Weeknotes 2025-W44</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This is my first week back to weeknoting in about a month, seeing as I was first travelling to Singapore for <fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP</fr:link> and then subsequently took two weeks off to spend some time with my partner, who was visiting from Korea.</html:p>
        <html:figure><html:img loading="lazy" width="240px" src="/forest/bafkrmigley2pmvvgwfwa6cwxe5uk57yenyzm3iahsojioisz7hn7sm7bmi.jpeg" />
  <html:img loading="lazy" width="240px" src="/forest/bafkrmigwirph3k6hco3pdewhwmdwa3nyxyb2apy2ieqqhtyn7eqwuzdanq.jpeg" />
 <html:figcaption>One of many Water Dragons seen at Manly, and one of many Kangaroos seen at Tidbinbilla.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>2</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0026/</fr:uri>
            <fr:display-uri>loc-0026</fr:display-uri>
            <fr:route>/forest/loc-0026/</fr:route>
            <fr:title text="ICFP/SPLASH 2025 is over">ICFP/SPLASH 2025 is over</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure><html:img loading="lazy" width="450px" src="/forest/bafkrmifhqls6h45j4q43q27okeghsenovxudrvovpnujrzggjnavhyupsu.jpeg" />
  <html:img loading="lazy" width="250px" src="/forest/bafkrmiahbkxpl2nirzstpakuzrjsvfvwvcp72rzzwx33usa3aogriqemlu.jpeg" />
  <html:figcaption>I was in character as Br. Alonzo of Curry for the ICFP Contest Report.</html:figcaption></html:figure>
            <html:p>From the 10th to the 19th of October I was travelling, specifically to Singapore to present the results of the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link>.
 As seems to almost always happen, the Japanese team Unagi (and another Japanese team, MOYOU) won the contest, using their preferred programming language Rust. Also as in most years, most solutions used SAT encodings, simulated annealing, or other such methods. Some teams did use automata learning (as our reference solution did), but this was uncommon. The <fr:link href="https://icfpcontest2025.github.io/writeups.html" type="external">writeups page</fr:link> has many more details, including an in-character personal reflection by Adso.
</html:p>
            <html:p> The conference was indeed massive, and it was good to catch up with many folks that I know (such as <fr:link href="/forest/gckeller/" title="Gabriele Keller" uri="https://liamoc.net/forest/gckeller/" display-uri="gckeller" type="local">Gabriele Keller</fr:link>, <fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine Rizkallah</fr:link>, <fr:link href="/forest/zilinc/" title="Zilin Chen" uri="https://liamoc.net/forest/zilinc/" display-uri="zilinc" type="local">Zilin Chen</fr:link> and <fr:link href="/forest/msteuwer/" title="Michel Steuwer" uri="https://liamoc.net/forest/msteuwer/" display-uri="msteuwer" type="local">Michel Steuwer</fr:link>), but I must say that I found few talks or papers that I actually found noteworthy or compelling. Perhaps the most interesting was the few papers and presentations I saw given by <fr:link href="/forest/antonlorenzen/" title="Anton Lorenzen" uri="https://liamoc.net/forest/antonlorenzen/" display-uri="antonlorenzen" type="local">Anton Lorenzen</fr:link>. I'm sure this is more a problem with me than with the authors, all of which I'm sure have produced very good work, except of course for the <fr:link href="https://conf.researchr.org/home/icfp-splash-2025/lmpl-2025" type="external">LMPL Workshop</fr:link> which promotes use of <fr:link href="/forest/loc-001H/" title="Open Letter against LLMs in Education" uri="https://liamoc.net/forest/loc-001H/" display-uri="loc-001H" type="local">the dreaded LLMs</fr:link> in PL research. I studiously avoided attending that, and was pleased to find some likeminded colleagues.  </html:p>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmigcinx7z2fya4637s6j2lqoumnxkqamznyxmmcn4te4mkpefbxo54.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmibps62x7cgjw352cjwko4ejazcjpmpdcoafjmyuf5wedjn5adrglq.jpeg" />
  <html:figcaption>Some night time wanderings of Singapore.</html:figcaption></html:figure>
            <html:p>While I love to eat the food in Singapore, I always find the weather almost unbearable. I try to do what locals do, and transit via underground and indoor connections between buildings, but I inevitably end up having to walk for 10–20 minutes outside and end up feeling horribly <html:em>wet</html:em> from a mixture of humidity and sweat. Nonetheless, I thank very much <fr:link href="/forest/ilyasergey/" title="Ilya Sergey" uri="https://liamoc.net/forest/ilyasergey/" display-uri="ilyasergey" type="local">Ilya Sergey</fr:link> and the others who organised the event, and arranged for me to travel there and present.</html:p>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmidm5d2e56umu7iqbf7xzfb7y42lojouoqc5i6rb7tuu6iupkocpli.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmie5ekdt47a3zw3duuxmroc6kvveid2kjrnji66obbh67shjbclt6u.jpeg" /></html:figure>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>10</fr:month>
              <fr:day>19</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0024/</fr:uri>
            <fr:display-uri>loc-0024</fr:display-uri>
            <fr:route>/forest/loc-0024/</fr:route>
            <fr:title text="Church Music Corner › 19th Sunday after Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 19th Sunday after Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Ego clamávi quóniam exaudísti me, Deus: inclína aurem tuam, et exáudi verba mea: custódi me, Dómine, ut pupíllam óculi: sub umbra alárum tuárum prótege me.
</html:blockquote>
<html:p>I had just flown back from Singapore, so I wasn't able to be present for <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> singing Tallis' <html:em>Hear the voice and prayer</html:em> but I did record myself singing all parts to it a week earlier before I flew out: </html:p><html:iframe style="aspect-ratio: 16 / 9;" width="100%
   " src="https://www.youtube.com/embed/8KXemDXXjzM" title="Hear the Voice and Prayer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" />
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Hear the voice and prayer of thy servants,</html:td></html:tr>
    <html:tr><html:td>that they make before thee this day:</html:td></html:tr>
    <html:tr><html:td>That thine eyes may be open towards this house night and day,</html:td></html:tr>
    <html:tr><html:td>Ever towards this place, ever towards this place</html:td></html:tr>
    <html:tr><html:td>Of which thou hast said "My name shall be there".</html:td></html:tr>
    <html:tr><html:td>And when thou hear'st, have mercy on them.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>I had just flown into Sydney and coming down with a cold from a nightmare flight, but I was still able to stop by <fr:link href="https://ccsl.org.au/" type="external">Christ Church St. Laurence</fr:link> for their Solemn High Mass. It was a lovely high church service. I wish we were as liturgically refined in Canberra. The Choir performed most of G.P. da Palestrina's <fr:link href="https://www.youtube.com/watch?v=825kfMgCZAk" type="external">Missa Aeterna Christi Munera</fr:link>, which is based on the eponymous Gregorian Chant melody, and Vaughan William's <fr:link href="https://www.youtube.com/watch?v=heiiATCrwVQ" type="external">O Taste and See</fr:link>.</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>10</fr:month>
              <fr:day>26</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0025/</fr:uri>
            <fr:display-uri>loc-0025</fr:display-uri>
            <fr:route>/forest/loc-0025/</fr:route>
            <fr:title text="Church Music Corner › 20th Sunday after Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 20th Sunday after Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Lætétur cor quæréntium Dóminum: quaérite Dóminum, et confirmámini: quaérite fáciem eius semper.
</html:blockquote>
<html:p>While I was still recovering from a cold, I sang with our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> for Anerio's gorgeous piece, <fr:link href="https://www.youtube.com/watch?v=fArGQY_wvmA" type="external">Christus Factus Est</fr:link> (although the initial gorgeous passage is very reminiscent of <fr:link href="https://www.youtube.com/watch?v=OZ9dXLmRlpo" type="external">another piece</fr:link>).</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Christus factus est pro nobis obédiens</html:td>

    
  <html:td>Christ became obedient for us,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>usque ad mortem:</html:td>

    
  <html:td>Even unto death:</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Mortem autem crucis.</html:td>

    
  <html:td>Death on the cross.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Propter quod et Deus exaltavit illum</html:td>

    
  <html:td>Wherefore God has exalted him,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Et dedit illi nomen quod est super omne nomen.</html:td>

    
  <html:td>And given him a name above all other names.</html:td>

  </html:tr>

</html:table>

</html:blockquote>
<html:p>The Anerio was unaccompanied, and we had only piano accompaniment for the other music. Still, we sounded very nice I think.</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>11</fr:month>
              <fr:day>2</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0023/</fr:uri>
            <fr:display-uri>loc-0023</fr:display-uri>
            <fr:route>/forest/loc-0023/</fr:route>
            <fr:title text="Church Music Corner › All Saints 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › All Saints 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Gaudeamus omnes in Dómino, diem festum celebrántes sub honóre Sanctórum ómnium: de quorum solemnitáte gaudent Angeli, et colláudant Fílium Dei.
</html:blockquote>
<html:p>Because this was the dedication feast for <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link>, we sang Darke's <fr:link href="https://www.youtube.com/watch?v=9_YotRZXipY&amp;list=OLAK5uy_m_gU2ydx02FIjTPG8WO8odyEqYLZY9jHc" type="external">Communion Service in F Major</fr:link> as well as <fr:link href="https://www.youtube.com/watch?v=1Pc41lxwd7k" type="external">I Sat Down</fr:link> by John Bairstow, with text taken from the Song of Solomon:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>I sat down under his shadow with great delight,</html:td></html:tr>
    <html:tr><html:td>and his fruit was sweet to my taste.</html:td></html:tr>
    <html:tr><html:td>He brought me to the banqueting house, and his banner over me was Love.</html:td></html:tr>
    <html:tr><html:td>I sat down under his shadow.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>We also had a small celebration of our choir and sanctuary party at Corroboree park in Ainslie.</html:p><html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmiebrmzn35segzvbyed2hw5jgykn64rbep2wf4i3zhtew2xevow2la.jpeg" />
  <html:figcaption>Fr. Alipate works for over an hour at the barbeque.</html:figcaption></html:figure><html:p>We were blessed with a gorgeous sunset to conclude the evening.</html:p><html:figure><html:img loading="lazy" width="240px" src="/forest/bafkrmih3exhnt7n3jg455rs3fmu42f73lklm3ifdalneuw5ej7gpuztekm.jpeg" />
  <html:img loading="lazy" width="240px" src="/forest/bafkrmic4pq3sh7eowb4sojkkpy3wena4ppvfjw24qgny6qptaqntdk3ivm.jpeg" />
  <html:img loading="lazy" width="240px" src="/forest/bafkrmidph7czj6o7cycncokuzhv3fkbn3wbtxpfdkxelqnh3zwp6ueoyt4.jpeg" /></html:figure></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>10</fr:month>
          <fr:day>5</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W40/</fr:uri>
        <fr:display-uri>2025-W40</fr:display-uri>
        <fr:route>/forest/2025-W40/</fr:route>
        <fr:title text="Weeknotes 2025-W40">Weeknotes 2025-W40</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was also productive, but mostly in my preparations for <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> and for attending the megaconference in Singapore next week.</html:p>
        <html:figure><html:img loading="lazy" width="540px" src="/forest/bafkrmichangw7ywgzrdtfqz4ff6c35us3cc52bsojcmux7eke733j44dpa.jpeg" />
 <html:figcaption>A Kookaburra I spied on the walk home.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:uri>https://liamoc.net/forest/loc-0022/</fr:uri>
            <fr:display-uri>loc-0022</fr:display-uri>
            <fr:route>/forest/loc-0022/</fr:route>
            <fr:title text="Quid est veritas?">Quid est veritas?</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I've been reading <fr:link href="/forest/eco/" title="Umberto Eco" uri="https://liamoc.net/forest/eco/" display-uri="eco" type="local">Umberto Eco</fr:link>'s <html:em>Baudolino</html:em> recently. It's the story of a man, the eponymous Baudolino, narrating his life story to Niketas Choniates during the Fourth Crusade. Here "story" is used both in the sense of a recounting of events, but also in the sense of a storyteller, a fabulist. Baudolino isn't sure, even to himself, where reality ends and his imagination begins. He is a liar, and in lying he speaks of greater truths. </html:p>
            <html:p>This novel (which I highly recommend, by the way) represents to a far greater degree the medieval and even classical understanding of truth and history than do contemporary definitions. The ancient Greeks knew that the Iliad or the Odyssey were stories, fabrications of Homer or of countless storytellers before him and since, yet, they referred often to events in those stories as though they actually happened (and, presumably, some of them had), and to characters in those stories as though they actually existed (and, presumably, some of them did). Herodotus, regarded as the first historian, was also prone to elaborate creative embellishment of historical events, usually to paint the Greeks as the good guys and their enemies, usually the Persians, as the bad guys. Herodotus did this openly; his audience <html:em>expected</html:em> embellishment and would not have been impressed by a dry recital of facts.</html:p>
            <html:figure><html:img loading="lazy" width="540px" src="/forest/bafkrmifdv2cw2xcfnxto5llz5wizxbmcsboztt5j4inwsthslwguejvfmy.jpeg" />
 <html:figcaption>From the Waldseemüller map of 1507, the first to name America: <html:em>"Hic dominátur ille bonus rex et dominus qui vocatur Prester Iohannes"</html:em>.</html:figcaption></html:figure>
            <html:p>Similarly, up until the late 16th century, even the most learned scholar (and <fr:link href="/forest/eco/" title="Umberto Eco" uri="https://liamoc.net/forest/eco/" display-uri="eco" type="local">Eco</fr:link>'s Baudolino) would speak of the Kingdom of Prester John, a supposedly Nestorian Christian empire far to the East, or possibly South, or anywhere where European Christians had not thoroughly explored. These were fabrications, of course, or at least interpolations based on poorly communicated rumours and legends, but European Christians believed these things as firmly as they believed in the existence of elephants, or of God, or of Julius Caesar, or anything else they didn't observe first-hand. Almost their entire view of the world was based on hearsay, fabrication, and interpolation from available information, and they knew this. They believed it anyway, in a semi-firm way that isn't familiar or comfortable to modern humans. For our ancestors, belief was elastic; for us, it is binary: true or false.</html:p>
            <html:p>I think our society really began to depart from this more elastic way of thinking in the Enlightenment era: the scientific revolution, the classical insistence on the dichotomy between truth and falsehood, the empirical notion that truth requires evidence, and the positivistic view that a proposition, once shown to be true, is never again false. These ways of thinking have proved enormously beneficial in the area of science and technology, to be sure, but I think this is also responsible in part for many overly rigid belief structures, including religious fundamentalism. It's the result of a pre-Enlightenment cognitive technology (religion) coming into contact with this post-Enlightenment way of thinking. At worst, it leads to ultra-dogmatic religion where religious dogmas are declared to be infallible truths, including fundamentalists who interpret the Bible literally. At best, it leads to pathetic attempts to justify religion on scientific terms, like asking scientists to analyse consecrated Eucharistic hosts to check for human tissue cells.</html:p>
            <html:p>Just by reading my <fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link>, you might get the impression that I am a devout Roman Catholic or Anglo-Catholic Christian. In a sense, that is true (as for which of these I am, that's a topic best left to another time). But my faith is much more akin to that of the medieval scholar than that of a modern empirical scientist. The question of whether the life of Jesus as told in the Gospels actually happened as described is almost irrelevant to me. In fact, as the Gospels do not tell a consistent narrative, one can only conclude that they too are at best interpolations based on hearsay. The Gospel of Luke lists many more parables of Jesus than are listed in the other Gospels: even if they are fabrications of the evangelist, I believe them to be parables of Jesus all the same.</html:p>
            <html:center>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Visus, tactus, gustus in te fallitur,</html:td>

    
  <html:td>Seeing, touching, tasting are in thee deceived,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Sed auditu solo tuto creditur.</html:td>

    
  <html:td>How says trusty hearing? That shall be believed.</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Credo quidquid dixit Dei Filius;</html:td>

    
  <html:td>What God's Son has told me, take for truth I do;</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Nil hoc verbo Veritátis verius.</html:td>

    
  <html:td>Truth himself speaks truly, or there's nothing true.</html:td>

  </html:tr>

</html:table>

</html:blockquote>

<html:p>From Thomas Aquinas' <html:em>Adoro te Devote</html:em>, translation by Gerard Manley Hopkins.</html:p>
</html:center>
            <html:p>Requiring evidence as a prerequisite for belief is <html:em>not</html:em> mistaken — it is just misapplied when it comes to religion. I don't look for proof that my religion is true in the modern, empirical sense. I don't know if it is. At least in some aspect or another, it's almost certainly <html:em>not</html:em>. But this question is also irrelevant to me: Truth, in this older sense, is not about evidence but about meaning. My faith is an affirmation not of a proposition but a way of inhabiting the world. Even if I was presented with concrete evidence that the Gospels are complete fabrications and that Jesus never existed (although Occam's razor suggests that he did), my faith would scarcely change. Can I still rightly say then, <html:em>Credo in unum Deum</html:em>, as I do each Sunday? All I can say is, I don't feel as though I'm lying.  </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>10</fr:month>
              <fr:day>5</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0021/</fr:uri>
            <fr:display-uri>loc-0021</fr:display-uri>
            <fr:route>/forest/loc-0021/</fr:route>
            <fr:title text="Church Music Corner › Feast of St. Francis of Assisi 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Feast of St. Francis of Assisi 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  In voluntáte tua, Dómine, univérsa sunt pósita, et non est qui possit resístere voluntáti tuæ: tu enim fecísti ómnia, cælum et terram, et univérsa quæ cæli ámbitu continéntur: Dóminus universórum tu es.
  <html:br />
  Vir Dei Francíscus relíquit domum suam, dimísit hereditátem suam, inops et pauper factus est; Dóminus autem assúmpsit eum.
</html:blockquote>
<html:p>Our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was in thin numbers but we lovingly performed Lloyd's <fr:link href="https://www.youtube.com/watch?v=n4XdIWfdmlo" type="external">View Me, Lord</fr:link>, under my baton (well, hand). It's a lovely poem from Thomas Campion:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>View me, Lord, a work of thine.</html:td></html:tr>
    <html:tr><html:td>Shall I then lie drown'd in night?</html:td></html:tr>
    <html:tr><html:td>Might thy grace in me but shine,</html:td></html:tr>
    <html:tr><html:td>I should seem made all of light.<html:br /></html:td></html:tr>
    <html:tr><html:td>Cleanse me, Lord, that I may kneel</html:td></html:tr>
    <html:tr><html:td>At thine altar, pure and white.</html:td></html:tr>
    <html:tr><html:td>They that once thy mercies feel</html:td></html:tr>
    <html:tr><html:td>gaze no more on Earth's delight.<html:br /></html:td></html:tr>
    <html:tr><html:td>Worldly joys, like shadows, fade</html:td></html:tr>
    <html:tr><html:td>When the heav'nly light appears;</html:td></html:tr>
    <html:tr><html:td>But the cov'nants thou hast made,</html:td></html:tr>
    <html:tr><html:td>Endless, know not days nor years.<html:br /> </html:td></html:tr>
    <html:tr><html:td>In thy word, Lord, is my trust;</html:td></html:tr>
    <html:tr><html:td>To thy mercies fast I fly.</html:td></html:tr>
    <html:tr><html:td>Though I am but clay and dust,</html:td></html:tr>
    <html:tr><html:td>Yet thy grace can lift me high.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>We got many complements after the service and during the rehearsal.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>9</fr:month>
          <fr:day>28</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W39/</fr:uri>
        <fr:display-uri>2025-W39</fr:display-uri>
        <fr:route>/forest/2025-W39/</fr:route>
        <fr:title text="Weeknotes 2025-W39">Weeknotes 2025-W39</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was productive, including in meetings with <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link>, <fr:link href="/forest/yiyao/" title="Yi Yao" uri="https://liamoc.net/forest/yiyao/" display-uri="yiyao" type="local">Yi Yao</fr:link>, and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link>. I also attended a choir planning meeting yesterday. We have many concerts and services planned for next year!</html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>28</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0020/</fr:uri>
            <fr:display-uri>loc-0020</fr:display-uri>
            <fr:route>/forest/loc-0020/</fr:route>
            <fr:title text="The benefits of avoiding cars">The benefits of avoiding cars</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>When I lived in Edinburgh my "commute" consisted of a 10 minute walk through the lovely Meadows parkland to get from my apartment to the Informatics Forum. Sometimes I'd have to cross the dreaded North Bridge or the crowded Nicolson street, and I would always find myself feeling overwhelmed and stressed. But, the walk through the Meadows was always healing — or, failing that, it never added to my stress.</html:p>
            <html:p>When I moved to Canbera, I first lived in Braddon. Like at Edinburgh, or indeed my time at <fr:link href="/forest/unsw/" title="UNSW Sydney" uri="https://liamoc.net/forest/unsw/" display-uri="unsw" type="local">UNSW Sydney</fr:link>, my commute was just a 10–15 minute walk. Yet, unlike at Edinburgh, I would often find the walk stress-inducing.</html:p>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmibpnrv56se6atpimpcrznqcwemp5cdysj6lsr5ogvbiw5vhrqiitm.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmiboizuctz26cujc6t6xbsnjgn4pwdwjwtgox7b4knnjrib2je3z2e.jpeg" />
  <html:figcaption>Some shots from my new commute.</html:figcaption></html:figure>
            <html:p>Since I've <fr:link href="/forest/loc-001O/" title="I'm moving to Dickson" uri="https://liamoc.net/forest/loc-001O/" display-uri="loc-001O" type="local">moved to Dickson</fr:link>, my commutes have gotten much longer — a 40–45 minute walk from my home along a bike path through the Lyneham wetlands and other beautiful natural parkland. Similarly, the walk from my home to my church is slightly longer, but significantly quieter, following bike paths and sleepy suburban streets. This walk is <html:em>significantly</html:em> more mentally healing to me than the shorter commute I had before, and helps me to relieve stress rather than accumulate it. </html:p>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmiajtrueovwpnll5gzwrabavfgvdxqmpi2nx7cqmnnvsypxsbw6nru.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmibp6nl72gf4z34gbrwb75ann76tmfrclffslnchwumvujmn3xadei.jpeg" />
  <html:figcaption>Some parrots I met along the way.</html:figcaption></html:figure>
            <html:p>The main difference is simple: The walk this time passes through mostly parkland, and, for the most part, is not along a road. The noisy cars and, annoyingly common in Canberra, roaring motorbikes of the city traffic are distant, usually inaudible, and in their place I have some stunning natural landscapes and many colourful parrots to greet on my walk to work. </html:p>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmiavz435te7sbck5u64qpsuzy5w4cjpv75zu2aholz2ddpa2iz7tfy.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmigix2pe3hpczdtdd5g7ievvks2rymrtrmkdacxpq5g7fi6q5w3fsa.jpeg" />
  <html:figcaption>Sunset over the Lyneham Wetlands.</html:figcaption></html:figure>
            <html:p>I think car-centric cities are one of the worst mistakes humanity has made in terms of societal engineering. I hate cars. Please get rid of all the cars.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>28</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001Z/</fr:uri>
            <fr:display-uri>loc-001Z</fr:display-uri>
            <fr:route>/forest/loc-001Z/</fr:route>
            <fr:title text="Church Music Corner › 16th Sunday after Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 16th Sunday after Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  In nómine Dómini omne genu flectátur, cæléstium, terréstrium et infernórum: quia Dóminus factus obédiens usque ad mortem, mortem autem crucis: ídeo Dóminus Iesus Christus in glória est Dei Patris.
  <html:br />
  Omnia quæ fecísti nobis, Dómine, in vero iudício fecísti, quia peccávimus tibi, et mandátis tuis non obedívimus: sed da glóriam nómini tuo, et fac nobíscum secúndum multitúdinem misericórdiæ tuæ.
</html:blockquote>
<html:p> I filled in as director of our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> today for our performance of Dubois' <fr:link href="https://www.youtube.com/watch?v=nBBOWSxsbQg" type="external">Ave Maria</fr:link>. I am getting more comfortable conducting us. I will be conducting again for next week's service as well.</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Ave María, gratia plena, Dóminus tecum.</html:td>

    
  <html:td>Hail Mary, full of grace, the Lord is with thee.</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Benedícta tu in muliéribus et benedíctus fructus ventris tui, Jesus.</html:td>

    
  <html:td>Blessed art thou among women, and blessed is the fruit of your womb, Jesus.</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Sancta María, mater Dei, ora pro nobis peccatóribus,</html:td>

    
  <html:td>Holy Mary, mother of God, pray for us sinners,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Nunc et in hora mortis nostræ. Amen.</html:td>

    
  <html:td>Now and at the hour of our death. Amen.</html:td>

  </html:tr>

  </html:table>

</html:blockquote>
<html:p>I think this week's service went really well. Congratulations to all involved!</html:p><html:p>I'm no longer attending Evensongs at St. Paul's or St. John's because it's now too far from my home in Dickson. Hopefully we can start some more frequent Evensong services at All Saints. </html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>9</fr:month>
          <fr:day>21</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W38/</fr:uri>
        <fr:display-uri>2025-W38</fr:display-uri>
        <fr:route>/forest/2025-W38/</fr:route>
        <fr:title text="Weeknotes 2025-W38">Weeknotes 2025-W38</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>Because of my trip to Portugal (details below), I wasn't able to write weeknotes for the past two weeks, so I'm catching up here.</html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>16</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001U/</fr:uri>
            <fr:display-uri>loc-001U</fr:display-uri>
            <fr:route>/forest/loc-001U/</fr:route>
            <fr:title text="IFIP WG2.1 Meeting  #83">IFIP WG2.1 Meeting <![CDATA[ #]]>83</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure><html:img loading="lazy" width="193px" src="/forest/bafkrmidjmrfktlb7yc3zq5vfspx5ggvve4salshxwjzuebc7fbek6efdui.jpeg" />
  <html:img loading="lazy" width="193px" src="/forest/bafkrmidh3u2msl5emocb4tqhvub4nz2sbeoh7ulvcwkuxzvwmoeajlzn5a.jpeg" />
  <html:img loading="lazy" width="193px" src="/forest/bafkrmihckc3tqrlzo5jtimnotoz6wjmcoc6nwuih6xallroomlae556m6a.jpeg" /></html:figure>
            <html:p>Last week I attended the meeting of <fr:link href="/forest/wg21/" title="IFIP Working Group 2.1: Algorithmic Languages and Calculi" uri="https://liamoc.net/forest/wg21/" display-uri="wg21" type="local">IFIP Working Group 2.1: Algorithmic Languages and Calculi</fr:link> in Viana do Castelo, Portugal. I think all members and observers agreed that it was a good meeting, with (perhaps overly) abundant food and good company. Thanks in particular to <fr:link href="/forest/jno/" title="José Nuno Oliveira" uri="https://liamoc.net/forest/jno/" display-uri="jno" type="local">José Nuno Oliveira</fr:link> for organising the meeting and to <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link> for  serving as chair of <fr:link href="/forest/wg21/" title="IFIP Working Group 2.1: Algorithmic Languages and Calculi" uri="https://liamoc.net/forest/wg21/" display-uri="wg21" type="local">WG2.1</fr:link> for the last six years.
</html:p>
            <html:p>Because this was my third meeting as an observer, I was eligible to be selected as an ongoing member of the group, and I'm happy to say that I was invited to become a member at the conclusion of this meeting. </html:p>
            <html:p>I presented some new work my student <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana</fr:link> and I did with <fr:link href="/forest/rvg/" title="Rob van Glabbeek" uri="https://liamoc.net/forest/rvg/" display-uri="rvg" type="local">Rob van Glabbeek</fr:link>, classifying monitorability classes topologically.</html:p>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>9</fr:month>
                  <fr:day>10</fr:day>
                </fr:date>
                <fr:uri>https://liamoc.net/forest/oconnor-2025-wg21/</fr:uri>
                <fr:display-uri>oconnor-2025-wg21</fr:display-uri>
                <fr:route>/forest/oconnor-2025-wg21/</fr:route>
                <fr:title text="Runtime monitoring via topology">Runtime monitoring via topology</fr:title>
                <fr:taxon>Reference</fr:taxon>
                <fr:meta name="venue"><fr:link href="/forest/wg21/" title="IFIP Working Group 2.1: Algorithmic Languages and Calculi" uri="https://liamoc.net/forest/wg21/" display-uri="wg21" type="local">IFIP Working Group 2.1: Algorithmic Languages and Calculi</fr:link> Meeting, Viana do Castelo, Portugal</fr:meta>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The literature on runtime “verification” (the activity of monitoring a running process to ensure compliance with a given specification) offers many different definitions of “monitorability” for properties. In a linear-time temporal setting, properties take the form of sets of behaviours (infinite sequences of states). In this talk, I will arrange the various monitorability classes found in the literature into a hierarchy along with well-known classes of properties such as safety and guarantee properties. I then give each of these monitorability classes neat topological characterisations within the topology induced by the "guarantee kernel" interior operator. Lastly, I show that the metric space used by <fr:link href="/forest/alpern-schneider-1985/" title="Defining Liveness" uri="https://liamoc.net/forest/alpern-schneider-1985/" display-uri="alpern-schneider-1985" type="local">Alpern and Schneider</fr:link> coincides with our topology.</html:p>
              </fr:mainmatter>
            </fr:tree>
            <html:p>This was the sequel of sorts to my <fr:link href="/forest/oconnor-2024-wg21-2/" title="I don't have all day: Examining linear-time temporal {Properties, Logic} within finite time" uri="https://liamoc.net/forest/oconnor-2024-wg21-2/" display-uri="oconnor-2024-wg21-2" type="local">prior WG2.1 talk</fr:link> on LTL properties within finite time, which was in turn presenting work from <fr:link href="/forest/amjad-vanglabbeek-oconnor-2024/" title="Semantics for Linear-time Temporal Logic with Finite Observations" uri="https://liamoc.net/forest/amjad-vanglabbeek-oconnor-2024/" display-uri="amjad-vanglabbeek-oconnor-2024" type="local">our EXPRESS/SOS paper</fr:link> last year.  The topological connection was realised thanks to <fr:link href="/forest/nickwu/" title="Nicolas Wu" uri="https://liamoc.net/forest/nickwu/" display-uri="nickwu" type="local">Nicolas Wu</fr:link>, also a WG2.1 member, who pointed out in <fr:link href="/forest/oconnor-2024-wg21-2/" title="I don't have all day: Examining linear-time temporal {Properties, Logic} within finite time" uri="https://liamoc.net/forest/oconnor-2024-wg21-2/" display-uri="oconnor-2024-wg21-2" type="local">the Canberra meeting</fr:link> that the work I was presenting had distinct notes of <fr:link href="/forest/dt-001Y/" title="Domain theory" uri="https://liamoc.net/forest/dt-001Y/" display-uri="dt-001Y" type="local">domain theory</fr:link>. The topological connection was more that of <fr:link href="/forest/alpern-schneider-1985/" title="Defining Liveness" uri="https://liamoc.net/forest/alpern-schneider-1985/" display-uri="alpern-schneider-1985" type="local">Alpern and Schneider</fr:link> than <fr:link href="/forest/danascott/" title="Dana Scott" uri="https://liamoc.net/forest/danascott/" display-uri="danascott" type="local">Scott</fr:link>, but that was the spark that drove this later work, which will hopefully be included in our forthcoming Information and Computation paper. </html:p>
            <html:figure><html:img loading="lazy" width="230px" src="/forest/bafkrmiauh6gtfz7o2kuevkxny6kguhwapuma7lp5rb5dzsi47iv5gbag6u.jpeg" />
  <html:img loading="lazy" width="230px" src="/forest/bafkrmick3725x7fjr7ytls4enycplpnrrcffp6ti6mjihw57rcpqqrimbq.jpeg" />
  <html:figcaption>Views of Spain from the Camarido Beach.</html:figcaption></html:figure>
            <html:p>The excursion of the meeting included several stops, including two interesting Viana museums, an archaelogical site on the nearby mountaintop, and a memorable trip to Camarido Beach, at the northernmost tip of Portugal, with Spanish Galicia just to the north along the road from Portugal to Santiago de Compostela.</html:p>
            <html:figure><html:img loading="lazy" width="193px" src="/forest/bafkrmicoku2u7xz27w7kfup62xhgh3axefihtdrp5vtxgcdgt2bvd4wbza.jpeg" />
  <html:img loading="lazy" width="193px" src="/forest/bafkrmicijva4u4hbw3g3ebtxupq44ko7u32d5t5yw3sa62huecghqty5cm.jpeg" />
  <html:img loading="lazy" width="193px" src="/forest/bafkrmiddzjxytnorx2idopjd23v6hi3rf3l2q2pkthfqnqdhcejqpruwtu.jpeg" />
  <html:figcaption>The climb and the Santuario church.</html:figcaption></html:figure>
            <html:p>After the meeting had formally concluded, <fr:link href="/forest/okmij/" title="Oleg Kiselyov" uri="https://liamoc.net/forest/okmij/" display-uri="okmij" type="local">Oleg Kiselyov</fr:link>, <fr:link href="/forest/henglein/" title="Fritz Henglein" uri="https://liamoc.net/forest/henglein/" display-uri="henglein" type="local">Fritz Henglein</fr:link>, <fr:link href="/forest/matija/" title="Matija Pretnar" uri="https://liamoc.net/forest/matija/" display-uri="matija" type="local">Matija Pretnar</fr:link>, <fr:link href="/forest/tsewell/" title="Thomas Sewell" uri="https://liamoc.net/forest/tsewell/" display-uri="tsewell" type="local">Thomas Sewell</fr:link>, <fr:link href="/forest/xnning/" title="Ningning Xie" uri="https://liamoc.net/forest/xnning/" display-uri="xnning" type="local">Ningning Xie</fr:link> and I climbed to Santuario de Santa Luzia. We took the arduous stairs rather than the funicular, as Matija's wife had forbidden him from Portuguese funiculars after the recent <fr:link href="https://en.wikipedia.org/wiki/Ascensor_da_Glória_derailment" type="external">Ascensor da Glória derailment</fr:link>, which led to me overdoing it and nearly fainting, but in recompense Matija bought me a beer at the top of the mountain which made it (mostly) worth it! </html:p>
            <html:p>Hopefully I can make it to the next meeting in Estonia next year!</html:p>
            <html:figure>
              <html:img loading="lazy" width="320px" src="/forest/bafkrmig5nuttdc7y6cbugtjcg2qwnkb3cxefkdvtdwb7chjkldyjxnozie.jpeg" />
            </html:figure>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>17</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001V/</fr:uri>
            <fr:display-uri>loc-001V</fr:display-uri>
            <fr:route>/forest/loc-001V/</fr:route>
            <fr:title text="The ICFP Contest has finished">The ICFP Contest has finished</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>While I was flying to Portugal, the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link> was ongoing. Despite my anxieties about exorbitant AWS bills and crippling server bugs, the contest went relatively smoothly. <fr:link href="/forest/jackstodart/" title="Jack Stodart" uri="https://liamoc.net/forest/jackstodart/" display-uri="jackstodart" type="local">Jack Stodart</fr:link> helped out in parts where I was unavaiable. I did have to fix some minor bugs here and there, mostly in the first hour of the contest (although I also had to fix a tricky bug in the post-lightning round problems using the flaky WiFi at Lisbon airport), but the server ended up holding up very well, and the cost of the various AWS services I used (primarily DynamoDB and Lambda) was only a total of about $20 USD. </html:p>
            <html:figure>
              <html:img loading="lazy" width="400px" src="/forest/bafkrmihkvmy3scgccs5ib2ksv5vno4eidrx774asr6icxamw4zaazvkoti.png" />
            </html:figure>
            <html:p>My <fr:link href="https://icfpcontest2025.github.io/specs/task.pdf" type="external">task description</fr:link>, <fr:link href="https://icfpcontest2025.github.io/specs/addendum.pdf" type="external">post-lightning round addendum</fr:link> and <fr:link href="https://icfpcontest2025.github.io/afterword.pdf" type="external">reflective afterword</fr:link> were all themed around <fr:link href="/forest/eco/" title="Umberto Eco" uri="https://liamoc.net/forest/eco/" display-uri="eco" type="local">Umberto Eco</fr:link>'s <html:em>The Name of the Rose</html:em>, and I put a great effort into the typesetting of these three documents. It was nice that many contestants picked up on the theming, and appreciated the typesetting. For promotional graphics, I posted images of the Seven Trumpets from the medieval Cloister Apocalypse, an illustrated manuscript of the Book of Revelation. One contestant posted AI-produced remixes of these timeless masterpieces of medieval illumination, which <fr:link href="/forest/loc-001H/" title="Open Letter against LLMs in Education" uri="https://liamoc.net/forest/loc-001H/" display-uri="loc-001H" type="local">had my finger hovering over the ban button</fr:link>, but I was able to separate my personal revulsion of LLMs from my role as competition organiser. Besides, <fr:link href="/forest/loc-001P/" title="The ICFP contest is nearly upon us" uri="https://liamoc.net/forest/loc-001P/" display-uri="loc-001P" type="local">it would have been hypocritical</fr:link>.  </html:p>
            <html:p>One other "contestant" seemed to be participating simply to flame the organisers. While they were eventually banned from the Discord (thanks Alperen!), it was a big downer right at the start of the competition. This one individual aside, it seems that the contestants broadly enjoyed the competition and had fun solving it. </html:p>
            <html:p>While it was interesting reading the <fr:link href="https://icfpcontest2025.github.io/writeups.html" type="external">write-ups</fr:link> and seeing the various approaches to the problems, I came away from this contest with the distinct impression that the ICFP community and the ICFP <html:em>contest</html:em> community are, for the most part, non-overlapping. This, combined with the <html:em>immense</html:em> stress it puts on organisers, leads me to wonder if the ICFP contest might be better off being organised by its own community, rather than the ICFP one. I'm not sure what benefit the connection to ICFP or ACM has to the contest community, if any, and I'm fairly sure there are no benefits in the other direction. I no longer think severing the ICFP connection would be tantamount to <fr:link href="/forest/loc-001E/" title="Should the ICFP contest continue?" uri="https://liamoc.net/forest/loc-001E/" display-uri="loc-001E" type="local">discontinuing the contest</fr:link>, because the contest community surely seems to have enough critical mass to be self-sustaining. Perhaps I will raise this with the ICFP steering committee.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>19</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001W/</fr:uri>
            <fr:display-uri>loc-001W</fr:display-uri>
            <fr:route>/forest/loc-001W/</fr:route>
            <fr:title text="ANU Logic Summer School 2025">ANU Logic Summer School 2025</fr:title>
            <fr:meta name="external">https://comp.anu.edu.au/lss/</fr:meta>
            <fr:meta name="venue">
              <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">Australian National University</fr:link>
            </fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  The <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">ANU</fr:link> Logic Summer School is back again this year, and this time I feature on <fr:link href="https://comp.anu.edu.au/lss/lectures/2025/" type="external">the program</fr:link>. I will be teaching an Introduction to Interactive Theorem Proving using <fr:link href="https://isabelle.in.tum.de/" type="external">Isabelle/HOL</fr:link>. The timetable is tentative but it looks like I will be teaching it over the final two days of the first week, with one two-hour and one one-hour lecture per day. This means it will be quite a packed programme, but I will do my best.
</html:p>
            <html:p>It's my hope that I can figure out a nice way to include Isabelle code in Forester trees, so that I can make my lecture notes with Forester. But this may be difficult for a variety of technical reasons, so in the worst case it will be a bunch of Isabelle theory files with comments. </html:p>
            <html:p>
  My introduction will hopefully tie in to <fr:link href="/forest/cledmonds/" title="Chelsea Edmonds" uri="https://liamoc.net/forest/cledmonds/" display-uri="cledmonds" type="local">Chelsea Edmonds</fr:link>' teaching Hoare logic and rely/guarantee reasoning in Isabelle over the second week. 
</html:p>
            <html:p> 
  If you or your students have an interest in logic or verification, please consider sending your students! We also have some limited scholarships available.
</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>19</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001X/</fr:uri>
            <fr:display-uri>loc-001X</fr:display-uri>
            <fr:route>/forest/loc-001X/</fr:route>
            <fr:title text="Against &quot;eureka steps&quot;">Against "eureka steps"</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Both <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link> and I enjoyed <fr:link href="/forest/tomschrijvers/" title="Tom Schrijvers" uri="https://liamoc.net/forest/tomschrijvers/" display-uri="tomschrijvers" type="local">Tom Schrijvers</fr:link>' talk at the <fr:link href="/forest/loc-001U/" title="IFIP WG2.1 Meeting  #83" uri="https://liamoc.net/forest/loc-001U/" display-uri="loc-001U" type="local">IFIP WG2.1 Meeting <![CDATA[ #]]>83</fr:link> answering a challenge from <fr:link href="/forest/brunooliveira/" title="Bruno C. d. S. Oliveira" uri="https://liamoc.net/forest/brunooliveira/" display-uri="brunooliveira" type="local">Bruno C. d. S. Oliveira</fr:link>: to stepwise <html:em>derive</html:em> his <fr:link href="/forest/zhou-oliveira-2025/" title="QuickSub: Efficient Iso-Recursive Subtyping" uri="https://liamoc.net/forest/zhou-oliveira-2025/" display-uri="zhou-oliveira-2025" type="local">QuickSub</fr:link> efficient iso-recursive subtype checking algorithm from the exponential-time Amber rules of <fr:link href="/forest/lucacardelli/" title="Luca Cardelli" uri="https://liamoc.net/forest/lucacardelli/" display-uri="lucacardelli" type="local">Luca Cardelli</fr:link>'s <fr:tex display="inline"><![CDATA[\mathcal {F}_{<}]]></fr:tex>. Impressively, <fr:link href="/forest/tomschrijvers/" title="Tom Schrijvers" uri="https://liamoc.net/forest/tomschrijvers/" display-uri="tomschrijvers" type="local">Tom</fr:link> and his student were able to get there, and it's certainly nice to have such a neat justification of QuickSub's correctness, but I did experience some mild irritation: The calculation was done <html:em>with a very specific goal in mind</html:em> — namely the QuickSub algorithm — and so several steps in the proof were, in a sense, "goal-motivated". If we didn't know the QuickSub algorithm in advance, many steps would have had no intuition behind them at all. Another member of the group called such steps "eureka steps".</html:p>
            <html:p>It led me to wonder about the myriad of possible choices available at any given step in that refinement. Why do we choose <html:em>this</html:em> algorithm? If I recall some of the classic works on program calculation from <fr:link href="/forest/richardbird/" title="Richard Bird" uri="https://liamoc.net/forest/richardbird/" display-uri="richardbird" type="local">Richard Bird</fr:link> or <fr:link href="/forest/ccm/" title="Carroll Morgan" uri="https://liamoc.net/forest/ccm/" display-uri="ccm" type="local">Carroll Morgan</fr:link>, the algorithms we end up with proceed from a series of calculations, each of which makes sense in isolation. You can read the derivation from beginning to end and each step feels like it's improving the algorithm in some way. The process feels entirely natural. Whereas here, these "eureka steps" mean that I need to look much further ahead to find the motivation for the transformation being performed. </html:p>
            <html:p>I encountered a similar feeling when my student <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link> raised <fr:link href="/forest/raad-bdo-2022/" title="Concurrent Incorrectness Separation Logic" uri="https://liamoc.net/forest/raad-bdo-2022/" display-uri="raad-bdo-2022" type="local">Concurrent Incorrectness Separation Logic</fr:link> for discussion with me and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link>. <fr:link href="/forest/ohearn-2020/" title="Incorrectness Logic" uri="https://liamoc.net/forest/ohearn-2020/" display-uri="ohearn-2020" type="local">Incorrectness Logic</fr:link> is, in a nutshell, a logic for showing the presence of bugs rather than their absence. One of its nice qualities is that, like its almost-dual Hoare logic, it offers a relatively <html:em>calculational</html:em> way to approach program (in)correctness, where each proof step follows naturally from the structure of the program and the assertions within it. Unfortunately, <fr:link href="/forest/raad-bdo-2022/" title="Concurrent Incorrectness Separation Logic" uri="https://liamoc.net/forest/raad-bdo-2022/" display-uri="raad-bdo-2022" type="local">Concurrent Incorrectness Separation Logic</fr:link> doesn't quite preserve this property when moving to a concurrent setting. To prove the existence of concurrency bugs like races, each thread's local assertions build a history of writes and lock actions, and then, in the assertion after the potential race, a "eureka step" comes in which points out the problematic interleaving of these histories that exhibits the race condition. Proving the presence of this bug required first knowing that the bug exists and how it can arise, and then doing the same "goal-motivated" reasoning that we saw in <fr:link href="/forest/tomschrijvers/" title="Tom Schrijvers" uri="https://liamoc.net/forest/tomschrijvers/" display-uri="tomschrijvers" type="local">Tom</fr:link>'s talk. This seems to me quite dissatisfying. Is there a more genuinely calculational approach here? I suspect concurrency makes things fundamentally more difficult, but I think we should nonetheless strive for the elimination of these "eureka steps" even if it's not always possible to do so.  </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>9</fr:month>
              <fr:day>21</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001Y/</fr:uri>
            <fr:display-uri>loc-001Y</fr:display-uri>
            <fr:route>/forest/loc-001Y/</fr:route>
            <fr:title text="Church Music Corner › Feast of St. Matthew 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Feast of St. Matthew 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Salus pópuli ego sum, dicit Dóminus: de quacúmque tribulatióne clamáverint ad me, exáudiam eos: et ero illórum Dóminus in perpétuum.
  <html:br />
  Protexísti me Deus a convéntu malignántium, allelúia: a multitúdine operántium iniquitátem, allelúia, allelúia.
  <html:br />
  Venite benedícti Patris mei, percípite regnum, allelúia: quod vobis parátum est aborigine mundi, allelúia, allelúia, allelúia.
</html:blockquote>
<html:p>Our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was in relatively full numbers, except that we had zero altos and no director. I filled in as director and appointed a few of our singers to cover the alto part for one of my favourite motets, Byrd's <fr:link href="https://www.youtube.com/watch?v=R3vuU7XAaUM" type="external">Ave Verum Corpus</fr:link>. We were originally set to sing Lloyd's <html:em>Benedicta sit</html:em> (for which I can find no recording), but the substitution was made to a more familiar anthem due to our shortage of altos and a director.</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Ave verum corpus natum de María Vírgine,</html:td>

    
  <html:td>Hail, true body, born of the Virgin Mary,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Vere passum immolátum in cruce pro hómine,</html:td>

    
  <html:td>True suffering, sacrificed on the cross for Man,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Cuius latus perforátum unda fluxit sánguine,</html:td>

    
  <html:td>From whose pierced side flowed waves of blood,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Esto nobis prægustátum in mortis exámine.</html:td>

    
  <html:td>Be for us a foretaste in death's trial.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>O dulcis, O pie, O Iesu fili Maríæ,</html:td>

    
  <html:td>O sweet! O blessed! O Jesus, son of Mary, </html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Miserére mei, miserére mei, miserére mei.</html:td>

    
  <html:td>Have mercy on me, have mercy on me, have mercy on me. </html:td>

  </html:tr>

  </html:table>

</html:blockquote>
<html:p>We sang at the front of the church today (as we had no organ) which I think gave a better acoustic. We got many complements after the service.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>8</fr:month>
          <fr:day>31</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W35/</fr:uri>
        <fr:display-uri>2025-W35</fr:display-uri>
        <fr:route>/forest/2025-W35/</fr:route>
        <fr:title text="Weeknotes 2025-W35">Weeknotes 2025-W35</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week included my aforementioned <fr:link href="/forest/loc-001O/" title="I'm moving to Dickson" uri="https://liamoc.net/forest/loc-001O/" display-uri="loc-001O" type="local">move to Dickson</fr:link>. I'm really liking my new place, even though I haven't unpacked everything yet. Having a reasonably authentic bánh mì shop nearby is a huge relief after trying the mostly poor-quality bánh mì sold at most other Canberra locations (let alone the pathetic excuses for bánh mì sold in Edinburgh). Also the walking routes to both church and the university are, while a bit longer than what I'm used to, very full of natural beauty and mostly quiet and free of traffic noise. </html:p>
        <html:p>Work-wise, this week was mostly <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link> preparation, as well as preparing for my upcoming trip to Portugal. </html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>31</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001T/</fr:uri>
            <fr:display-uri>loc-001T</fr:display-uri>
            <fr:route>/forest/loc-001T/</fr:route>
            <fr:title text="Church Music Corner › 12th Sunday after Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 12th Sunday after Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Miserére mihi Dómine, quóniam ad te clamávi tota die: quia tu Dómine suávis ac mitis es, et copiósus in misericórdia ómnibus invocántibus te.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> were about two to a part for Palestrina's well-known <fr:link href="https://www.youtube.com/watch?v=dU7k-hiiVjw" type="external">Sicut Cervus</fr:link>:</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Sicut cervus desíderat ad fontes aquárum:</html:td>

    
  <html:td>Like as the hart desireth the waterbrooks:</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>ita desíderat ánima mea ad te, Deus.</html:td>

    
  <html:td>So longeth my soul after thee, O God.</html:td>

    </html:tr>

  </html:table>

</html:blockquote>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>8</fr:month>
          <fr:day>24</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W34/</fr:uri>
        <fr:display-uri>2025-W34</fr:display-uri>
        <fr:route>/forest/2025-W34/</fr:route>
        <fr:title text="Weeknotes 2025-W34">Weeknotes 2025-W34</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week included the start of <fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link>'s PhD with me and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link>, my sitting on a PhD review panel for <fr:link href="/forest/tudor/" title="Tudor Ferariu" uri="https://liamoc.net/forest/tudor/" display-uri="tudor" type="local">Tudor Ferariu</fr:link> and a few productive meetings including with <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link>.</html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>24</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001S/</fr:uri>
            <fr:display-uri>loc-001S</fr:display-uri>
            <fr:route>/forest/loc-001S/</fr:route>
            <fr:title text="COMP1100 lectures done">COMP1100 lectures done</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmiekkvp54io7s25exb4vzqaglipalntjqu3aashf5bhumb3g3niowa.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmievmie3rvjt2qg7xv6qrcxwyiybzovti6vjxlj2z4knx5yvzy5xhi.jpeg" />
  <html:figcaption>The squawking cockatoos on the walk from my lecture theatre.</html:figcaption></html:figure>
            <html:p>I finished the first 5 weeks of teaching for <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">Programming as Problem Solving</fr:link> this week, which marks the point in the course where I hand over lecturing duties to <fr:link href="/forest/ranaldclouston/" title="Ranald Clouston" uri="https://liamoc.net/forest/ranaldclouston/" display-uri="ranaldclouston" type="local">Ranald Clouston</fr:link>. Tomorrow I will be up early to invigilate the mid-term exam, which I spent the last week setting up. I think it will be sufficiently brutal to give a shock to those students <fr:link href="/forest/loc-001I/" title="Engagement Crisis in Teaching" uri="https://liamoc.net/forest/loc-001I/" display-uri="loc-001I" type="local">who have not sufficiently engaged</fr:link>, while still being fair and achievable for that handful of students who are attending classes and strongly engaging with the course.</html:p>
            <html:p>I was absolutely mortified in the first lecture of my final week when only two students (out of almost 120) showed up. I later found out that my handful of regular attendees had a maths exam the same time, which lessened the impact somewhat.</html:p>
            <html:p>I have no doubt that most of those who actually attend my lectures will do well. They are very on the ball, and they seem to enjoy my lectures. One asked what other subjects I teach, and another gave me a delicious carrot cake after my final lecture, which was a very touching gesture!</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>24</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001P/</fr:uri>
            <fr:display-uri>loc-001P</fr:display-uri>
            <fr:route>/forest/loc-001P/</fr:route>
            <fr:title text="The ICFP contest is nearly upon us">The ICFP contest is nearly upon us</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I've been putting the finishing touches on the server for the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link>, which I am organising. With <fr:link href="/forest/jackstodart/" title="Jack Stodart" uri="https://liamoc.net/forest/jackstodart/" display-uri="jackstodart" type="local">Jack Stodart</fr:link> and <fr:link href="/forest/alexblack/" title="Alex Mirrlees-Black" uri="https://liamoc.net/forest/alexblack/" display-uri="alexblack" type="local">Alex Mirrlees-Black</fr:link> we will put it through a test run this week, if I can find the time.</html:p>
            <html:p>I wrote the server in Kotlin and used AWS Lambda, AWS DynamoDB and other Amazon Web Services. The point of this approach was so that I wouldn't have to worry about scalability, but I am slightly nervous that the costs will be much higher than I expected. I guess I'll cross that bridge when I come to it.</html:p>
            <html:p>I must say that the state of documentation for AWS is <html:strong>simply atrocious</html:strong>. On one occasion, in desperation to find some answers to what I thought were simple queries, I turned to the dreaded bots for help. They gave me incorrect answers, of course, but I was at least able to <fr:link href="https://kagi.com/" type="external">Kagi search</fr:link> my way to success based on their answer. Still, I feel like I need to go to confession and receive absolution for interacting at all with those infernal machines.</html:p>
            <html:p>Another concern is that I am flying from Sydney to Portugal while the contest will be going on. I'm hoping Jack will be able to monitor things without me, but mostly I'm going on faith that nothing will explode.</html:p>
            <html:p>I'm theming this year's contest around one of my all-time favourite novels, <fr:link href="/forest/eco/" title="Umberto Eco" uri="https://liamoc.net/forest/eco/" display-uri="eco" type="local">Umberto Eco</fr:link>'s <html:em>The Name of the Rose</html:em>. Some of the folks on our Discord channel have been enjoying that.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>24</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001Q/</fr:uri>
            <fr:display-uri>loc-001Q</fr:display-uri>
            <fr:route>/forest/loc-001Q/</fr:route>
            <fr:title text="Holbert status report">Holbert status report</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>My honours students have been hard at work on the <fr:link href="/forest/loc-000V/" title="Rethinking Holbert" uri="https://liamoc.net/forest/loc-000V/" display-uri="loc-000V" type="local">next generation of Holbert</fr:link> lately. <fr:link href="/forest/miowu/" title="Mio Wu" uri="https://liamoc.net/forest/miowu/" display-uri="miowu" type="local">Mio Wu</fr:link> has finished implementing an engine (including pattern unification) for higher order terms, and is now investigating <fr:link href="/forest/libal-miller-2021/" title="Functions-as-constructors higher-order unification" uri="https://liamoc.net/forest/libal-miller-2021/" display-uri="libal-miller-2021" type="local">Functions-as-constructors higher-order unification</fr:link> for implementation in Holbert-ng. Also <fr:link href="/forest/joshbrown/" title="Josh Brown" uri="https://liamoc.net/forest/joshbrown/" display-uri="joshbrown" type="local">Josh Brown</fr:link> has been looking into E-unification modulo associativity, so that we can represent syntax and parsing rules in Holbert. Both have made excellent progress, with basic versions of their respective unification algorithms already in place and working.</html:p>
            <html:p>I'm hoping that I will have time to work on the UI side of things again sometime in September, but we shall see!</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>24</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001R/</fr:uri>
            <fr:display-uri>loc-001R</fr:display-uri>
            <fr:route>/forest/loc-001R/</fr:route>
            <fr:title text="Church Music Corner › Feast of St. Bartholomew 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › Feast of St. Bartholomew 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  MIHI autem nimis honoráti sunt amíci tui, Deus: nimis confortátus est principátus eórum.
  <html:br />
  EGO autem sicut olíva fructificávi in domo Dómini, sperávi in misericórdia Dei mei: et exspectábo nomen tuum, quóniam bonum est ante conspéctum sanctórum tuórum.
  <html:br />
  Inclína Dómine, aurem tuam ad me, et exáudi me: salvum fac servum tuum, Deus meus, sperántem in te: miserére mihi, Domine, quóniam ad te clamávi tota die.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> sang Anton Brucker's classic <fr:link href="https://www.youtube.com/watch?v=udZCjXbwkzk" type="external">Locus Iste</fr:link>:</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Locus iste a Deo factus est.</html:td>

    
  <html:td>This place is made by God,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Inaestimábile sacraméntum,</html:td>

    
  <html:td>A priceless sacrament,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Irreprehensíbilis est.</html:td>

    
  <html:td>Beyond reproach.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Locus iste a Deo factus est.</html:td>

    
  <html:td>This place is made by God.</html:td>

  </html:tr>

  </html:table>

</html:blockquote>
<html:p>Strangely, it seems that Roman Catholics ignored the feast today, just celebrating the 21st Sunday in Ordinary Time instead. Not sure why that was happening.</html:p><html:p>I didn't go to Evensong today, because I'm so busy setting up the ICFP programming contest and arranging <fr:link href="/forest/loc-001O/" title="I'm moving to Dickson" uri="https://liamoc.net/forest/loc-001O/" display-uri="loc-001O" type="local">my move to Dickson</fr:link>.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>8</fr:month>
          <fr:day>17</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W33/</fr:uri>
        <fr:display-uri>2025-W33</fr:display-uri>
        <fr:route>/forest/2025-W33/</fr:route>
        <fr:title text="Weeknotes 2025-W33">Weeknotes 2025-W33</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I'm still overwhelmed with work. I was planning to talk about AWS and its quirks a bit this week, because I am using it for the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link>, but that will have to wait for another time. </html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors />
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>17</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001O/</fr:uri>
            <fr:display-uri>loc-001O</fr:display-uri>
            <fr:route>/forest/loc-001O/</fr:route>
            <fr:title text="I'm moving to Dickson">I'm moving to Dickson</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmicfty6uzn5sb4tzx5mjdfew57q5ptdolz2karuhbedkyc4io5gyum.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmibzlpet6ov3ol33pmqurndynjomrpu3w6iujms54ymwec5t7uzxuu.jpeg" />
  <html:figcaption>Some shots of Dickson, including a statue of Confucius.</html:figcaption></html:figure>
            <html:p>With the dire state of the Australian property market, it seems that my landlord has decided to pick the most inconvenient possible time for me to sell the flat that I currently live in, in the Braddon suburb of inner Canberra.</html:p>
            <html:p>While there is technically a slim possibility that the new owners would want to keep me on as a tenant, I don't think it's likely, and I also don't want to have to put up with weeks of open home shenanigans while the sale is happening.</html:p>
            <html:p>So, I immediately began looking for a place to live, and I found a good place in Dickson, a suburb further north in Canberra than where I am now, but near a vibrant Chinatown area and with lots of nice cycle and walking routes to my work and my church. Although the commute to work will now take twice as long, it's a nice walk and good for my health.</html:p>
            <html:p>Also, while I like the convenience of living in Braddon, it does have its downsides. The ever-present sound of revving cars and motorcycles because of the busy traffic in the inner Canberra area is quite annoying, and while Canberra is known for its quiet streets mine is not really. Plus, Canberra is a strange city in that the CBD (called Civic) isn't really much more active than anywhere else in the city, so it feels somehow lifeless to be there. Perhaps it's just because of the larger east Asian population (something I'm used to from Sydney), but I think I will be more comfortable in Dickson.</html:p>
            <html:p>The other upside of this is that I get to have some petty revenge on my landlord for inconveniencing me, who will now be deprived of rental income until they can find a buyer – it's illegal in the ACT to rent to a tenant if you intend to sell within the first period of their tenancy. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>17</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001N/</fr:uri>
            <fr:display-uri>loc-001N</fr:display-uri>
            <fr:route>/forest/loc-001N/</fr:route>
            <fr:title text="Church Music Corner › 10th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 10th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  SIGNUM magnum appáruit in cælo: múlier amícta sole, et luna sub pédibus eius et in cápite eius coróna stellárum duódecim.
  <html:br />
  Gaudeámus omnes in Dómino, diem festum celebrántes sub honóre Maríæ Vírginnis: de cuius assumptióne gaudent Angeli, et colláudant Fílium Dei.
  <html:br />
  Protéctor noster áspice, Deus, et réspice in fáciem Christi tui: quia mélior est dies una in átriis tuis super míllia.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was without a conductor, so I directed us as we performed Tallis' lovely motet, <html:em>A New Commandment</html:em>. Using multi-track recording, here's a rendition of me singing every part of it simultaneously (Closer to Tallis' original pitch than how we performed it):</html:p><html:iframe style="aspect-ratio: 16 / 9;" width="100%
   " src="https://www.youtube.com/embed/0ErxCxXee08" title="A New Commandment" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" />
  <html:blockquote>
<html:table style="text-align: left">
  <html:tr><html:td>A new commandment give I unto you, saith the Lord.</html:td></html:tr>
  <html:tr><html:td>That ye love together, as I have loved you.</html:td></html:tr>
  <html:tr><html:td>That e'enso ye love one another, </html:td></html:tr>
  <html:tr><html:td>By this shall everyone know that ye are my disciples,</html:td></html:tr>
  <html:tr><html:td>If ye have love, one to another.</html:td></html:tr>
</html:table></html:blockquote>
<html:p>It was also the first Sunday after the feast of the Assumption of the Blessed Virgin Mary. I know it's not universally celebrated in Anglicanism, but CCSL had at least a feast of "Mary the Mother" and my old parish in Edinburgh had a full celebration of the Assumption. But there was nothing to note the assumption (nor the dormition) at the Anglican parishes of Canberra. Very disappointing.</html:p><html:p>I didn't go to Evensong today, because I'm so busy setting up the ICFP programming contest.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>8</fr:month>
          <fr:day>10</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W32/</fr:uri>
        <fr:display-uri>2025-W32</fr:display-uri>
        <fr:route>/forest/2025-W32/</fr:route>
        <fr:title text="Weeknotes 2025-W32">Weeknotes 2025-W32</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I've been overwhelmed with work lately. But my travel to Portugal for the WG2.1 meeting has now been fully organised. </html:p>
        <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmia6s5xtzo6dhkzk4kq4cnkmt6e2ujn7dit24hxk6kd7i3wgjugb44.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmiglemda6nu4rsd5f3xyn4sildw4oogdxgcnunwp2pbrlsg2ytnaqq.jpeg" />
  <html:figcaption>Some shots around campus and Canberra.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>10</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001M/</fr:uri>
            <fr:display-uri>loc-001M</fr:display-uri>
            <fr:route>/forest/loc-001M/</fr:route>
            <fr:title text="Old Man Yells at Cloud">Old Man Yells at Cloud</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  This post could be considered a sequel to <fr:link href="/forest/loc-001H/" title="Open Letter against LLMs in Education" uri="https://liamoc.net/forest/loc-001H/" display-uri="loc-001H" type="local">my previous post</fr:link> regarding the use of LLMs in education, to which I recently added <fr:link href="https://www.wheresyoured.at/the-haters-gui/" type="external">Ed Zitron's excellent article</fr:link>, but here I describe  more generally the attitude I observe among students recently.
</html:p>
            <html:figure>
              <html:img loading="lazy" src="/forest/bafkrmieokavk5tu6jhgta6oa6hzjyuon6wkkktgglmkyjdax7jmaaykhbq.jpeg" />
            </html:figure>
            <html:p>I am avoiding mention of specific incidents to preserve anonymity, so I will by necessity speak in generalities, but of course there are still engaged, conscientious and diligent students, and not all hope is lost. <html:strong>If you are a student of mine reading this, I most probably consider you part of this hopeful set.</html:strong></html:p>
            <html:p>
  Introductory programming of the kind we teach in <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">Programming as Problem Solving</fr:link> can only be learned by diligent practice. And yet, we find that many students are resistant towards applying effort to gain a skill. They don't want to practise anything, and they even resent us for not allowing them to cheat with AI. They want to achieve their desired outcomes with as little effort as possible. My friend <fr:link href="/forest/owickstrom/" title="Oskar Wickström" uri="https://liamoc.net/forest/owickstrom/" display-uri="owickstrom" type="local">Oskar</fr:link> phrased it as "a get rich quick scheme for life''. Seeing as the vast, vast majority of my own personal fulfilment comes from mastering things that I previously couldn't do, I really don't understand how these demotivated students find fulfilment or joy in any part of their lives, and it concerns me not just for their education but for their development as human beings.</html:p>
            <html:p>This indifference towards gaining mastery of skills also seems to generalise to their human connections. When I wrote about the <fr:link href="/forest/loc-001I/" title="Engagement Crisis in Teaching" uri="https://liamoc.net/forest/loc-001I/" display-uri="loc-001I" type="local">Engagement Crisis in Teaching</fr:link>, I was still reeling from the lack of attendance of students in the very first lecture of my first year computing course. Now we're sitting at 13 out of 130 students attending. I've never had attendance so dire – and most students enjoy my lectures! Many friendships I treasured during my own university days were made in those first few lectures, sitting next to an unfamiliar classmate in the lecture theatre. Attending classes in person wasn't ever the most popular option for some students, but when I was a student it was normal to attend the university campus every day at least. I too would often skip lectures and spend time socialising or having fun, but at least I forged friendships, relationships, and made some human connections. I had some life experiences that stay with me as valued memories.  I'm concerned that these students who aren't attending lectures aren't just skipping lectures to go to parties with their friends – they're skipping lectures to stay at home vegetating on the internet. I worry that these young people haven't become socialised to other human beings properly.</html:p>
            <html:p>
  I think COVID certainly didn't help, but a lot of this is because of <fr:link href="https://eev.ee/blog/2025/07/03/the-rise-of-whatever/" type="external">the rise of whatever</fr:link>. People no longer view the world as a place where people can conscientiously work to develop themselves and to develop projects, which they can use both for self-fulfilment and also possibly for a career. Instead, it is a sickening zero-sum race of finding the bigger fool. Very little is genuine, almost everything is grifting. LLMs of course play a big role in this, with many of these grifters promising that you don't have to learn programming, logic, thinking, writing, anything – LLMs will do all the work for you. I think this culture is seeping down into young people and causing this staggering decline in conscientiousness.
</html:p>
            <html:p>I don't know how to conclude this. All that I can hope is that young people resist the pressures of the age and forge themselves into well-rounded, authentic human beings. Here are some ideas on how to do this:</html:p>
            <html:ol><html:li><html:strong>Learn a skill.</html:strong> Learn to speak another language, learn to program computers, make art, write poetry, do mathematical problems, build furniture, make films, learn a musical instrument, sing a song. Whatever you enjoy doing, just incrementally develop your skills. It's fine if you're bad at it – everyone is at first.
  </html:li>
  <html:li><html:strong>Go outside.</html:strong> Connect with people who you can see in person on a regular basis. Join a local group with shared interests. Go to class! Or at least go to the bar on campus during class time.
  </html:li>
  <html:li><html:strong>Forge human connections in person.</html:strong> Talk to people, even people with whom you disagree or those who are in a different place in life than you are. I have met many such people from church, but people are everywhere. Social media is not a substitute for this.
  </html:li>
  <html:li><html:strong>Get a hobby.</html:strong> Don't do it just to share it with other people. Do it for yourself. Give yourself a source of fulfilment that doesn't come from outside.
  </html:li></html:ol>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>10</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001L/</fr:uri>
            <fr:display-uri>loc-001L</fr:display-uri>
            <fr:route>/forest/loc-001L/</fr:route>
            <fr:title text="Church Music Corner › 9th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 9th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Tibi dixit cor meum, quæsívi vultum tuum, vultum tuum Dómine requíram: ne avértas fáciem tuam a me.
  <html:br />
  Respice Dómine, in testaméntum tuum, et ánimas páuperum tuórum ne derelínquas in finem: exsúrge Dómine, et iúdica causam tuam: et ne obliviscáris voces quæréntium te.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was in full numbers for Pitoni's <fr:link href="https://www.youtube.com/watch?v=b1EbtghUBoc" type="external">Cantate Domino</fr:link>, with lyrics from Psalm 149:</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Cantáte Dómino cánticum novum,</html:td>

    
  <html:td>Sing unto the Lord a new song,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Laus eius in ecclésia sanctórum,</html:td>

    
  <html:td>and his praise in the congregation of saints,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Lætétur Israel in eo, qui fecit eum :</html:td>

    
  <html:td>Let Israel rejoice in him that made him,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Et fíliæ Sion exsultent in rege suo.</html:td>

    
  <html:td>Let the children of Zion be joyful in their King.</html:td>

  </html:tr>

  </html:table>

</html:blockquote>
<html:p>It was also the first Sunday after the feast of the Transfiguration of the Lord. I was a bit disappointed to see no Anglican observance of the feast.</html:p><html:p>I didn't go to Evensong today, although I intended to, because I took a wrong turn and ended up in the middle of nowhere, Reid. So the walk to St. John's would have taken the first ten minutes of the actual service. Oh well, at least I had a nice stroll.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>8</fr:month>
          <fr:day>3</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W31/</fr:uri>
        <fr:display-uri>2025-W31</fr:display-uri>
        <fr:route>/forest/2025-W31/</fr:route>
        <fr:title text="Weeknotes 2025-W31">Weeknotes 2025-W31</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I don't have much to include this week because of my <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">Programming as Problem Solving</fr:link> management taking up most of my time. I had planned to write something about the entitlement of students (in a true "get off my lawn" style) but it will have to wait for another week. </html:p>
        <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmifcd7ssw6lggjyc3mxgwumaxa6pgtxgj7gj7y4kt3srwafmd2lxli.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmibcro6nldzgvcj4tct5sfrmgnm4nl65psvt4st67kz2gilibyd6c4.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmif2hxjcvzuzaduhscx7nx7b7n55idcowbuf5bxxetm3k5rvkt34pq.jpeg" />
  <html:figcaption>Some parrots spotted on the ANU campus.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>8</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001K/</fr:uri>
            <fr:display-uri>loc-001K</fr:display-uri>
            <fr:route>/forest/loc-001K/</fr:route>
            <fr:title text="Church Music Corner › 8th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 8th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Deus in adiutórium meum inténde: Dómine ad adiuvandum me festína: confundántur et revereántur inimíci mei, qui quærunt ánimam meam.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> was short on numbers and without a director, but we had enough singers to manage as I conducted Farrant's <fr:link href="https://www.youtube.com/watch?v=vf-braNVF2Q" type="external">Lord, for thy tender mercy's sake</fr:link>:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Lord for thy tender mercy's sake</html:td></html:tr>
    <html:tr><html:td>Lay not our sins to our charge,</html:td></html:tr>
    <html:tr><html:td>But forgive that is past</html:td></html:tr>
    <html:tr><html:td>And give us grace to amend our sinful lives.</html:td></html:tr>
    <html:tr><html:td>To decline from sin and incline to virtue,</html:td></html:tr>
    <html:tr><html:td>That we may walk in a perfect heart</html:td></html:tr>
    <html:tr><html:td>Before thee now and evermore.</html:td></html:tr>
    <html:tr><html:td>Amen.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>It was also a special service for <html:em>Missing Persons Sunday</html:em>, so several members of the Australian Federal Police were present, along with some politicians and some families and friends of missing individuals.</html:p><html:p>I didn't go to Evensong today because I had to prepare my lectures.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
          <fr:contributor>
            <fr:link href="/forest/adeamorim/" title="Arthur Azevedo de Amorim" uri="https://liamoc.net/forest/adeamorim/" display-uri="adeamorim" type="local">Arthur Azevedo de Amorim</fr:link>
          </fr:contributor>
          <fr:contributor>
            <fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine Rizkallah</fr:link>
          </fr:contributor>
          <fr:contributor>
            <fr:link href="/forest/pschachte/" title="Peter Schachte" uri="https://liamoc.net/forest/pschachte/" display-uri="pschachte" type="local">Peter Schachte</fr:link>
          </fr:contributor>
          <fr:contributor>
            <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Pilar Selene Linares Arévalo</fr:link>
          </fr:contributor>
          <fr:contributor>
            <fr:link href="/forest/vjackson/" title="Vincent Jackson" uri="https://liamoc.net/forest/vjackson/" display-uri="vjackson" type="local">Vincent Jackson</fr:link>
          </fr:contributor>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>7</fr:month>
          <fr:day>27</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W30/</fr:uri>
        <fr:display-uri>2025-W30</fr:display-uri>
        <fr:route>/forest/2025-W30/</fr:route>
        <fr:title text="Weeknotes 2025-W30">Weeknotes 2025-W30</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I started teaching the course <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">Programming as Problem Solving</fr:link> this week. I also got some good news: <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Pilar Selene Linares Arévalo</fr:link> and several other authors (including me) recently got news that our paper was accepted to <fr:link href="/forest/aplas25/" title="APLAS '25: 23rd Asian Symposium on Programming Languages and Systems" uri="https://liamoc.net/forest/aplas25/" display-uri="aplas25" type="local">APLAS '25</fr:link>.  </html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>27</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001I/</fr:uri>
            <fr:display-uri>loc-001I</fr:display-uri>
            <fr:route>/forest/loc-001I/</fr:route>
            <fr:title text="Engagement Crisis in Teaching">Engagement Crisis in Teaching</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmigu2d3r3yf42nqzoqu6cwzfmwc72xxt2x2sduuaqz5mgid2ccyoju.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmicowbclbdgkbhdjik7t3mzh4byd2btryzi674r2zer4scklj3zefi.jpeg" />
  <html:figcaption>A sunset and a morning photo of the same location on the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">Australian National University</fr:link> campus, on the way to my lecture theatre</html:figcaption></html:figure>
            <html:p>While this is my time convening <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">a first year computing course</fr:link>, I have taught lectures for first year before, and I have convened <fr:link href="/forest/COMP3141/" title="Software System Design and Implementation" uri="https://liamoc.net/forest/COMP3141/" display-uri="COMP3141" type="local">large courses</fr:link> before. I consider myself a fairly experienced lecturer. Yet, I was both shocked and deeply troubled to see that, of the 120-odd students that enrolled in my first year computing course (this is the "off-session" run of the very first introductory computing course), only about 40 or so attended the first lecture and, even optimistically assuming that there is no overlap between online viewers and in-person viewers, only about 40 further students saw the lectures online. This means I only saw about a third of the course in person, and a third haven't even participated in lectures remotely, let alone in person. </html:p>
            <html:p>I think this is an enormous shame. Learning stuff is only part of the reason to attend university. Far more important, at least in my view, is the social aspect. It is one of the few times in an adult's life where it's basically okay to sit next to someone you don't know and just talk to them. After leaving university, the social opportunities can easily dry up, and it pains me to see students basically intentionally throwing this away in favour of online learning.</html:p>
            <html:p>If I compare to the very first university lecture I ever attended, back in 2008 at <fr:link href="/forest/unsw/" title="UNSW Sydney" uri="https://liamoc.net/forest/unsw/" display-uri="unsw" type="local">UNSW Sydney</fr:link>, which is <fr:link href="https://www.youtube.com/watch?v=hE7l6Adoiiw" type="external">still on YouTube for easy comparison</fr:link>, it's easy to tell even from the video that the lecture theatre was nearly packed, and the energy among students is high.</html:p>
            <html:p>Now, I'm not as charismatic or engaging as Richard Buckland, but my students this year are not even <html:em>giving me a chance to bore them</html:em>. They didn't attend from the <html:em>very first lecture</html:em>. It's quite demoralising. </html:p>
            <html:p>I also noticed that, of the students that thankfully did attend, at first getting them to engage with even simple questions was very challenging. Partly this was because of the configuration of the room (once I realised how to turn on the front lights after turning on the projector auto-dimmed them, engagement improved), and partly it might have been just some initial nerves from the students. I think the situation is improving with regards to in-person engagement, but attendance is still shockingly low.</html:p>
            <html:p>My colleagues tell me that attendance figures have been similarly bad ever since COVID hit. Because the course I taught at the <fr:link href="/forest/uoe/" title="University of Edinburgh" uri="https://liamoc.net/forest/uoe/" display-uri="uoe" type="local">University of Edinburgh</fr:link> was <fr:link href="/forest/itcs/" title="Introduction to Theoretical Computer Science" uri="https://liamoc.net/forest/itcs/" display-uri="itcs" type="local">an optional later-year elective</fr:link>, I never really observed this problem at UoE, although it could well have been there. I'm curious as to other universities' experience of this. Have there been any techniques that students both <html:em>liked</html:em> and which motivated them to attend in person? </html:p>
            <html:p>I have talked to some colleagues for advice on how to address this, and I got suggestions from withholding marks to bribery, but I think all I can do is teach the people that actually show up to my class, and ignore those that don't. It's quite a dispiriting state of affairs, though.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>27</fr:day>
            </fr:date>
            <fr:title text="Paper publication success at APLAS">Paper publication success at APLAS</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p>This paper is the fulfillment of the research I envisioned in <fr:link href="/forest/oconnor-linares-rizkallah-2023/" title="Uniqueness is Separation" uri="https://liamoc.net/forest/oconnor-linares-rizkallah-2023/" display-uri="oconnor-linares-rizkallah-2023" type="local">my paper at VIMPL of a similar name</fr:link>.</html:p><html:p>Since then, <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Selene</fr:link> has worked to actually formalise and figure out what are, in my paper, just the vaguest of intuitions. It's nice to see this come together!</html:p>

<fr:tree show-metadata="true"><fr:frontmatter><fr:authors><fr:author><fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Pilar Selene Linares Arévalo</fr:link></fr:author><fr:author><fr:link href="/forest/vjackson/" title="Vincent Jackson" uri="https://liamoc.net/forest/vjackson/" display-uri="vjackson" type="local">Vincent Jackson</fr:link></fr:author><fr:author><fr:link href="/forest/adeamorim/" title="Arthur Azevedo de Amorim" uri="https://liamoc.net/forest/adeamorim/" display-uri="adeamorim" type="local">Arthur Azevedo de Amorim</fr:link></fr:author><fr:author><fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link></fr:author><fr:author><fr:link href="/forest/pschachte/" title="Peter Schachte" uri="https://liamoc.net/forest/pschachte/" display-uri="pschachte" type="local">Peter Schachte</fr:link></fr:author><fr:author><fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine Rizkallah</fr:link></fr:author></fr:authors><fr:date><fr:year>2025</fr:year><fr:month>10</fr:month><fr:day>27</fr:day></fr:date><fr:uri>https://liamoc.net/forest/linares-dajosr-2025/</fr:uri><fr:display-uri>linares-dajosr-2025</fr:display-uri><fr:route>/forest/linares-dajosr-2025/</fr:route><fr:title text="Memory Safety: Uniqueness as Separation">Memory Safety: Uniqueness as Separation</fr:title><fr:taxon>Reference</fr:taxon><fr:meta name="venue"><fr:link href="/forest/aplas25/" title="APLAS '25: 23rd Asian Symposium on Programming Languages and Systems" uri="https://liamoc.net/forest/aplas25/" display-uri="aplas25" type="local"><html:em>APLAS '25</html:em>: 23rd Asian Symposium on Programming Languages and Systems</fr:link></fr:meta></fr:frontmatter><fr:mainmatter><html:p>Programming languages with uniqueness type systems prevent pointer aliasing, simplifying memory safety reasoning. However, code implemented in these languages often interoperates through foreign function interfaces with external components implemented in languages lacking the same level of static safety guarantees. To verify safe updates in a combined system, one must manually verify that the external components preserve the safety invariants of the uniqueness type system. In particular, recent work showed that one can manually discharge such obligations on C components from a cross-language Cogent-C system by directly reasoning about the C code in higher-order logic. However, even for simple examples, discharging the uniqueness safety obligations, known as frame conditions, within a logic not specifically designed for direct reasoning in terms of heaps and pointers was not ideal. Separation logic is an established logic that facilitates reasoning about imperative programs by localising reasoning to the parts of the heap that the program mutates. This raises a vital question. Can we use separation logic to discharge the safety obligations imposed by uniqueness types? The answer is yes. This paper demonstrates that the frame conditions can be inferred from particular separation logic triples and, hence, discharged by reasoning using separation logic. We identify and verify the soundness of specific separation logic triples that imply the frame conditions imposed by a uniqueness type system.</html:p><html:p>To appear.</html:p></fr:mainmatter></fr:tree>
</fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>27</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001J/</fr:uri>
            <fr:display-uri>loc-001J</fr:display-uri>
            <fr:route>/forest/loc-001J/</fr:route>
            <fr:title text="Church Music Corner › 7th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 7th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Deus in loco sancto suo: Deus, qui inhabitáre facit unánimes in domo: ipse dabit virtútem et fortitúdinem plebi suæ.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> performed Batten's anthem <fr:link href="https://www.youtube.com/watch?v=-gHkKGiXeNE" type="external">O Sing Joyfully</fr:link>:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>O sing joyfully, O sing joyfully unto God our strength;</html:td></html:tr>
    <html:tr><html:td>Make a cheerful noise unto the God of Jacob.</html:td></html:tr>
    <html:tr><html:td>Take the song, bring hither the tabret:</html:td></html:tr>
    <html:tr><html:td>The merry harp with the lute! Blow up!</html:td></html:tr>
    <html:tr><html:td>Blow up the trumpet in the new moon:</html:td></html:tr>
    <html:tr><html:td>Ev'n in the time appointed and upon our solemn feast day.</html:td></html:tr>
    <html:tr><html:td>For this was made a statute for Israel</html:td></html:tr>
    <html:tr><html:td>And a law of the God of Jacob.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>It was also the three years mind of the philosopher Geoffrey Brennan, the late husband of Margaret, a soprano in our choir. Perhaps by coincidence or perhaps because our director Alasdair chose it intentionally (I'm not sure which), we sang the appropriate hymn <fr:link href="https://www.youtube.com/watch?v=QYbX9wmQTlI" type="external">Be Still, My Soul</fr:link> which always brings a tear to my eye. It was also a hymn I selected for the funeral of my grandfather. I don't normally post the hymn lyrics here, but I'll make an exception in this case. </html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>Be still, my soul! The Lord is on your side;</html:td></html:tr>
    <html:tr><html:td>Bear patiently the cross of grief or pain;</html:td></html:tr>
    <html:tr><html:td>Leave to your God to order and provide;</html:td></html:tr>
    <html:tr><html:td>In ev'ry change he faithful will remain.</html:td></html:tr>
    <html:tr><html:td>Be still, my soul! Your best, your heav’nly friend</html:td></html:tr>
    <html:tr><html:td>Thru' thorny ways leads to a joyful end.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Be still, my soul! Your God does undertake</html:td></html:tr>
    <html:tr><html:td>To guide the future as he has the past;</html:td></html:tr>
    <html:tr><html:td>Your hope, your confidence, let nothing shake;</html:td></html:tr>
    <html:tr><html:td>All now mysterious shall be bright at last.</html:td></html:tr>
    <html:tr><html:td>Be still, my soul! the waves and winds still know</html:td></html:tr>
    <html:tr><html:td>His voice who ruled them while he lived below. </html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Be still, my soul! When dearest friends depart</html:td></html:tr>
    <html:tr><html:td>And all is darkened in the vale of tears,</html:td></html:tr>
    <html:tr><html:td>Then shall you better know his love, his heart,</html:td></html:tr>
    <html:tr><html:td>Who comes to soothe your sorrow and your fears.</html:td></html:tr>
    <html:tr><html:td>Be still, my soul! Your Jesus can repay</html:td></html:tr>
    <html:tr><html:td>From his own fullness all he takes away.</html:td></html:tr>
    <html:tr><html:td><html:br /></html:td></html:tr>
    <html:tr><html:td>Be still, my soul! The hour is hast'ning on</html:td></html:tr>
    <html:tr><html:td>When we shall be forever with the Lord,</html:td></html:tr>
    <html:tr><html:td>When disappointment, grief, and fear are gone,</html:td></html:tr>
    <html:tr><html:td>Sorrow forgot, love's purest joys restored.</html:td></html:tr>
    <html:tr><html:td>Be still my soul! When change and tears are past,</html:td></html:tr>
    <html:tr><html:td>All safe and blessed we shall meet at last.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>I didn't go to Evensong today because it was raining quite badly and I had to prepare my lectures.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>7</fr:month>
          <fr:day>20</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W29/</fr:uri>
        <fr:display-uri>2025-W29</fr:display-uri>
        <fr:route>/forest/2025-W29/</fr:route>
        <fr:title text="Weeknotes 2025-W29">Weeknotes 2025-W29</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was mostly filled with preparation to teach <fr:link href="/forest/COMP1100/" title="Programming as Problem Solving" uri="https://liamoc.net/forest/COMP1100/" display-uri="COMP1100" type="local">Programming as Problem Solving</fr:link> this coming semester. </html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>20</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001H/</fr:uri>
            <fr:display-uri>loc-001H</fr:display-uri>
            <fr:route>/forest/loc-001H/</fr:route>
            <fr:title text="Open Letter against LLMs in Education">Open Letter against LLMs in Education</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Those close to me know that I believe generative AI technologies, particularly when used to replace human creative pursuits, are fundamentally a spiritually damaging invention. It is fundamentally wrong and harmful to humanity. We would all be better off if we consigned this technology to the dustbin of history.</html:p>
            <html:p>I believe this on a deeper level than most of my intellectual concerns. In short, I oppose this technology for religious reasons. I say "religious reasons" because religious convictions are personal and aren't typically up for debate in public conversation. I have no interest in debating the merits of this technology. Also, my actual religious views, such as they are, place a great deal of emphasis on the dignity of the human person and the value of human connections. This technology undermines and devalues both.</html:p>
            <html:p>Rather than try to expound upon this topic, which makes me depressed and miserable, I will just link some articles by various talented people that I think well encapsulate my views:</html:p>
            <html:ul><html:li><fr:link href="https://www.danielmitsui.com/00_pages/i_am_not_a_paintbrush.html" type="external">I am not a Paintbrush</fr:link> by Daniel Mitsui, ink artist and sacred illumination expert.</html:li>
  <html:li><fr:link href="https://eev.ee/blog/2025/07/03/the-rise-of-whatever/" type="external">The rise of whatever</fr:link> by eevee a.k.a. evelyn woods, creator and game developer.</html:li>
  <html:li><fr:link href="https://claytonwramsey.com/blog/prompt/" type="external">I'd rather read the prompt</fr:link> by Clayton W. Ramsey, Computer Scientist.</html:li>
  <html:li><fr:link href="https://www.wheresyoured.at/the-haters-gui/" type="external">The Hater's Guide to the AI bubble</fr:link> by Edward Zitron, English technology writer.</html:li></html:ul>
            <html:p>For this reason I was very pleased when I saw that <fr:link href="/forest/edwinb/" title="Edwin Brady" uri="https://liamoc.net/forest/edwinb/" display-uri="edwinb" type="local">Edwin Brady</fr:link> and <fr:link href="/forest/jonsterling/" title="Jon Sterling" uri="https://liamoc.net/forest/jonsterling/" display-uri="jonsterling" type="local">Jon Sterling</fr:link> had signed and shared <fr:link href="https://openletter.earth/an-open-letter-from-educators-who-refuse-the-call-to-adopt-genai-in-education-cb4aee75" type="external">this open letter</fr:link> for educators to outright reject the use of generative AI in their classrooms. I was proud to sign. I encourage all of you reading, if you work in education, to sign as well.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>20</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001G/</fr:uri>
            <fr:display-uri>loc-001G</fr:display-uri>
            <fr:route>/forest/loc-001G/</fr:route>
            <fr:title text="Church Music Corner › 6th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 6th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Ecce Deus ádiuvat me, et Dóminus suscéptor est ánimæ meæ: avérte mala inimícis meis, in veritáte tua dispérde illos, protéctor meus Dómine.
</html:blockquote>
<html:p>Today our choir at <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> performed the amazing, brief, but very difficult anthem <fr:link href="https://www.youtube.com/watch?v=1Pc41lxwd7k" type="external">I Sat Down</fr:link> by John Bairstow, with text taken from the Song of Solomon:</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>I sat down under his shadow with great delight,</html:td></html:tr>
    <html:tr><html:td>and his fruit was sweet to my taste.</html:td></html:tr>
    <html:tr><html:td>He brought me to the banqueting house, and his banner over me was Love.</html:td></html:tr>
    <html:tr><html:td>I sat down under his shadow.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>I didn't go to Evensong today both because I was busy and because I suspected the normal St. Paul's Choir would not be singing again.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>7</fr:month>
          <fr:day>13</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W28/</fr:uri>
        <fr:display-uri>2025-W28</fr:display-uri>
        <fr:route>/forest/2025-W28/</fr:route>
        <fr:title text="Weeknotes 2025-W28">Weeknotes 2025-W28</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>This week was mostly filled with work about which I have little to say, such as internal strategy meetings and so on. </html:p>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>7</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001C/</fr:uri>
            <fr:display-uri>loc-001C</fr:display-uri>
            <fr:route>/forest/loc-001C/</fr:route>
            <fr:title text="Reviewing done">Reviewing done</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  With the cancellation of <fr:link href="/forest/fproper25/" title="FProPer '25: 2nd ACM SIGPLAN Workshop on Functional Programming for Productivity and Performance" uri="https://liamoc.net/forest/fproper25/" display-uri="fproper25" type="local">FProPer</fr:link> this year due to low submissions, I believe I have finally finished my reviewing marathon for this year. I served on the <fr:link href="/forest/pldi25/" title="PLDI '25: 46th ACM SIGPLAN International Conference on Programming Language Design and Implementation" uri="https://liamoc.net/forest/pldi25/" display-uri="pldi25" type="local">PLDI</fr:link> (11 papers), <fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP</fr:link> (7 papers), <fr:link href="/forest/aplas25/" title="APLAS '25: 23rd Asian Symposium on Programming Languages and Systems" uri="https://liamoc.net/forest/aplas25/" display-uri="aplas25" type="local">APLAS</fr:link> (4 papers) and <fr:link href="/forest/haskell25/" title="Haskell '25: 18th ACM SIGPLAN Haskell Symposium" uri="https://liamoc.net/forest/haskell25/" display-uri="haskell25" type="local">Haskell Symposium</fr:link> (4 papers) PCs this year, plus reviewed one paper for the <fr:link href="/forest/jfp/" title="Journal of Functional Programming" uri="https://liamoc.net/forest/jfp/" display-uri="jfp" type="local">Journal of Functional Programming</fr:link>, giving me a total of 27 papers reviewed this year. Now that that's over with, I will focus my attention on preparing the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local">ICFP Programming Contest</fr:link> and preparing to teach first-year computing next semester.
</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>13</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001D/</fr:uri>
            <fr:display-uri>loc-001D</fr:display-uri>
            <fr:route>/forest/loc-001D/</fr:route>
            <fr:title text="Thoughts on teaching first year">Thoughts on teaching first year</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  I will be teaching COMP1100, the first year introductory programming course at the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">Australian National University</fr:link>. This is the off-session so the enrolments are <html:em>only</html:em> about 100 students.
  This is my first time convening the very first course of a computing degree. For many students, this may be the first time they take any university course.
</html:p>
            <html:p>
  I am thinking about the kinds of messages I want to impart in the very first lecture. Looking over last year's slides, I think there's a number of good messages there, but it's not particularly punchy and probably didn't sink in to students. There's talk about how to study programming, how to maintain mental and physical health at university, the university policy on genAI and academic misconduct, where to find resources etc. but there's no unifying theme to it all.
</html:p>
            <html:p> I think the main thing is to encourage them to <html:em>cultivate in themselves</html:em> the kind of natural curiosity that motivates self-study. Ideally, the students should view my lectures, notes, and other output as <html:em>resources</html:em> for them to use to learn programming. Not merely as requirements placed on them to pass the course and thereby get a degree.
</html:p>
            <html:p>
  I think I will emphasise the <html:em>science</html:em> part of Computer Science and encourage students to <html:strong>think like a scientist</html:strong>:
  <html:ul><html:li><html:strong>Answer curiosity with experimentation</html:strong>: A common theme in my interactions with first year students is that they will often ask me questions to which they could easily find out the answer by trying it for themselves. The refrain should be <html:strong>try it and see!</html:strong></html:li>
    <html:li><html:strong>Reason with mathematical principles</html:strong>: We are programming in Haskell, and I hope to communicate the mathematical connection, sneaking some semantics in by the wayside.</html:li>
    <html:li><html:strong>Practice good lab safety:</html:strong> Looking after posture, eye health, taking breaks, drinking water, and supporting each other.</html:li>
    <html:li><html:strong>Maintain scientific integrity</html:strong>: Only taking credit for work done, and properly attributing work taken from elsewhere (including from generative AI bots).</html:li>
    <html:li><html:strong>Practise skills</html:strong>: I'm a firm believer in the notion that skills such as programming are learned by doing: the more practice they get, the more proficient they will be.</html:li></html:ul></html:p>
            <html:p>Then, to cover the <html:em>computer</html:em> part of Computer Science, I will tell the story of human computers such as Dorothy Vaughan (whose biography has clearly been taken down recently from NASA's website, presumably as a result of the current administration), through to the female programmers of ENIAC, then mentioning the first programmer, Ada Lovelace. Based on her quote on "the science of operations" and Dijkstra's famous quote about telescopes, I plan to shift the focus from <html:em>computers</html:em> to <html:em>computing</html:em> more generally. Then I will give a survey of various subfields of computer science to give them an idea of the big picture of our field.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>13</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001E/</fr:uri>
            <fr:display-uri>loc-001E</fr:display-uri>
            <fr:route>/forest/loc-001E/</fr:route>
            <fr:title text="Should the ICFP contest continue?">Should the ICFP contest continue?</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I'm the organiser for the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local">ICFP Programming Contest</fr:link> this year. After some time working on it, I'm starting to think that ICFP might want to consider either letting this contest be discontinued, or letting it be run by the participants, separately from ICFP proper. </html:p>
            <html:ol><html:li><html:strong>It's a lot of work.</html:strong> I was warned that it was a lot of work when I agreed to do it, and I was still unprepared for the amount of work required. I don't think asking a full-time research and teaching academic to make this kind of time investment for no compensation is reasonable, and I would not have agreed had I known it would be this onerous. This is all to the benefit not of the research community, but of hobbyist competitive programmers.</html:li>
  <html:li><html:strong>It isn't achieving anything for the FP community.</html:strong> In the past, it may have had the benefit of providing a host of nontrivial problems to which functional programming could be applied, but the reality is that most languages have incorporated functional features now, and functional programming is no longer in a tiny niche that must endeavour to prove itself.</html:li>
  <html:li><html:strong>The overlap in the intended audiences is not large.</html:strong> ICFPC is mostly comprised of competitive programmers, not functional programming students or researchers. The top placed entries in this contest rarely use FP languages, and some are not even exposed to FP ideas. I've heard that prior iterations which incorporated FP directly into the fabric of the problem received complaints.  </html:li></html:ol>
            <html:p>I fully acknowledge that a significant group of competitive programmers look forward to the ICFPC, and that the ICFPC occupies a unique space in that scene, where micro-optimising standard algorithms is standard practice and days-long problem solving is not common. But asking ICFP and ICFP-affiliated academics to provide this contest as a service to these hobbyists with dubious benefit to the research community seems pointless to me. Those who participate in the contest should organise it, and it should probably be split off from ICFP itself.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>13</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001F/</fr:uri>
            <fr:display-uri>loc-001F</fr:display-uri>
            <fr:route>/forest/loc-001F/</fr:route>
            <fr:title text="Church Music Corner › 5th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 5th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Dum clamárem ad Dóminum, exaudívit vocem meam, ab his qui appropínquant mihi: et humiliávit eos, qui est ante saécula, et manet in ætérnum: iacta cogitátum tuum in Dómino, et ipse te enútriet.
</html:blockquote>
<html:p>While we were short on numbers, the choir of <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> performed the schmaltzy <fr:link href="https://www.youtube.com/watch?v=tWJRKoKrV_8" type="external">Ave Verum Corpus</fr:link> by Edward Elgar.</html:p>
  <html:blockquote>
  
  <html:table>
    
  <html:tr>
    
  <html:td>Ave verum corpus natum ex María Vírgine,</html:td>

    
  <html:td>Hail, true body, born from the Virgin Mary,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Vere passum, immolátum in cruce pro hómine,</html:td>

    
  <html:td>True suffering, sacrificed on the cross for Man,</html:td>

    </html:tr>

  <html:tr>
    
  <html:td>Cuius latus perforátum vero fluxit sánguine,</html:td>

    
  <html:td>From whose pierced side truly flowed blood,</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>Esto nobis prægustátum mortis in exámine.</html:td>

    
  <html:td>Be for us a foretaste in death's trial.</html:td>

  </html:tr>

  <html:tr>
    
  <html:td>O clemens, O pie, O dulcis Iesu fili Maríæ.</html:td>

    
  <html:td>O kind! O blessed! O sweet Jesus son of Mary. </html:td>

  </html:tr>

  </html:table>

</html:blockquote>
<html:figure><html:img width="300px" src="/forest/bafkrmigz6otjp3dhtrttkilfb5j3wksnodg5vntfwsnlajxmwecpvc2gxu.jpeg" />
  <html:figcaption>St. John the Baptist's, Reid.</html:figcaption></html:figure><html:p>I went to Evensong at <fr:link href="https://www.stjohnscanberra.org/" type="external">St. John the Baptist's</fr:link> in Reid again today. This time they had a very skilled flautist playing along with the organ for the prelude and the postlude, which was lovely. The choir was pretty ordinary as usual, but it is still a restorative service because of the beautiful church and the lovely language of the 1662 BCP.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="true" expanded="false" numbered="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2025</fr:year>
          <fr:month>7</fr:month>
          <fr:day>6</fr:day>
        </fr:date>
        <fr:uri>https://liamoc.net/forest/2025-W27/</fr:uri>
        <fr:display-uri>2025-W27</fr:display-uri>
        <fr:route>/forest/2025-W27/</fr:route>
        <fr:title text="Weeknotes 2025-W27">Weeknotes 2025-W27</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>I decided to try out the Weeknotes idea, that I first saw from <fr:link href="/forest/jonsterling/" title="Jon Sterling" uri="https://liamoc.net/forest/jonsterling/" display-uri="jonsterling" type="local">Jon Sterling</fr:link>. This was a pretty full week, ending with the somewhat devastating news that dozens of academic and professional positions will be gutted from, among others, the College of Arts and Social Sciences at the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">Australian National University</fr:link>. I hear that Music will in particular be sorely affected. My heart goes out to all my colleagues and I hope that all of their futures are bright. </html:p>
        <html:figure><html:img loading="lazy" width="220px" src="/forest/bafkrmie33hbwjvrx2dtkzcgb3msv7hwc4nbn7ulmkusl6iighw6gh34dam.jpeg" />
  <html:img loading="lazy" width="220px" src="/forest/bafkrmidzuqhl3esqlwe24p6fxdjepd237btm2movovh5luevkbf6umzu4u.jpeg" />
  <html:figcaption>Some shots from the Tidbinbilla nature reserve, south of Canberra.</html:figcaption></html:figure>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-001A/</fr:uri>
            <fr:display-uri>loc-001A</fr:display-uri>
            <fr:route>/forest/loc-001A/</fr:route>
            <fr:title text="The AusPL Zulip">The AusPL Zulip</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  Following the near-death of Aussie PL last decade I think we’ve gotten in the habit of thinking that Aussie PL is this tiny embattled community with only essential activities, but thinking about the environment in Scotland and comparing it, I don’t think there is actually much truth to that. Scotland has events like <fr:link href="http://spli.scot/splv/" type="external">SPLV</fr:link>; we have (e.g.) the <fr:link href="https://comp.anu.edu.au/lss/" type="external">logic summer school</fr:link>. Scotland has the <fr:link href="http://spli.scot/spls/" type="external">SPL seminar</fr:link>; We have <fr:link href="https://comp.anu.edu.au/sapling/index.html" type="external">SAPLING</fr:link>. SPLI applies for large CDT grants, we apply for large CoE grants (and both get rejected :). What’s missing is the network of folks in various places, who can advertise seminars when people are visiting, who can arrange visits and cross-institutional collaboration etc.
</html:p>
            <html:p>This network started in Scotland with the <fr:link href="https://spls.zulipchat.com/" type="external">SPLS Zulip</fr:link>, which eventually evolved into the more formal organisation, the <fr:link href="https://spli.scot/" type="external">Scottish Programming Languages Institute</fr:link>. I think it would be nice to foster that kind of active cross-institutional community that has worked well in Scotland, and Zulip is a huge part of why the SPLI exists now.</html:p>
            <html:p>To this end, I have started the <fr:link href="https://auspl.zulipchat.com/" type="external">AusPL Zulip</fr:link>, specifically targeting researchers and students in programming languages, formal methods, software engineering, and related areas in Australian institutions (and surrounding countries). Please consider signing up!</html:p>
            <html:p>
              <html:strong>
                <fr:link href="https://auspl.zulipchat.com/join/3ger2ugmoikiyzoaomenfwjc/" type="external">Join Here!</fr:link>
              </html:strong>
            </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0014/</fr:uri>
            <fr:display-uri>loc-0014</fr:display-uri>
            <fr:route>/forest/loc-0014/</fr:route>
            <fr:title text="Progress in Holbert: ReScript">Progress in Holbert: ReScript</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I have begun the <fr:link href="/forest/loc-000V/" title="Rethinking Holbert" uri="https://liamoc.net/forest/loc-000V/" display-uri="loc-000V" type="local">redevelopment of Holbert</fr:link> I envisioned earlier, dubbed Holbert NG. The initial results are <fr:link href="https://github.com/liamoc/holbert-ng" type="external">already on GitHub</fr:link>, implemented in a combination of <fr:link href="https://rescript-lang.org/" type="external">ReScript</fr:link> and TypeScript — mostly ReScript. ReScript is essentially a dialect of OCaml designed to target JavaScript with fairly complete React bindings. The design is already significantly more flexible than the original Haskell design of Holbert, largely due to ReScript's full implementation of OCaml's module system. I've currently implemented a basic first order proof checker with textual formats, and a components library in TypeScript enabling multi-page documents and sychronisation to local storage.</html:p>
            <html:p>What I haven't really started work on is the UI part. I'm letting this percolate for a while before I start tackling it. I was never happy with the rule editing UI in classic Holbert — it was always too clunky, and more cumbersome than just editing a text-based format. This is in stark contrast to the editor for proofs, which offered some advantages over text. As Holbert NG has text formats for everything, I currently haven't developed GUI editors, but this will eventually change. </html:p>
            <html:p>Mostly this implementation effort has been a way for me to trial ReScript and its associated React ecosystem. My initial thoughts, as I posted on Mastodon, were:</html:p>
            <html:ol><html:li>
   Love ML modules despite their clunkiness. Quite handy for the Holbert-NG design where proof methods can be written as seperate plugins and integrated. Even the term language is swappable. 
  </html:li>
  <html:li>
  Dislike the tendency of the community (and the gearing of the language syntax) towards depending on type inference. Return types in particular usually omitted. In this respect I prefer Haskell syntax.  
  </html:li>
  <html:li>
    Related to 2, it really needs some kind of "dot" syntax. If I have an <html:code>x : Foo.t</html:code> and I go <html:code>x-&gt;blah(..)-&gt;baz(..)</html:code> it should try to desugar to <html:code>x-&gt;Foo.blah(..)-&gt;Foo.baz(..)</html:code>. This is not feasible because the type of <html:code>x</html:code> would become too ambiguous because of 2. So <html:code>Module.</html:code>I <html:code>Module.</html:code>end <html:code>Module.</html:code>up <html:code>Module.</html:code>qualifying <html:code>Module.</html:code>everything...
  </html:li>
  <html:li>
    ReScript in particular has a more "C" style syntax and gets rid of some of the traditional FP stuff from OCaml. I haven't found myself missing it hugely, but occasionally the JS API's available are annoyingly mutation-heavy. This is understandable for ReScript's aims (to generate readable JS) but it can be a pain to work around.
  </html:li></html:ol>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0015/</fr:uri>
            <fr:display-uri>loc-0015</fr:display-uri>
            <fr:route>/forest/loc-0015/</fr:route>
            <fr:title text="Gregorian Chants in Forester">Gregorian Chants in Forester</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p>By writing a small JS module that uses <fr:link href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components" type="external">Web Components</fr:link> and the <fr:link href="http://frmatthew.github.io/exsurge/chant.html" type="external">exsurge</fr:link> library, I have developed a small patch that can be dropped into Forester themes to enable rendering of Gregorian chants.</html:p>
  
  
  
  <html:grego-chant annotation="Intr. (2)" use-drop-cap="true">(f3) CI(c)BÁ(efe)VIT(f) e(fhf)os(efe) *(,) ex(f) á(h)di(hhh)pe(f) fru(e)mén(egf/ge)ti,(c) (,) al(eh~)le(hghf)lú(fgf)ia:(f) (:) et(e) de(f) pe(hh)tra,(hi~) mel(ih~)le(hihh/fgf) (,) sa(f)tu(fi)rá(ih)vit(h!ij) e(ih)os,(h) (;) al(hi~)le(i)lú(ihi)ia,(f) (,) al(g!hwi)le(ih)lú(hf/gvFE)ia,(fe) (,) al(f!gwh)le(hvGF/gwh/ig/hg)lú(fg!hvGFg)ia.(gf) (::)  </html:grego-chant>
<html:p>
It also supports 
  <html:grego-chant inline="" use-drop-cap="false">In(g)line(he)  score(ffedc~)  (::)</html:grego-chant>
 rendering (although I don't know how useful that is), and will reflow scores as the width of the window changes.</html:p><html:p>This is already used to keep my arrangements of the <fr:link href="/forest/loc-0013/" title="Reproaches Verses" uri="https://liamoc.net/forest/loc-0013/" display-uri="loc-0013" type="local">reproaches verses</fr:link> and the <fr:link href="/forest/loc-0012/" title="Easter Proclamation" uri="https://liamoc.net/forest/loc-0012/" display-uri="loc-0012" type="local">Easter Proclamation</fr:link> which I performed during the <fr:link href="/forest/loc-000O/" title="Church Music Corner › Easter 2025" uri="https://liamoc.net/forest/loc-000O/" display-uri="loc-000O" type="local">Paschal Triduum of 2025</fr:link>.</html:p></fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0016/</fr:uri>
            <fr:display-uri>loc-0016</fr:display-uri>
            <fr:route>/forest/loc-0016/</fr:route>
            <fr:title text="APLAS preliminaries">APLAS preliminaries</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I wrote all my reviews for <fr:link href="/forest/aplas25/" title="APLAS '25: 23rd Asian Symposium on Programming Languages and Systems" uri="https://liamoc.net/forest/aplas25/" display-uri="aplas25" type="local">APLAS 2025</fr:link> this week. APLAS was the first conference I ever attended, and I remain quite fond of the Asia-Pacific PL community. All of the papers I reviewed were interesting. I am also hopeful about our own submission: <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Selene</fr:link>, a PhD student of <fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine Rizkallah</fr:link>, has been pursuing a research agenda with several collaborators relating the uniqueness types of, say, <fr:link href="/forest/cogent/" title="Cogent" uri="https://liamoc.net/forest/cogent/" display-uri="cogent" type="local">Cogent</fr:link> with the program-logic driven approaches of, say, Separation Logic, based on a <fr:link href="/forest/oconnor-linares-rizkallah-2023/" title="Uniqueness is Separation" uri="https://liamoc.net/forest/oconnor-linares-rizkallah-2023/" display-uri="oconnor-linares-rizkallah-2023" type="local">short abstract</fr:link> I wrote and submitted with her to <fr:link href="/forest/vimpl23/" title="VIMPL '23: Value Independence in Modern Programming Languages" uri="https://liamoc.net/forest/vimpl23/" display-uri="vimpl23" type="local">VIMPL 2023</fr:link>. This work has culminated in our APLAS submission. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0017/</fr:uri>
            <fr:display-uri>loc-0017</fr:display-uri>
            <fr:route>/forest/loc-0017/</fr:route>
            <fr:title text="DECRA, Grants, etc.">DECRA, Grants, etc.</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Now that DECRA (an early-career research grant in Australia) assessments are back, I am busy working on my rejoinder. It really is a soul-crushing part of the job, but a lot of the feedback I got (from the unusually numerous 6 assessors!) was very positive. This will be the last time I can apply for the DECRA, as I will not be eligible in future and the DECRA <fr:link href="https://www.arc.gov.au/engage-us/consultations/policy-review-national-competitive-grants-program/faqs" type="external">may not exist</fr:link>.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>3</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0018/</fr:uri>
            <fr:display-uri>loc-0018</fr:display-uri>
            <fr:route>/forest/loc-0018/</fr:route>
            <fr:title text="\omega -Algebra for pushdown actions?"><fr:tex display="inline"><![CDATA[\omega ]]></fr:tex>-Algebra for pushdown actions?</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>
  In our weekly meeting, <fr:link href="/forest/yiyao/" title="Yi Yao" uri="https://liamoc.net/forest/yiyao/" display-uri="yiyao" type="local">Yi Yao</fr:link>, <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link> and I were examining a <fr:link href="/forest/mathieu-desharnais-2005/" title="Verification of Pushdown Systems Using Omega Algebra with Domain" uri="https://liamoc.net/forest/mathieu-desharnais-2005/" display-uri="mathieu-desharnais-2005" type="local">paper</fr:link> by Vincent Mathieu and <fr:link href="/forest/jdesharnais/" title="Jules Desharnais" uri="https://liamoc.net/forest/jdesharnais/" display-uri="jdesharnais" type="local">Jules Desharnais</fr:link> about verification of pushdown systems using <fr:tex display="inline"><![CDATA[\omega ]]></fr:tex>-algebras with domain. One thing that we got hung up on was that the underlying algebra seems to insist that the underlying set be of mixed type, where control actions (i.e. the labels on transitions, or expected inputs to the automaton) are interleaved with stack actions (either pushing or popping symbols from the stack). The result is that a bunch of axioms must be added to deal with cancelling pushes and pops, and reordering actions to enable such cancellations. 
</html:p>
            <html:p>Following a proposal from <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link>, I formalised the following alternative algebra, which should work just as well as the algebra in the paper but avoids this extra complexity. Instead of having strings of mixed types of actions, we instead have our algebra consist of sets of <html:em>triples</html:em>, which includes a  (possibly infinite) string of control actions, a (possibly infinite) <html:em>initial stack</html:em>, and a (possibly infinite) <html:em>final stack</html:em>. <fr:tex display="block"><![CDATA[S \triangleq  \mathcal {P}(A^\infty  \times  \Sigma ^\infty  \times  \Sigma ^\infty ) ]]></fr:tex>
In our notation, <fr:tex display="inline"><![CDATA[A]]></fr:tex> is the set of control actions, <fr:tex display="inline"><![CDATA[\Sigma ]]></fr:tex> is the set of stack symbols, and the <fr:tex display="inline"><![CDATA[{}^\infty ]]></fr:tex> superscript denotes both finite and infinite strings of elements, i.e. <fr:tex display="inline"><![CDATA[X^\infty  = X^\ast  \cup  X^\omega ]]></fr:tex>. </html:p>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>7</fr:month>
                  <fr:day>3</fr:day>
                </fr:date>
                <fr:title text="Multiplication">Multiplication</fr:title>
                <fr:taxon>Definition</fr:taxon>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>
  We define a sequential composition operator for triples as follows: <fr:tex display="block"><![CDATA[ (w_1,s_1,s'_1)\ \mathit {seq}\ (w_2,s_2,s'_2) = \begin {cases} (w_1w_2, s_1, s'_2) & \text {if}\ s'_1 = s_2 \\ \text {undefined} & \text {otherwise} \end {cases} ]]></fr:tex>
Note that for sequential composition to make sense, the initial stack of the second triple must match the final stack of the first triple. As the words <fr:tex display="inline"><![CDATA[w_1]]></fr:tex> and <fr:tex display="inline"><![CDATA[w_2]]></fr:tex> may be infinite, we define concatenation in the usual way, where <fr:tex display="inline"><![CDATA[w_1w_2 = w_1]]></fr:tex> when <fr:tex display="inline"><![CDATA[w_1]]></fr:tex> is infinite. 
</html:p>
                <html:p>Then, the definition of multiplication in our algebra is the straightforward lifting to sets:</html:p>
                <fr:tex display="block"><![CDATA[
  S_1 \cdot  S_2 = \{ x\ \mathit {seq}\ y \mid  x \in  S_1, y \in  S_2, x\ \mathit {seq}\ y\ \text {defined}\}
]]></fr:tex>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>7</fr:month>
                  <fr:day>3</fr:day>
                </fr:date>
                <fr:title text="The Unit Element">The Unit Element</fr:title>
                <fr:taxon>Definition</fr:taxon>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>The 1 element for multiplication here just consists of all triples with an empty word that leave the stack unchanged:</html:p>
                <fr:tex display="block"><![CDATA[
\mathbf {1} = \{ (\varepsilon , s, s) \mid  s \in  \Sigma ^\infty  \}  
]]></fr:tex>
              </fr:mainmatter>
            </fr:tree>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>7</fr:month>
                  <fr:day>3</fr:day>
                </fr:date>
                <fr:title text="The Kleene Star">The Kleene Star</fr:title>
                <fr:taxon>Definition</fr:taxon>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>Let <fr:tex display="inline"><![CDATA[S^n]]></fr:tex> denote the <fr:tex display="inline"><![CDATA[n]]></fr:tex>-times self-multiplication of <fr:tex display="inline"><![CDATA[S]]></fr:tex>, where <fr:tex display="inline"><![CDATA[S^0 = \mathbf {1}]]></fr:tex>. Then, the Kleene star for our algebra is:</html:p>
                <fr:tex display="block"><![CDATA[S^\ast  \triangleq  \bigcup _{n \in  \mathbb {N}}\ S^n]]></fr:tex>
              </fr:mainmatter>
            </fr:tree>
            <html:p>
These definitions are sufficient to show that <fr:tex display="inline"><![CDATA[(S, \cup  ,\cdot , \emptyset , \mathbf {1}, {}^\ast )]]></fr:tex> is a Kleene algebra. Then, to extend this to an <fr:tex display="inline"><![CDATA[\omega ]]></fr:tex>-algebra, one needs only the <fr:tex display="inline"><![CDATA[ {}^\omega ]]></fr:tex> operator.
</html:p>
            <fr:tree show-metadata="false">
              <fr:frontmatter>
                <fr:authors>
                  <fr:author>
                    <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
                  </fr:author>
                </fr:authors>
                <fr:date>
                  <fr:year>2025</fr:year>
                  <fr:month>7</fr:month>
                  <fr:day>3</fr:day>
                </fr:date>
                <fr:title text="The Omega Operator">The Omega Operator</fr:title>
                <fr:taxon>Definition</fr:taxon>
              </fr:frontmatter>
              <fr:mainmatter>
                <html:p>
  We define the <fr:tex display="inline"><![CDATA[{ }^\omega  ]]></fr:tex> operator as follows:
  <fr:tex display="block"><![CDATA[
    S^\omega  \triangleq  \{ (w, s_1, s_2) \mid  \exists  \text {an infinite run for}\ w\ \text {in}\ S\ \text {starting with stack}\ s_1\}
  ]]></fr:tex>
  The guard in the above set comprehension feels informal, so we will define momentarily a judgment or predicate <fr:tex display="inline"><![CDATA[S \vdash  (w,s_1)\ \textbf {infinite} ]]></fr:tex>, which means the same thing:</html:p>
                <fr:tex display="block"><![CDATA[
    S^\omega  \triangleq  \{ (w, s_1, s_2) \mid  S \vdash  (w,s_1)\ \textbf {infinite}\}
  ]]></fr:tex>
                <html:p>Note that this definition places no constraint on <fr:tex display="inline"><![CDATA[s_2]]></fr:tex>, so any non-empty set <fr:tex display="inline"><![CDATA[S^\omega ]]></fr:tex> will include all possible final stacks.</html:p>
                <html:p>It remains to formalise our predicate. Formally, it is the largest (i.e. coinductive) predicate satisfying the following rule:  </html:p>
                <fr:tex display="block"><![CDATA[\dfrac {w = xw' \quad  (x,s_1,s_2) \in  S \quad  S \vdash  (w',s_2)\ \textbf {infinite}}{S \vdash  (w,s_1)\ \textbf {infinite}}]]></fr:tex>
                <html:p>This means we can prove <fr:tex display="inline"><![CDATA[S \vdash  (w,s_1)\ \textbf {infinite}]]></fr:tex> if we can find an infinite chain of moves in <fr:tex display="inline"><![CDATA[S]]></fr:tex> starting with stack <fr:tex display="inline"><![CDATA[s_1]]></fr:tex> that, when all combined, results in the word <fr:tex display="inline"><![CDATA[w]]></fr:tex>.</html:p>
                <html:p>Note that while the run is infinitely long, the word <fr:tex display="inline"><![CDATA[w]]></fr:tex> need not be, due to the presence of <fr:tex display="inline"><![CDATA[\varepsilon ]]></fr:tex>-moves. </html:p>
              </fr:mainmatter>
            </fr:tree>
            <html:p>One thing we noticed here is that it doesn't matter to the operators what the type of the stack is. Indeed, replace stacks with tapes and you'd get something describing actions on a turing machine. This gives us compelling directions to take this!</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>7</fr:month>
              <fr:day>6</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-0019/</fr:uri>
            <fr:display-uri>loc-0019</fr:display-uri>
            <fr:route>/forest/loc-0019/</fr:route>
            <fr:title text="Church Music Corner › 4th Sunday After Pentecost 2025"><fr:link href="/forest/loc-000P/" title="Church Music Corner" uri="https://liamoc.net/forest/loc-000P/" display-uri="loc-000P" type="local">Church Music Corner</fr:link> › 4th Sunday After Pentecost 2025</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
  <html:blockquote>
  Suscépimus, Deus, misericórdiam tuam in médio templi tui: secúndum nomen tuum Deus, ita et laus tua in fines terræ: iustítia plena est déxtera tua.
</html:blockquote>
<html:p>While we were short on numbers, the choir of <fr:link href="https://allsaintsainslie.org.au/" type="external">All Saints Ainslie</fr:link> performed the lovely <fr:link href="https://www.youtube.com/watch?v=YDB77SDWrII" type="external">We Wait for Thy Loving-kindness, O God</fr:link> by William McKie. I performed the brief tenor solo intonations. I notice as I write this that the text is the same as the introit for this Sunday, which I wrote above.</html:p>
  <html:blockquote>
  <html:table style="text-align: left">
    <html:tr><html:td>
      We wait for thy loving-kindness, O God, in the midst of thy temple.</html:td></html:tr>
    <html:tr><html:td>  
      Alleluia, Alleluia, Alleluia.</html:td></html:tr>
    <html:tr><html:td>
      O God, according to thy name, so is thy praise unto the world's end.</html:td></html:tr>
    <html:tr><html:td>  
      Thy right hand is full of righteousness. Alleluia.</html:td></html:tr>
    <html:tr><html:td>
    We wait for thy loving-kindness O God, in the midst of thy temple.</html:td></html:tr>
    <html:tr><html:td>  
      O Lord, send us now prosperity.</html:td></html:tr>
    <html:tr><html:td>  
      Amen.</html:td></html:tr>
  </html:table>
</html:blockquote>
<html:p>As my parents were visiting I didn't end up making my way down to Manuka for Evensong today.</html:p></fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
  </fr:mainmatter>
  <fr:backmatter>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="References">References</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2024</fr:year>
              <fr:month>11</fr:month>
              <fr:day>29</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/oconnor-2024-wg21-2/</fr:uri>
            <fr:display-uri>oconnor-2024-wg21-2</fr:display-uri>
            <fr:route>/forest/oconnor-2024-wg21-2/</fr:route>
            <fr:title text="I don't have all day: Examining linear-time temporal {Properties, Logic} within finite time">I don't have all day: Examining linear-time temporal {Properties, Logic} within finite time</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue"><fr:link href="/forest/wg21/" title="IFIP Working Group 2.1: Algorithmic Languages and Calculi" uri="https://liamoc.net/forest/wg21/" display-uri="wg21" type="local">IFIP Working Group 2.1: Algorithmic Languages and Calculi</fr:link> Meeting, Canberra, Australia</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>We define a proper inductive semantics for LTL which includes those finite partial traces for which a definitive answer can be given: the “definitive prefixes” of the property. Sets of definitive prefixes are called definitive sets. Defining a semantics for LTL in terms of definitive sets gives us something equivalent to LTL3, a formulation popular in runtime verification. Our theory of definitive sets is sufficient to give a neat characterisation of (co-)safety and (co-)liveness properties, allowing us to straightforwardly prove Alpern and Schneider’s result that every property is the intersection of a safety and liveness property by simpler means.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/rvg/" title="Rob van Glabbeek" uri="https://liamoc.net/forest/rvg/" display-uri="rvg" type="local">Rob van Glabbeek</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2024</fr:year>
              <fr:month>11</fr:month>
              <fr:day>22</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/amjad-vanglabbeek-oconnor-2024/</fr:uri>
            <fr:display-uri>amjad-vanglabbeek-oconnor-2024</fr:display-uri>
            <fr:route>/forest/amjad-vanglabbeek-oconnor-2024/</fr:route>
            <fr:title text="Semantics for Linear-time Temporal Logic with Finite Observations">Semantics for Linear-time Temporal Logic with Finite Observations</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">
              <fr:link href="/forest/expresssos24/" title="EXPRESS/SOS '24: Combined 31st International Workshop on Expressiveness in Concurrency and 21st Workshop on Structural Operational Semantics" uri="https://liamoc.net/forest/expresssos24/" display-uri="expresssos24" type="local"><html:em>EXPRESS/SOS '24</html:em>: Combined 31st International Workshop on Expressiveness in Concurrency and 21st Workshop on Structural Operational Semantics</fr:link>
            </fr:meta>
            <fr:meta name="doi">10.4204/EPTCS.412.4</fr:meta>
            <fr:meta name="source">
              <fr:link href="https://www.isa-afp.org/entries/LTL3_Semantics.html" type="external">Proofs on AFP</fr:link>
            </fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>LTL3 is a multi-valued variant of Linear-time Temporal Logic for runtime verification applications. The semantic descriptions of LTL3 in previous work are given only in terms of the relationship to conventional LTL. Our approach, by contrast, gives a full model-based inductive accounting of the semantics of LTL3, in terms of families of definitive prefix sets. We show that our definitive prefix sets are isomorphic to linear-time temporal properties (sets of infinite traces), and thereby show that our semantics of LTL3 directly correspond to the semantics of conventional LTL. In addition, we formalise the formula progression evaluation technique, popularly used in runtime verification and testing contexts, and show its soundness and completeness up to finite traces with respect to our semantics. All of our definitions and proofs are mechanised in Isabelle/HOL.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/azalea/" title="Azalea Raad" uri="https://liamoc.net/forest/azalea/" display-uri="azalea" type="local">Azalea Raad</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/joshberdine/" title="Josh Berdine" uri="https://liamoc.net/forest/joshberdine/" display-uri="joshberdine" type="local">Josh Berdine</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/dreyer/" title="Derek Dreyer" uri="https://liamoc.net/forest/dreyer/" display-uri="dreyer" type="local">Derek Dreyer</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/ohearn/" title="Peter O'Hearn" uri="https://liamoc.net/forest/ohearn/" display-uri="ohearn" type="local">Peter O'Hearn</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2022</fr:year>
              <fr:month>1</fr:month>
              <fr:day>12</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/raad-bdo-2022/</fr:uri>
            <fr:display-uri>raad-bdo-2022</fr:display-uri>
            <fr:route>/forest/raad-bdo-2022/</fr:route>
            <fr:title text="Concurrent Incorrectness Separation Logic">Concurrent Incorrectness Separation Logic</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">
              <fr:link href="/forest/popl22/" title="POPL '22: 49th ACM SIGPLAN Symposium on Principles of Programming Languages" uri="https://liamoc.net/forest/popl22/" display-uri="popl22" type="local"><html:em>POPL '22</html:em>: 49th ACM SIGPLAN Symposium on Principles of Programming Languages</fr:link>
            </fr:meta>
            <fr:meta name="doi">10.1145/3498695</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/tomerlibal/" title="Tomer Libal" uri="https://liamoc.net/forest/tomerlibal/" display-uri="tomerlibal" type="local">Tomer Libal</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/dalemiller/" title="Dale Miller" uri="https://liamoc.net/forest/dalemiller/" display-uri="dalemiller" type="local">Dale Miller</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2021</fr:year>
              <fr:month>9</fr:month>
              <fr:day>30</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/libal-miller-2021/</fr:uri>
            <fr:display-uri>libal-miller-2021</fr:display-uri>
            <fr:route>/forest/libal-miller-2021/</fr:route>
            <fr:title text="Functions-as-constructors higher-order unification">Functions-as-constructors higher-order unification</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue"><fr:link href="/forest/amai/" title="Annals of Mathematics and Artificial Intelligence" uri="https://liamoc.net/forest/amai/" display-uri="amai" type="local">Annals of Mathematics and Artificial Intelligence</fr:link>, Volume 90</fr:meta>
            <fr:meta name="doi">10.1007/s10472-021-09774-y</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/ohearn/" title="Peter O'Hearn" uri="https://liamoc.net/forest/ohearn/" display-uri="ohearn" type="local">Peter O'Hearn</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2019</fr:year>
              <fr:month>12</fr:month>
              <fr:day>10</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/ohearn-2020/</fr:uri>
            <fr:display-uri>ohearn-2020</fr:display-uri>
            <fr:route>/forest/ohearn-2020/</fr:route>
            <fr:title text="Incorrectness Logic">Incorrectness Logic</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">
              <fr:link href="/forest/popl20/" title="POPL '20: 47th ACM SIGPLAN Symposium on Principles of Programming Languages" uri="https://liamoc.net/forest/popl20/" display-uri="popl20" type="local"><html:em>POPL '20</html:em>: 47th ACM SIGPLAN Symposium on Principles of Programming Languages</fr:link>
            </fr:meta>
            <fr:meta name="doi">10.1145/3371078</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2019</fr:year>
              <fr:month>10</fr:month>
              <fr:day>23</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/oconnor-thesis-2019/</fr:uri>
            <fr:display-uri>oconnor-thesis-2019</fr:display-uri>
            <fr:route>/forest/oconnor-thesis-2019/</fr:route>
            <fr:title text="Type Systems For Systems Types">Type Systems For Systems Types</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">PhD Thesis, <fr:link href="/forest/unsw/" title="UNSW Sydney" uri="https://liamoc.net/forest/unsw/" display-uri="unsw" type="local">UNSW Sydney</fr:link></fr:meta>
            <fr:meta name="doi">10.26190/unsworks/21495</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>This thesis presents a framework aimed at significantly reducing the cost of proving functional correctness for low-level operating systems components, designed around a new programming language, Cogent. This language is total, polymorphic, higher-order, and purely functional, including features such as algebraic data types and type inference. Crucially, Cogent is equipped with a uniqueness type system, which eliminates the need for a trusted runtime or garbage collector, and allows us to assign two semantics to the language: one imperative, suitable for efficient C code generation; and one functional, suitable for equational reasoning and verification. We prove that the functional semantics is a valid abstraction of the imperative semantics for all well-typed programs. Cogent is designed to easily interoperate with existing C code, to enable Cogent software to interact with existing C systems, and also to provide an escape hatch of sorts, for when the restrictions of Cogent's type system are too onerous. This interoperability extends to Cogent's verification framework, which composes with existing C verification frameworks to enable whole systems to be verified. Cogent's verification framework is based on certifying compilation: For a well-typed Cogent program, the compiler produces C code, a high-level representation of its semantics in Isabelle/HOL, and a proof that the C code correctly refines this embedding. Thus one can reason about the full semantics of real-world systems code productively and equationally, while retaining the interoperability and leanness of C. The compiler certificate is a series of language-level proofs and per-program translation validation phases, combined into one coherent top-level theorem in Isabelle/HOL. To evaluate the effectiveness of this framework, two realistic file systems were implemented as a case study, and key operations for one file system were formally verified on top of Cogent specifications. These studies demonstrate that verification effort is drastically reduced for proving higher-level properties of file system implementations, by reasoning about the generated formal specification from Cogent, rather than low-level C code.</html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>Vincent Mathieu</fr:author>
              <fr:author>
                <fr:link href="/forest/jdesharnais/" title="Jules Desharnais" uri="https://liamoc.net/forest/jdesharnais/" display-uri="jdesharnais" type="local">Jules Desharnais</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2006</fr:year>
              <fr:month>2</fr:month>
              <fr:day>22</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/mathieu-desharnais-2005/</fr:uri>
            <fr:display-uri>mathieu-desharnais-2005</fr:display-uri>
            <fr:route>/forest/mathieu-desharnais-2005/</fr:route>
            <fr:title text="Verification of Pushdown Systems Using Omega Algebra with Domain">Verification of Pushdown Systems Using Omega Algebra with Domain</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">
              <fr:link href="/forest/relmics05/" title="RelMiCS '05: 8th International Seminar on Relational Methods in Computer Science" uri="https://liamoc.net/forest/relmics05/" display-uri="relmics05" type="local"><html:em>RelMiCS '05</html:em>: 8th International Seminar on Relational Methods in Computer Science</fr:link>
            </fr:meta>
            <fr:meta name="doi">10.1007/11734673_15</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/alpern/" title="Bowen Alpern" uri="https://liamoc.net/forest/alpern/" display-uri="alpern" type="local">Bowen Alpern</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/schneider/" title="Fred B. Schneider" uri="https://liamoc.net/forest/schneider/" display-uri="schneider" type="local">Fred B. Schneider</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>1985</fr:year>
              <fr:month>10</fr:month>
              <fr:day>7</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/alpern-schneider-1985/</fr:uri>
            <fr:display-uri>alpern-schneider-1985</fr:display-uri>
            <fr:route>/forest/alpern-schneider-1985/</fr:route>
            <fr:title text="Defining Liveness">Defining Liveness</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue"><fr:link href="/forest/ipl/" title="Information Processing Letters" uri="https://liamoc.net/forest/ipl/" display-uri="ipl" type="local">Information Processing Letters</fr:link>, Volume 21, Issue 4</fr:meta>
            <fr:meta name="doi">10.1016/0020-0190(85)90056-0</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/litaozhou/" title="Litao Zhou" uri="https://liamoc.net/forest/litaozhou/" display-uri="litaozhou" type="local">Litao Zhou</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/brunooliveira/" title="Bruno C. d. S. Oliveira" uri="https://liamoc.net/forest/brunooliveira/" display-uri="brunooliveira" type="local">Bruno C. d. S. Oliveira</fr:link>
              </fr:author>
            </fr:authors>
            <fr:uri>https://liamoc.net/forest/zhou-oliveira-2025/</fr:uri>
            <fr:display-uri>zhou-oliveira-2025</fr:display-uri>
            <fr:route>/forest/zhou-oliveira-2025/</fr:route>
            <fr:title text="QuickSub: Efficient Iso-Recursive Subtyping">QuickSub: Efficient Iso-Recursive Subtyping</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">
              <fr:link href="/forest/popl25/" title="POPL ’25: 52nd ACM SIGPLAN Symposium on Principles of Programming Languages" uri="https://liamoc.net/forest/popl25/" display-uri="popl25" type="local"><html:em>POPL ’25</html:em>: 52nd ACM SIGPLAN Symposium on Principles of Programming Languages</fr:link>
            </fr:meta>
            <fr:meta name="doi">10.1145/3704869</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter />
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Pilar Selene Linares Arévalo</fr:link>
              </fr:author>
              <fr:author>
                <fr:link href="/forest/crizkallah/" title="Christine Rizkallah" uri="https://liamoc.net/forest/crizkallah/" display-uri="crizkallah" type="local">Christine Rizkallah</fr:link>
              </fr:author>
            </fr:authors>
            <fr:uri>https://liamoc.net/forest/oconnor-linares-rizkallah-2023/</fr:uri>
            <fr:display-uri>oconnor-linares-rizkallah-2023</fr:display-uri>
            <fr:route>/forest/oconnor-linares-rizkallah-2023/</fr:route>
            <fr:title text="Uniqueness is Separation">Uniqueness is Separation</fr:title>
            <fr:taxon>Reference</fr:taxon>
            <fr:meta name="venue">
              <fr:link href="/forest/vimpl23/" title="VIMPL '23: Value Independence in Modern Programming Languages" uri="https://liamoc.net/forest/vimpl23/" display-uri="vimpl23" type="local"><html:em>VIMPL '23</html:em>: Value Independence in Modern Programming Languages</fr:link>
            </fr:meta>
            <fr:meta name="external">https://people.eng.unimelb.edu.au/rizkallahc/publications/vimpl-uniqueness-separation.pdf</fr:meta>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>Value independence is enormously beneficial for reasoning about software systems at scale. These benefits carry over into the world of formal verification. Reasoning about programs algebraically is a simple affair in a proof assistant, whereas programs with unconstrained mutation necessitate much more complex techniques, such as Separation Logic, where invariants about memory safety, aliasing, and state changes must be established by manual proof.</html:p>
            <html:p>Uniqueness type systems allow programs to be compiled to code that uses mutation for efficiency, while retaining a semantics that enjoys value independence for reasoning. The restrictions of these type systems, however, are often too onerous for realistic software. Thus, most uniqueness type systems include some “escape hatch” where the benefits of value independence for reasoning are lost, but the restrictions of uniqueness types are lifted. To formally verify a system with such mixed guarantees, the value independence guarantees from uniqueness types must be expressed in terms of imperative, mutable semantics. In other words, we ought to express value independence as an assertion in Separation Logic.</html:p>
          </fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Context">Context</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Backlinks">Backlinks</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:date>
              <fr:year>2025</fr:year>
              <fr:month>12</fr:month>
              <fr:day>9</fr:day>
            </fr:date>
            <fr:uri>https://liamoc.net/forest/loc-002N/</fr:uri>
            <fr:display-uri>loc-002N</fr:display-uri>
            <fr:route>/forest/loc-002N/</fr:route>
            <fr:title text="Web Components are confusing; bugs fixed.">Web Components are confusing; bugs fixed.</fr:title>
          </fr:frontmatter>
          <fr:mainmatter>
            <html:p>I use <fr:link href="https://developer.mozilla.org/en-US/docs/Web/API/Web_components" type="external">Web Components</fr:link> to make widgets that I can easily emit from Forester documents, such as my <fr:link href="/forest/loc-0015/" title="Gregorian Chants in Forester" uri="https://liamoc.net/forest/loc-0015/" display-uri="loc-0015" type="local">Gregorian Chants in Forester</fr:link> and <fr:link href="/forest/loc-0029/" title="Syntax Highlighting in Forester for Isabelle (and More)" uri="https://liamoc.net/forest/loc-0029/" display-uri="loc-0029" type="local">Syntax Highlighting</fr:link> plugins. I noticed that on large pages (such as my <fr:link href="/forest/loc-001B/" title="Liam O'Connor › Weeknotes" uri="https://liamoc.net/forest/loc-001B/" display-uri="loc-001B" type="local">weeknotes page</fr:link>) these plugins would sometimes mysteriously fail to load. I later realised that this is because the <html:code>innerText</html:code>, <html:code>innerHTML</html:code> and <html:code>textContent</html:code> properties may not be initialised when the web component is attached to the DOM, if the page is still loading. The solution requires attaching mutation listeners and waiting for the text to be added later. This seems unnecessarily complicated, but anyway, the plugins have been fixed now. </html:p>
          </fr:mainmatter>
        </fr:tree>
        <fr:tree show-metadata="true" expanded="false" toc="false" numbered="false">
          <fr:frontmatter>
            <fr:authors>
              <fr:author>
                <fr:link href="/forest/liamoc/" title="Liam O'Connor" uri="https://liamoc.net/forest/liamoc/" display-uri="liamoc" type="local">Liam O'Connor</fr:link>
              </fr:author>
            </fr:authors>
            <fr:uri>https://liamoc.net/forest/news/</fr:uri>
            <fr:display-uri>news</fr:display-uri>
            <fr:route>/forest/news/</fr:route>
            <fr:title text="News">News</fr:title>
          </fr:frontmatter>
          <fr:mainmatter><html:p>See also <fr:link href="/forest/loc-001B/" title="Liam O'Connor › Weeknotes" uri="https://liamoc.net/forest/loc-001B/" display-uri="loc-001B" type="local">Weeknotes</fr:link></html:p>
  <html:table>

  <html:tr>
    
  <html:th> 26.03.01</html:th>

    
  <html:td><fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link> starts her PhD this week, and <fr:link href="/forest/edwinpark/" title="Edwin Park" uri="https://liamoc.net/forest/edwinpark/" display-uri="edwinpark" type="local">Edwin Park</fr:link> starts his honours project. </html:td>

</html:tr>
  

  <html:tr>
    
  <html:th> 26.02.20</html:th>

    
  <html:td>I have accepted an invitation to serve on the PC of <fr:link href="/forest/popl27/" title="POPL ’27: 54th ACM SIGPLAN Symposium on Principles of Programming Languages" uri="https://liamoc.net/forest/popl27/" display-uri="popl27" type="local"><html:em>POPL ’27</html:em>: 54th ACM SIGPLAN Symposium on Principles of Programming Languages</fr:link>.</html:td>

</html:tr>
  

  <html:tr>
    
  <html:th> 26.01.16</html:th>

    
  <html:td>My student <fr:link href="/forest/kaiphan/" title="Kai Phan" uri="https://liamoc.net/forest/kaiphan/" display-uri="kaiphan" type="local">Kai Phan</fr:link> will start her PhD with me this semester.</html:td>

</html:tr>
  

  <html:tr>
    
  <html:th> 26.01.15</html:th>

    
  <html:td>I have agreed to join the supervision panel for <fr:link href="/forest/muehlboeck/" title="Fabian Mühlböck" uri="https://liamoc.net/forest/muehlboeck/" display-uri="muehlboeck" type="local">Fabian Mühlböck</fr:link>'s student, <fr:link href="/forest/carloz/" title="Carlo Zancanaro" uri="https://liamoc.net/forest/carloz/" display-uri="carloz" type="local">Carlo Zancanaro</fr:link>.</html:td>

</html:tr>


  <html:tr>
    
  <html:th> 25.12.17</html:th>

    
  <html:td>I have agreed to join the supervision panel for <fr:link href="/forest/nisansala/" title="Nisansala Yatapanage" uri="https://liamoc.net/forest/nisansala/" display-uri="nisansala" type="local">Nisansala Yatapanage</fr:link>'s student, <fr:link href="/forest/alinosher/" title="Ali Nosherwan Hamed" uri="https://liamoc.net/forest/alinosher/" display-uri="alinosher" type="local">Ali Nosherwan Hamed</fr:link>.</html:td>

</html:tr>


  <html:tr>
    
  <html:th> 25.12.01 </html:th>

    
  <html:td>My course on <fr:link href="/forest/isa-0001/" title="Interactive theorem proving" uri="https://liamoc.net/forest/isa-0001/" display-uri="isa-0001" type="local">Interactive theorem proving</fr:link> is running this week. </html:td>

</html:tr>
  

  <html:tr>
    
  <html:th> 25.09.19 </html:th>

    
  <html:td>I have agreed to teach COMP1110 <fr:link href="/forest/COMP1110/" title="Structured Programming" uri="https://liamoc.net/forest/COMP1110/" display-uri="COMP1110" type="local">Structured Programming</fr:link> in 2026 Semester 1. </html:td>

</html:tr>


  <html:tr>
    
  <html:th> 25.09.18 </html:th>

    
  <html:td>I will be teaching at the <fr:link href="/forest/loc-001W/" title="ANU Logic Summer School 2025" uri="https://liamoc.net/forest/loc-001W/" display-uri="loc-001W" type="local">ANU Logic Summer School 2025</fr:link> this December. </html:td>

</html:tr>


  <html:tr>
    
  <html:th> 25.09.12 </html:th>

    
  <html:td>I have been made a member of <fr:link href="/forest/wg21/" title="IFIP Working Group 2.1: Algorithmic Languages and Calculi" uri="https://liamoc.net/forest/wg21/" display-uri="wg21" type="local">IFIP Working Group 2.1: Algorithmic Languages and Calculi</fr:link>. </html:td>

</html:tr>


  <html:tr>
    
  <html:th> 25.09.08 </html:th>

    
  <html:td>The <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link> has successfully concluded. </html:td>

</html:tr>


  <html:tr>
  
  <html:th> 25.08.22 </html:th>

  
  <html:td><fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link> starts her PhD with me and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link> today. </html:td>

</html:tr>


  <html:tr>
  
  <html:th> 25.07.22 </html:th>

  
  <html:td> <fr:link href="/forest/selene/" title="Pilar Selene Linares Arévalo" uri="https://liamoc.net/forest/selene/" display-uri="selene" type="local">Selene</fr:link>'s paper, <fr:link href="/forest/linares-dajosr-2025/" title="Memory Safety: Uniqueness as Separation" uri="https://liamoc.net/forest/linares-dajosr-2025/" display-uri="linares-dajosr-2025" type="local">Memory Safety: Uniqueness as Separation</fr:link>, has been accepted to <fr:link href="/forest/aplas25/" title="APLAS '25: 23rd Asian Symposium on Programming Languages and Systems" uri="https://liamoc.net/forest/aplas25/" display-uri="aplas25" type="local"><html:em>APLAS '25</html:em>: 23rd Asian Symposium on Programming Languages and Systems</fr:link>!</html:td>

</html:tr>


  <html:tr>
  
  <html:th> 25.07.20 </html:th>

  
  <html:td><fr:link href="/forest/miowu/" title="Mio Wu" uri="https://liamoc.net/forest/miowu/" display-uri="miowu" type="local">Mio Wu</fr:link> and <fr:link href="/forest/joshbrown/" title="Josh Brown" uri="https://liamoc.net/forest/joshbrown/" display-uri="joshbrown" type="local">Josh Brown</fr:link> are starting their Honours projects with me this semester, working on <fr:link href="/forest/loc-000V/" title="Rethinking Holbert" uri="https://liamoc.net/forest/loc-000V/" display-uri="loc-000V" type="local">the next generation of the Holbert proof assistant</fr:link>. </html:td>

</html:tr>
  

  <html:tr>
  
  <html:th> 25.05.30 </html:th>

  
  <html:td><fr:link href="/forest/xinloi/" title="Xin Lu" uri="https://liamoc.net/forest/xinloi/" display-uri="xinloi" type="local">Xin Lu</fr:link> will be starting her PhD with me and <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link> in a few months. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 25.05.16 </html:th>

 
  <html:td>I have completed the <fr:link href="/forest/dt-001Y/" title="Domain theory" uri="https://liamoc.net/forest/dt-001Y/" display-uri="dt-001Y" type="local">domain theory</fr:link> lecture notes. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 25.05.01 </html:th>

 
  <html:td>I have agreed to co-supervise <fr:link href="/forest/yiyao/" title="Yi Yao" uri="https://liamoc.net/forest/yiyao/" display-uri="yiyao" type="local">Yi Yao</fr:link>, a new PhD student with <fr:link href="/forest/hoefner/" title="Peter Höfner" uri="https://liamoc.net/forest/hoefner/" display-uri="hoefner" type="local">Peter Höfner</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 25.03.22 </html:th>

 
  <html:td>I have joined the PC for <fr:link href="/forest/haskell25/" title="Haskell '25: 18th ACM SIGPLAN Haskell Symposium" uri="https://liamoc.net/forest/haskell25/" display-uri="haskell25" type="local"><html:em>Haskell '25</html:em>: 18th ACM SIGPLAN Haskell Symposium</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 25.03.13 </html:th>

 
  <html:td>I have joined the PC for <fr:link href="/forest/fproper25/" title="FProPer '25: 2nd ACM SIGPLAN Workshop on Functional Programming for Productivity and Performance" uri="https://liamoc.net/forest/fproper25/" display-uri="fproper25" type="local"><html:em>FProPer '25</html:em>: 2nd ACM SIGPLAN Workshop on Functional Programming for Productivity and Performance</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 25.02.04 </html:th>

 
  <html:td> <fr:link href="/forest/jackb/" title="Jack Bashford" uri="https://liamoc.net/forest/jackb/" display-uri="jackb" type="local">Jack Bashford</fr:link> has joined me for a semester project working on <fr:link href="/forest/oconnor-amjad-2022/" title="Holbert: Reading, Writing, Proving and Learning in the Browser" uri="https://liamoc.net/forest/oconnor-amjad-2022/" display-uri="oconnor-amjad-2022" type="local">Holbert</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 25.01.08 </html:th>

 
  <html:td>I have joined the PC for <fr:link href="/forest/aplas25/" title="APLAS '25: 23rd Asian Symposium on Programming Languages and Systems" uri="https://liamoc.net/forest/aplas25/" display-uri="aplas25" type="local"><html:em>APLAS '25</html:em>: 23rd Asian Symposium on Programming Languages and Systems</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 24.11.05 </html:th>

 
  <html:td>I have joined the PC for <fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local"><html:em>ICFP '25</html:em>: 29th ACM SIGPLAN International Conference on Functional Programming</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 24.10.22 </html:th>

 
  <html:td>I have joined the PC for <fr:link href="/forest/pldi25/" title="PLDI '25: 46th ACM SIGPLAN International Conference on Programming Language Design and Implementation" uri="https://liamoc.net/forest/pldi25/" display-uri="pldi25" type="local"><html:em>PLDI '25</html:em>: 46th ACM SIGPLAN International Conference on Programming Language Design and Implementation</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 24.09.17 </html:th>

 
  <html:td>I have agreed to organise the <fr:link href="/forest/icfpc25/" title="ICFP '25 Programming Contest" uri="https://liamoc.net/forest/icfpc25/" display-uri="icfpc25" type="local"><fr:link href="/forest/icfp25/" title="ICFP '25: 29th ACM SIGPLAN International Conference on Functional Programming" uri="https://liamoc.net/forest/icfp25/" display-uri="icfp25" type="local">ICFP '25</fr:link> Programming Contest</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th>24.09.30 </html:th>

 
  <html:td>I was delighted to spend a week with the <fr:link href="/forest/wg21/" title="IFIP Working Group 2.1: Algorithmic Languages and Calculi" uri="https://liamoc.net/forest/wg21/" display-uri="wg21" type="local">WG2.1</fr:link> folks here at the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">ANU</fr:link>.</html:td>

</html:tr>


  <html:tr>
 
  <html:th> 24.09.09 </html:th>

 
  <html:td>Our student <fr:link href="/forest/rayhana/" title="Rayhana Amjad" uri="https://liamoc.net/forest/rayhana/" display-uri="rayhana" type="local">Rayhana Amjad</fr:link> has published her first paper, <fr:link href="/forest/amjad-vanglabbeek-oconnor-2024/" title="Semantics for Linear-time Temporal Logic with Finite Observations" uri="https://liamoc.net/forest/amjad-vanglabbeek-oconnor-2024/" display-uri="amjad-vanglabbeek-oconnor-2024" type="local">Semantics for Linear-time Temporal Logic with Finite Observations</fr:link> at <fr:link href="/forest/expresssos24/" title="EXPRESS/SOS '24: Combined 31st International Workshop on Expressiveness in Concurrency and 21st Workshop on Structural Operational Semantics" uri="https://liamoc.net/forest/expresssos24/" display-uri="expresssos24" type="local">EXPRESS/SOS</fr:link>. </html:td>

</html:tr>


  <html:tr>
 
  <html:th> 24.07.30 </html:th>

 
  <html:td>I have taken a new position as a Senior Lecturer at the <fr:link href="/forest/anu/" title="Australian National University" uri="https://liamoc.net/forest/anu/" display-uri="anu" type="local">Australian National University</fr:link>. </html:td>

</html:tr>



</html:table>
</fr:mainmatter>
        </fr:tree>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Related">Related</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Contributions">Contributions</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
  </fr:backmatter>
</fr:tree>
