<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Thinking Aloud Reader</title>
    <link>https://blog.thomastu.dev</link>
    <description>Read the latest posts from Thinking Aloud.</description>
    <pubDate>Sun, 19 Jul 2026 08:59:48 +0000</pubDate>
    <item>
      <title>A condensed timeline of what I&#39;ve seen and what&#39;s stuck out in my career on the...</title>
      <link>https://blog.thomastu.dev/thoughts/a-condensed-timeline-of-what-ive-seen-and-whats-stuck-out-in-my-career-on-the</link>
      <description>&lt;![CDATA[A condensed timeline of what I&#39;ve seen and what&#39;s stuck out in my career on the energy transition&#xA;&#xA;(Thoughts and editorializing completely my own)&#xA;&#xA;15ish years ago - Mainstream discourse revolved around &#34;drill, baby, drill&#34; on one end, and &#34;natural gas bridge + all of the above&#34; on the other.  There was a ton of other discourse happening, but these were the two ideas that seemed to be at the center of American political power.  Coal viability began to decrease because of novel gas extraction methods (that also somehow created earthquakes) - new CCGTs (capex + opex) were actually competing against existing coal opex.  Off in some obscure corner, someone was scrubbing coal as well.  On the demand side, we also saw the rise of some of the most concerted energy efficiency programs since the mid 70s.  This made some people upset about lightbulbs so the news kept bringing up lightbulbs because there was nothing else newsworthy after balloon boy and Tiger Woods&#39; marital affairs (maybe there also a recession? I don&#39;t really remember.)  Somewhere in here, Solyndra fails so no loan guarantees for anyone in American energy tech unless it involves a drill.  Everyone gets a smart meter at least which is nice.&#xA;&#xA;10ish years ago - Solar (and wind) cost curves really started to plummet, largely driven by German energy policy and Chinese manufacturing innovation in the previous decade (a golden era of beautiful global cooperation!)  Home solar in the US was taking off and it looked like soft costs were the only component keeping solar prices up.  Utility scale solar also creates a brief moral panic in utility planners due to ducks and curves.  Lots of neat ideas that I think are still playing out but won&#39;t work out developed around this time.  New nuclear, after being 20 years out for the past 50 years was now only 20 years out because of thorium and Andrew Yang.  Utility scale storage was beginning to look REALLY interesting around this time and it looked like we were on the precipice of another cost-down revolution like solar/wind had seen in the decade preceding this one.  A lot of non-coherent energy policy begins to develop during this time leading to a lull in wind deployments, more inefficiency in efficiency regs.  EVs also can&#39;t happen because they would add too much grid strain, so definitely no industrial EV policy.  But also can&#39;t have public transit because farebox recovery would be too low and is the only way to pay for large transit projects and there&#39;s definitely no other way or reason to build transit.  And maybe California can have HSR, but only from Merced to Bakersfield.  Oh and TSLA really takes off too at the tail end of this era but no one remembers ARRA at this point except for a few wonks in the LPO.  It looks like we&#39;re starting to cross the bridge!&#xA;&#xA;5ish years ago - Headwinds for US energy manufacturing picks up (though everyone has to manufacture while wfh).  The 2 and 4 hour battery cost curve is really starting to come down just as auxilary markets in places like ERCOT are almost fully saturated forcing new storage compete on actual dispatch.  Those people who remembered the success of the ARRA era kick start an office for loan programs - weirdly and maybe related, there&#39;s a brief moral panic over the acronym ESG which creates a lot of noise.  There&#39;s sort of a brief golden era of deployment though.  For the first time, the LCOE on new solar + storage is looking like it can hold its own against just existing gas opex and natural gas is where coal was 10 years prior.  It&#39;s looking like EVs would still cause too much grid strain, but we can at least start to think about getting the cost curve down on EVs so there&#39;s some subsidies for that and other energy storage assets.  Everything under the sun is bankable, and carbon might have a social price too.  Deploy, baby, deploy is the new drill, baby, drill and people are singing the &#34;all of the above&#34; tune.  It looks like turbine manfuacturing might actually be slowing down as well meaning we&#39;re a little north of 30 years out to fossil fuel phase out in the power sector.  It&#39;s honestly an amazing time to be in the clean tech space and there&#39;s a notable vibe shift for the better.&#xA;&#xA;Today-ish -The vibe shifts again. All of the above somehow now includes diesel and gas.  Coal luckily is still non-viable though non-coherent energy policy seems to be propping up a handful of plants beyond their useful economical lifetimes.   We can still have all the clean tech that can get built but only if it&#39;s for a data center.  Oh, there&#39;s also no more clean tech, every energy company is now an AI and energy dominance company.  Data center demand has exploded yet somehow some way, power system planners are doing okay albeit not with a mix I would like to see.  The things people were hopeful about building 5 years ago will get built, but so will new gas.  A lot of electrification is growing slower than hoped so primary use fuels will stay up for a bit longer.  Data centers to their credit seemed to have invented the 5 year peaker CCGT using 30 year turbines so that&#39;s interesting (we&#39;re now in the spin, baby, spin era.)  There&#39;s some dialogue about load flexibility which will help utility planners take on new demand faster to enable data centers.  We still can&#39;t have industrial EV policy though because rare earth minerals are harmful for the environment.]]&gt;</description>
      <content:encoded><![CDATA[<p>A condensed timeline of what I&#39;ve seen and what&#39;s stuck out in my career on the energy transition</p>

<p>(Thoughts and editorializing completely my own)</p>

<p>15ish years ago – Mainstream discourse revolved around “drill, baby, drill” on one end, and “natural gas bridge + all of the above” on the other.  There was a ton of other discourse happening, but these were the two ideas that seemed to be at the center of American political power.  Coal viability began to decrease because of novel gas extraction methods (that also somehow created earthquakes) – new CCGTs (capex + opex) were actually competing against existing coal opex.  Off in some obscure corner, someone was scrubbing coal as well.  On the demand side, we also saw the rise of some of the most concerted energy efficiency programs since the mid 70s.  This made some people upset about lightbulbs so the news kept bringing up lightbulbs because there was nothing else newsworthy after balloon boy and Tiger Woods&#39; marital affairs (maybe there also a recession? I don&#39;t really remember.)  Somewhere in here, Solyndra fails so no loan guarantees for anyone in American energy tech unless it involves a drill.  Everyone gets a smart meter at least which is nice.</p>

<p>10ish years ago – Solar (and wind) cost curves really started to plummet, largely driven by German energy policy and Chinese manufacturing innovation in the previous decade (a golden era of beautiful global cooperation!)  Home solar in the US was taking off and it looked like soft costs were the only component keeping solar prices up.  Utility scale solar also creates a brief moral panic in utility planners due to ducks and curves.  Lots of neat ideas that I think are still playing out but won&#39;t work out developed around this time.  New nuclear, after being 20 years out for the past 50 years was now only 20 years out because of thorium and Andrew Yang.  Utility scale storage was beginning to look REALLY interesting around this time and it looked like we were on the precipice of another cost-down revolution like solar/wind had seen in the decade preceding this one.  A lot of non-coherent energy policy begins to develop during this time leading to a lull in wind deployments, more inefficiency in efficiency regs.  EVs also can&#39;t happen because they would add too much grid strain, so definitely no industrial EV policy.  But also can&#39;t have public transit because farebox recovery would be too low and is the only way to pay for large transit projects and there&#39;s definitely no other way or reason to build transit.  And maybe California can have HSR, but only from Merced to Bakersfield.  Oh and TSLA really takes off too at the tail end of this era but no one remembers ARRA at this point except for a few wonks in the LPO.  It looks like we&#39;re starting to cross the bridge!</p>

<p>5ish years ago – Headwinds for US energy manufacturing picks up (though everyone has to manufacture while wfh).  The 2 and 4 hour battery cost curve is really starting to come down just as auxilary markets in places like ERCOT are almost fully saturated forcing new storage compete on actual dispatch.  Those people who remembered the success of the ARRA era kick start an office for loan programs – weirdly and maybe related, there&#39;s a brief moral panic over the acronym ESG which creates a lot of noise.  There&#39;s sort of a brief golden era of deployment though.  For the first time, the LCOE on new solar + storage is looking like it can hold its own against just existing gas opex and natural gas is where coal was 10 years prior.  It&#39;s looking like EVs would still cause too much grid strain, but we can at least start to think about getting the cost curve down on EVs so there&#39;s some subsidies for that and other energy storage assets.  Everything under the sun is bankable, and carbon might have a social price too.  Deploy, baby, deploy is the new drill, baby, drill and people are singing the “all of the above” tune.  It looks like turbine manfuacturing might actually be slowing down as well meaning we&#39;re a little north of 30 years out to fossil fuel phase out in the power sector.  It&#39;s honestly an amazing time to be in the clean tech space and there&#39;s a notable vibe shift for the better.</p>

<p>Today-ish -The vibe shifts again. All of the above somehow now includes diesel and gas.  Coal luckily is still non-viable though non-coherent energy policy seems to be propping up a handful of plants beyond their useful economical lifetimes.   We can still have all the clean tech that can get built but only if it&#39;s for a data center.  Oh, there&#39;s also no more clean tech, every energy company is now an AI and energy dominance company.  Data center demand has exploded yet somehow some way, power system planners are doing okay albeit not with a mix I would like to see.  The things people were hopeful about building 5 years ago will get built, but so will new gas.  A lot of electrification is growing slower than hoped so primary use fuels will stay up for a bit longer.  Data centers to their credit seemed to have invented the 5 year peaker CCGT using 30 year turbines so that&#39;s interesting (we&#39;re now in the spin, baby, spin era.)  There&#39;s some dialogue about load flexibility which will help utility planners take on new demand faster to enable data centers.  We still can&#39;t have industrial EV policy though because rare earth minerals are harmful for the environment.</p>
]]></content:encoded>
      <author>thoughts</author>
      <guid>https://blog.thomastu.dev/read/a/grsg4lty81</guid>
      <pubDate>Thu, 16 Jul 2026 17:36:31 +0000</pubDate>
    </item>
    <item>
      <title>Things I wish were common knowledge for preparing to be a new parent</title>
      <link>https://blog.thomastu.dev/thoughts/things-i-wish-were-common-knowledge-for-preparing-to-be-a-new-parent</link>
      <description>&lt;![CDATA[Things I wish were common knowledge for preparing to be a new parent&#xA;&#xA;Train back hyperextensions&#xA;Work your lats for endurance not power&#xA;Train more back hyperextensions&#xA;Quads are useful sometimes, but big toe is useful all the time&#xA;Most baby holds involve at least some bicep :( ]]&gt;</description>
      <content:encoded><![CDATA[<p>Things I wish were common knowledge for preparing to be a new parent</p>
<ol><li>Train back hyperextensions</li>
<li>Work your lats for endurance not power</li>
<li>Train more back hyperextensions</li>
<li>Quads are useful sometimes, but big toe is useful all the time</li>
<li>Most baby holds involve at least some bicep :(</li></ol>
]]></content:encoded>
      <author>thoughts</author>
      <guid>https://blog.thomastu.dev/read/a/u5788mds46</guid>
      <pubDate>Wed, 24 Jun 2026 04:41:41 +0000</pubDate>
    </item>
    <item>
      <title>Strudel</title>
      <link>https://blog.thomastu.dev/thoughts/strudel</link>
      <description>&lt;![CDATA[After several sleepless nights, I managed to put together the opening bars of Laufey&#39;s Lover Girl in strudel as part of an ongoing goal to learn strudel.&#xA;&#xA;I&#39;m out of practice on general javascript, music composition and ear training but was able to pull it through from a few sleepless nights from reading through the docs.&#xA;&#xA;// Sounds right-ish&#xA;setcpm(88 / 4);&#xA;&#xA;// Instrumentals&#xA;let main = &#34;piano&#34;;&#xA;let vocal = &#34;gmpizzicatostrings&#34;;&#xA;&#xA;// Common rhythms&#xA;let rbossanova = &#34;x@1 x@2 x@1 x@2 x@1 x@1 ~@1 x@1 x@2 x@2 x@2&#34;;&#xA;&#xA;// Measure 1&#xA;let m1 = stack(&#xA;  // Instrumentals&#xA;  note(&#34;a#5@1 a#5@2 a5@1 a5@2 g#5@1 g#5@1 ~@1 g5@1 g5@2 f#5@2 f#5@2&#34;).gain(0.5),&#xA;  note(&#34;[c#5,d#5]&#34;).struct(rbossanova).gain(0.5),&#xA;).s(main);&#xA;&#xA;// Measure 2&#xA;let m2 = stack(&#xA;  // Vocal&#xA;  note(&#34;~@13 c#4@2 d#4@3&#34;).s(vocal).gain(0.7),&#xA;  // Instrumentals&#xA;  s(&#34;clap&#34;).struct(rbossanova).gain(0.5),&#xA;);&#xA;&#xA;// Measure 3&#xA;let c1 = note(&#34;[d#4,b3,g#3,e3]&#34;);&#xA;let c2 = note(&#34;[c#3,a#3,g#3,e3]&#34;);&#xA;&#xA;let m3 = stack(&#xA;  // Vocal&#xA;  note(&#34;~@3 c#4@2 b3@2 a#3@6 b3@2 a#3@2&#34;).s(vocal).gain(0.7),&#xA;  // Instrumental&#xA;  cat(c1, c2).struct(&#34;x@1 x@2 x@3 x@2&#34;).fast(2)&#xA;    .s(main)&#xA;    .gain(0.5),&#xA;);&#xA;&#xA;// Measure 4&#xA;let m4 = stack(&#xA;  // Vocal&#xA;  note(&#34;~@1 b3@2 d#4@8 ~@1 b3@2 d#4@2&#34;).s(vocal).gain(0.7),&#xA;  // Instrumental&#xA;  stack(&#xA;    note(&#xA;      &#34;~@1 [c#3,a#3,g#3,e3]@2 [c#3,a#3,g#3,e3]@3 [c#3,a#3,g#3,e3]@2 [c#3,a#3,g#3,e3]@1 [c#3,a#3,g#3,e3]@2 [c#3,a#3,g#3,e3]@3 [c#3,a#3,g#3,e3]@2&#34;,&#xA;    ),&#xA;    note(&#34;b2@4!4&#34;),&#xA;  )&#xA;    .s(main)&#xA;    .gain(0.5),&#xA;);&#xA;&#xA;// Use arrange to stitch the bars together with a rest at the end since this doesn&#39;t end at a loopable point&#xA;arrange(&#xA;  [1, m1], [1, m2],&#xA;  [1, m3],&#xA;  [1, m4],&#xA;  [2, note(&#34;~@16&#34;)],&#xA;);&#xA;&#xA;Out of curiosity, I wanted to know if LLM assisted learning could be useful like it is with traditional software.  Unsurprisingly, Opus 4.7 can&#39;t actually reproduce trademarked or copyrighted works which is how I personally learn a lot of music (replicate   recreate   strike out on your own.) It however is undeterred from producing some form of odd cacophony.  No amount of prompting could get the bossanova rhythm correct either. &#xA;&#xA;// Laufey — &#34;Lover Girl&#34; • Intro (mm. 1–2)&#xA;// Source: Vingolf Publishing piano/vocal score, arr. Ted Case (2025)&#xA;// B major • 4/4 • Bossa Nova ♩ = 88&#xA;// Two bars of BMaj7 vamping under claps + piano comp before Verse 1&#xA;&#xA;setcpm(88/4)&#xA;&#xA;stack(&#xA;  // Claps — the ¿ x-noteheads in the top staff&#xA;  s(&#34;cp&#34;)&#xA;    .struct(&#34;1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0&#34;)&#xA;    .gain(0.45)&#xA;    .room(0.25),&#xA;&#xA;  // Piano right hand — BMaj7 voicing (B, D#, F#, A#) in bossa comping&#xA;  note(&#34;d#4,f#4,a#4,b4&#34;)&#xA;    .struct(&#34;1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0&#34;)&#xA;    .s(&#34;piano&#34;)&#xA;    .gain(0.55)&#xA;    .room(0.3),&#xA;&#xA;  // Piano left hand — root B in bass with chromatic neighbor (the&#xA;  // accidentals in the LH staff suggest passing tones between B and F#)&#xA;  note(&#34;b2 ~ ~ [a#2 b2] f#3 ~ ~ a2 b2 ~ ~ [a#2 b2] f#3 ~ ~ a2&#34;)&#xA;    .s(&#34;piano&#34;)&#xA;    .gain(0.75)&#xA;)&#xA;&#xA;Opus 4.7 does seem to do a bit better when asked to synthesize original works. e.g. use a current song as a base with some very well documented structural format (like an aria) &#xA;&#xA;// ✦ Lover Girl × Bach ✦  (lullaby setting)&#xA;// Chord progression: Laufey&#39;s &#34;Lover Girl&#34; verse → chorus tail (transposed to G major)&#xA;// Melody: original Bach-aria-style line over those changes&#xA;// Tempo: bossa q=88 slowed to a cradle-rocking ~50 bpm&#xA;&#xA;setcps(0.32)&#xA;&#xA;// ─── BASS: chord roots, one per bar, sustained ───&#xA;let bass = note(&#34;a2 d2 g2 g2 a2 d2 g2 e2&#34;)&#xA;  .sound(&#34;gmacousticgrandpiano&#34;)&#xA;  .gain(0.55)&#xA;  .room(0.55)&#xA;  .attack(0.04)&#xA;  .release(2.2)&#xA;&#xA;// ─── INNER VOICES: jazz chord tones with Bach-style smooth voice leading ───&#xA;//   Am7 → D7 → Gmaj7 → Gmaj7 → Am7 → D7 → Gmaj7 → E7&#xA;let pad = note(&#34;[c4,e4,g4] [c4,d4,f#4] [b3,d4,f#4] [b3,d4,f#4] [c4,e4,g4] [c4,d4,f#4] [b3,d4,f#4] [b3,d4,g#4]&#34;)&#xA;  .sound(&#34;gmmusicbox&#34;)&#xA;  .gain(0.22)&#xA;  .room(0.75)&#xA;  .lpf(2500)&#xA;  .attack(0.1)&#xA;&#xA;// ─── MELODY: Bach-aria lyrical line, lullaby 6/8 feel ───&#xA;//   Mostly stepwise. Arches up across phrase 1, descends across phrase 2.&#xA;//   ~ = rest (breathing space)&#xA;let melody = note(&#34;[b4 ~ c5 b4 a4 ~] [a4 ~ g4 f#4 ~ ~] [g4 ~ a4 b4 ~ ~] [d5 ~ b4 ~ g4 ~] [c5 ~ e5 d5 c5 ~] [b4 ~ a4 g4 ~ ~] [f#4 ~ g4 a4 ~ ~] [b4 ~ g#4 ~ e4 ~]&#34;)&#xA;  .sound(&#34;gm_celesta&#34;)&#xA;  .gain(0.55)&#xA;  .room(0.85)&#xA;  .lpf(4500)&#xA;  .attack(0.05)&#xA;  .release(0.6)&#xA;&#xA;stack(bass, pad, melody)&#xA;`]]&gt;</description>
      <content:encoded><![CDATA[<p>After several sleepless nights, I managed to put together the opening bars of Laufey&#39;s Lover Girl in strudel as part of an ongoing goal to learn strudel.</p>

<p>I&#39;m out of practice on general javascript, music composition and ear training but was able to pull it through from a few sleepless nights from reading through the docs.</p>

<pre><code class="language-javascript">// Sounds right-ish
setcpm(88 / 4);

// Instrumentals
let main = &#34;piano&#34;;
let vocal = &#34;gm_pizzicato_strings&#34;;

// Common rhythms
let r_bossanova = &#34;x@1 x@2 x@1 x@2 x@1 x@1 ~@1 x@1 x@2 x@2 x@2&#34;;

// Measure 1
let m1 = stack(
  // Instrumentals
  note(&#34;a#5@1 a#5@2 a5@1 a5@2 g#5@1 g#5@1 ~@1 g5@1 g5@2 f#5@2 f#5@2&#34;).gain(0.5),
  note(&#34;[c#5,d#5]&#34;).struct(r_bossanova).gain(0.5),
).s(main);

// Measure 2
let m2 = stack(
  // Vocal
  note(&#34;~@13 c#4@2 d#4@3&#34;).s(vocal).gain(0.7),
  // Instrumentals
  s(&#34;clap&#34;).struct(r_bossanova).gain(0.5),
);

// Measure 3
let c1 = note(&#34;[d#4,b3,g#3,e3]&#34;);
let c2 = note(&#34;[c#3,a#3,g#3,e3]&#34;);

let m3 = stack(
  // Vocal
  note(&#34;~@3 c#4@2 b3@2 a#3@6 b3@2 a#3@2&#34;).s(vocal).gain(0.7),
  // Instrumental
  cat(c1, c2).struct(&#34;x@1 x@2 x@3 x@2&#34;).fast(2)
    .s(main)
    .gain(0.5),
);

// Measure 4
let m4 = stack(
  // Vocal
  note(&#34;~@1 b3@2 d#4@8 ~@1 b3@2 d#4@2&#34;).s(vocal).gain(0.7),
  // Instrumental
  stack(
    note(
      &#34;~@1 [c#3,a#3,g#3,e3]@2 [c#3,a#3,g#3,e3]@3 [c#3,a#3,g#3,e3]@2 [c#3,a#3,g#3,e3]@1 [c#3,a#3,g#3,e3]@2 [c#3,a#3,g#3,e3]@3 [c#3,a#3,g#3,e3]@2&#34;,
    ),
    note(&#34;b2@4!4&#34;),
  )
    .s(main)
    .gain(0.5),
);

// Use arrange to stitch the bars together with a rest at the end since this doesn&#39;t end at a loopable point
arrange(
  [1, m1], [1, m2],
  [1, m3],
  [1, m4],
  [2, note(&#34;~@16&#34;)],
);
</code></pre>

<p>Out of curiosity, I wanted to know if LLM assisted learning could be useful like it is with traditional software.  Unsurprisingly, Opus 4.7 can&#39;t actually reproduce trademarked or copyrighted works which is how I personally learn a lot of music (replicate &gt; recreate &gt; strike out on your own.) It however is undeterred from producing some form of odd cacophony.  No amount of prompting could get the bossanova rhythm correct either.</p>

<pre><code class="language-javascript">// Laufey — &#34;Lover Girl&#34; • Intro (mm. 1–2)
// Source: Vingolf Publishing piano/vocal score, arr. Ted Case (2025)
// B major • 4/4 • Bossa Nova ♩ = 88
// Two bars of BMaj7 vamping under claps + piano comp before Verse 1

setcpm(88/4)

stack(
  // Claps — the ¿ x-noteheads in the top staff
  s(&#34;cp&#34;)
    .struct(&#34;1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0&#34;)
    .gain(0.45)
    .room(0.25),

  // Piano right hand — BMaj7 voicing (B, D#, F#, A#) in bossa comping
  note(&#34;d#4,f#4,a#4,b4&#34;)
    .struct(&#34;1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0&#34;)
    .s(&#34;piano&#34;)
    .gain(0.55)
    .room(0.3),

  // Piano left hand — root B in bass with chromatic neighbor (the
  // accidentals in the LH staff suggest passing tones between B and F#)
  note(&#34;b2 ~ ~ [a#2 b2] f#3 ~ ~ a2 b2 ~ ~ [a#2 b2] f#3 ~ ~ a2&#34;)
    .s(&#34;piano&#34;)
    .gain(0.75)
)
</code></pre>

<p>Opus 4.7 does seem to do a bit better when asked to synthesize original works. e.g. use a current song as a base with some very well documented structural format (like an aria)</p>

<pre><code class="language-javascript">// ✦ Lover Girl × Bach ✦  (lullaby setting)
// Chord progression: Laufey&#39;s &#34;Lover Girl&#34; verse → chorus tail (transposed to G major)
// Melody: original Bach-aria-style line over those changes
// Tempo: bossa q=88 slowed to a cradle-rocking ~50 bpm

setcps(0.32)

// ─── BASS: chord roots, one per bar, sustained ───
let bass = note(&#34;&lt;a2 d2 g2 g2 a2 d2 g2 e2&gt;&#34;)
  .sound(&#34;gm_acoustic_grand_piano&#34;)
  .gain(0.55)
  .room(0.55)
  .attack(0.04)
  .release(2.2)

// ─── INNER VOICES: jazz chord tones with Bach-style smooth voice leading ───
//   Am7 → D7 → Gmaj7 → Gmaj7 → Am7 → D7 → Gmaj7 → E7
let pad = note(&#34;&lt;[c4,e4,g4] [c4,d4,f#4] [b3,d4,f#4] [b3,d4,f#4] [c4,e4,g4] [c4,d4,f#4] [b3,d4,f#4] [b3,d4,g#4]&gt;&#34;)
  .sound(&#34;gm_music_box&#34;)
  .gain(0.22)
  .room(0.75)
  .lpf(2500)
  .attack(0.1)

// ─── MELODY: Bach-aria lyrical line, lullaby 6/8 feel ───
//   Mostly stepwise. Arches up across phrase 1, descends across phrase 2.
//   ~ = rest (breathing space)
let melody = note(&#34;&lt;[b4 ~ c5 b4 a4 ~] [a4 ~ g4 f#4 ~ ~] [g4 ~ a4 b4 ~ ~] [d5 ~ b4 ~ g4 ~] [c5 ~ e5 d5 c5 ~] [b4 ~ a4 g4 ~ ~] [f#4 ~ g4 a4 ~ ~] [b4 ~ g#4 ~ e4 ~]&gt;&#34;)
  .sound(&#34;gm_celesta&#34;)
  .gain(0.55)
  .room(0.85)
  .lpf(4500)
  .attack(0.05)
  .release(0.6)

stack(bass, pad, melody)
</code></pre>
]]></content:encoded>
      <author>thoughts</author>
      <guid>https://blog.thomastu.dev/read/a/1oplg8bghc</guid>
      <pubDate>Thu, 14 May 2026 20:15:08 +0000</pubDate>
    </item>
    <item>
      <title>$ burning ideas</title>
      <link>https://blog.thomastu.dev/thoughts/cant-sleep</link>
      <description>&lt;![CDATA[$ burning ideas&#xA;&#xA;let&#39;s just replace state machines with agentic workflows]]&gt;</description>
      <content:encoded><![CDATA[<p>$ burning ideas</p>

<p>let&#39;s just replace state machines with agentic workflows</p>
]]></content:encoded>
      <author>thoughts</author>
      <guid>https://blog.thomastu.dev/read/a/wzxu7tz95y</guid>
      <pubDate>Fri, 24 Apr 2026 20:32:56 +0000</pubDate>
    </item>
    <item>
      <title>The Internet is not a real place.</title>
      <link>https://blog.thomastu.dev/thoughts/the-internet</link>
      <description>&lt;![CDATA[The Internet is not a real place.]]&gt;</description>
      <content:encoded><![CDATA[<p>The Internet is not a real place.</p>
]]></content:encoded>
      <author>thoughts</author>
      <guid>https://blog.thomastu.dev/read/a/wj57y75taw</guid>
      <pubDate>Tue, 17 Mar 2026 06:38:06 +0000</pubDate>
    </item>
  </channel>
</rss>