<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Alice Hsu's Blog</title><link>https://alicehsu.blog/</link><description>Recent content on Alice Hsu's Blog</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 02 May 2026 13:30:00 -0500</lastBuildDate><atom:link href="https://alicehsu.blog/index.xml" rel="self" type="application/rss+xml"/><item><title>A Visit to Calla Lily Fields | Yangmingshan Zhuzihu</title><link>https://alicehsu.blog/posts/2026/05/a-visit-to-calla-lily-fields/</link><pubDate>Sat, 02 May 2026 13:30:00 -0500</pubDate><guid>https://alicehsu.blog/posts/2026/05/a-visit-to-calla-lily-fields/</guid><description>I have always found it odd that the Chinese expression for &amp;ldquo;attracting bees and butterflies&amp;rdquo; (招蜂引蝶) carries a negative connotation.</description><media:thumbnail url="https://alicehsu.blog/images/Post/44/6.jpg"/><media:content url="https://alicehsu.blog/images/Post/44/6.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/44/6.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;The day before flying back to the States, my family and I went to Yangmingshan to see the calla lilies.&lt;/p&gt;
&lt;p&gt;I had only ever visited Qingtiangang Grassland there before. Yangmingshan&amp;rsquo;s flower fields have a well-known reputation, and though I had long wanted to go, the timing never quite worked out. Getting to go this time with family made it all the more special.&lt;/p&gt;
&lt;p&gt;We took the MRT to Jiantan Station, then hopped on the S8 bus all the way up to Zhuzihu. On the way back, the S8 was full, so we switched to the S9 and rode it down to Beitou MRT Station instead. All in all, getting there and back was quite straightforward.&lt;/p&gt;
&lt;p&gt;Stepping off the bus, a cool mountain breeze swept right into us. The temperature up in the hills was noticeably lower than in the city, making it a wonderful escape from the heat. A short walk brought us to the calla lily fields. The fields are privately owned, so there&amp;rsquo;s an entrance fee, but at 100 NTD it&amp;rsquo;s very reasonable, and the ticket can be exchanged for five calla lilies or three irises, which makes it an excellent deal.&lt;/p&gt;
&lt;p&gt;Though they&amp;rsquo;re called fields, they feel more like paddies, with the flowers blooming right out of the water. We went on a Monday, so it wasn&amp;rsquo;t crowded at all, and we could take photos freely, surrounded by hills and flowers. It really did feel like a world apart. The bees there were wonderfully plump and round, each little glutton diving headfirst into a calla lily or iris, stuffing itself in nose-first with its bottom wriggling in after, utterly absorbed. Genuinely the most endearing thing.&lt;/p&gt;
&lt;p&gt;The calla lilies were what drew us there, but it was the bees that made the flowers even more beautiful. The lilies showed me how strange and wonderful a petal&amp;rsquo;s shape and angle of bloom can be. The bees let me smell flowers&amp;rsquo; sweetness. I&amp;rsquo;ve always found it odd that the Chinese expression for &amp;ldquo;attracting bees and butterflies&amp;rdquo; (招蜂引蝶) carries a negative connotation. To me, a flower visited by bees feels warmer and more alive, less aloof, more approachable. And since every flower will fade in the end, why not bloom boldly and joyfully? Why wither in quiet, solitary dignity?&lt;/p&gt;
&lt;p&gt;The power of &amp;ldquo;togetherness&amp;rdquo; is greater than we think. Talking with my family, I said that Yangmingshan isn&amp;rsquo;t actually far at all, and yet on my own I could never quite summon the motivation to go up and see the flowers. So why does having someone alongside make it so much easier? Some things seem to work that way. Alone, the same thing feels flat. With one other person, it comes alive. With two, it becomes a garden in full bloom.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The season is winding down. Go see the flowers, and bring someone with you.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/5.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/5.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/7.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/7.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/8.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/8.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/9.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/9.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/10.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/10.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/11.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/11.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/12.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/12.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/13.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/13.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/14.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/14.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/15.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/15.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/16.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/16.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/17.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/17.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/18.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/18.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/44/19.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/44/19.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 04/23/26. It was later translated with assistance from AI tools, edited by me, and published in English on 05/02/26.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Much like the &lt;a href="https://blogblog.club/party"target="_blank"
&gt;Blogblog club&lt;/a&gt;, where every blog is its own small garden, and together they become a sea of flowers.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>The Stranger</title><link>https://alicehsu.blog/posts/2026/05/the-stranger/</link><pubDate>Sat, 02 May 2026 11:30:00 -0500</pubDate><guid>https://alicehsu.blog/posts/2026/05/the-stranger/</guid><description>So why is it that meeting someone at a particular moment can determine, for the rest of a lifetime, whether they become family or friend?</description><content:encoded>&lt;p&gt;A few weeks ago, back in Taiwan, a friend asked me:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;After all these years away, how do you think you&amp;rsquo;ve changed?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I thought for a moment and said, &amp;ldquo;I think it&amp;rsquo;s this feeling of being a stranger everywhere, no matter where I am.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The conversation drifted on, but my thoughts stayed behind. Three weeks earlier, landing at Taoyuan Airport, walking from the plane through the jet bridge, the familiar humid heaviness hit my skin all at once, and memories began pressing themselves back, one by one. Strangely, though, they wouldn&amp;rsquo;t quite stick. The distance that had grown between me and Taiwan over these years in the States had apparently given my body some kind of non-stick coating.&lt;/p&gt;
&lt;p&gt;And yet I wasn&amp;rsquo;t sad about it. I didn&amp;rsquo;t think the distance was a bad thing. If anything, I finally understood something about my past self.&lt;/p&gt;
&lt;p&gt;How so?&lt;/p&gt;
&lt;p&gt;After living somewhere quiet for a few years, I came to realize that life in Taiwan had always kept my senses in a state of constant overload:&lt;/p&gt;
&lt;p&gt;the grinding shriek of train wheels rounding the curve between Dongmen and Chiang Kai-shek Memorial Hall MRT stations;
&lt;br&gt;
the suffocating stillness just before an afternoon thunderstorm breaks;
&lt;br&gt;
pedestrians darting across streets without a glance at the crosswalk;
&lt;br&gt;
the firecrackers and piercing suona horns of a temple procession winding through the neighborhood;
&lt;br&gt;
the night markets blazing with signs in screaming colors and clashing contrasts,&lt;/p&gt;
&lt;p&gt;and countless other experiences I could never quite catalogue, all of which left me thoroughly worn out. I always wondered why most of the people around me seemed to manage just fine, rolling with the noise, joining in the gossip. I had grown up on this same soil, yet somehow never grew the eyes, nose, or ears to match it. (My mouth, however, adapted beautifully. Taiwanese food is unbeatable.)&lt;/p&gt;
&lt;p&gt;Leaving that land for North America, I found streets that were calmer, more harmonious in color, neighborhoods where houses sat in quiet order. But there was plenty here that demanded its own kind of adjustment: customer service calls that route you through number after number before leaving you on hold for half an hour; a two or three hour drive counted as nearby; restaurant servers who interrupt your meal to check on you, and then you tip them on top of it. (How is everything tasting? Great, thank you. How is everything tasting? Great, thank you. How is everything tasting? Great, thank you.)&lt;/p&gt;
&lt;p&gt;Do I miss Taiwan desperately because of all this? Not entirely. Do I miss the States desperately when I&amp;rsquo;m back in Taiwan? Not entirely either. I suddenly understood what a classmate once told me: &amp;ldquo;I&amp;rsquo;ve now lived in the States longer than I lived back home. I&amp;rsquo;m always missing Sri Lanka when I&amp;rsquo;m in America, and missing America when I&amp;rsquo;m in Sri Lanka.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Which leads me to a hypothesis: what if home is simply the sum of everything we miss? Home no longer confined to a birthplace or a childhood address, but stretched across time, made of the people, places, and things our hearts are tied to. Or perhaps it doesn&amp;rsquo;t even need to be something we love deeply. Just somewhere we can exist without feeling out of place, somewhere we fit rather than merely tolerate, is already remarkable. In this wide world, in environments that so often make us feel like we don&amp;rsquo;t quite belong, finding even one or two spaces where we can simply rest and breathe is an extraordinary stroke of luck.&lt;/p&gt;
&lt;p&gt;Writing this, I find myself thinking of the family and friends scattered in different places. Why do we become family and friends to each other? If it were purely biology, then by my own definition,&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; some people who share my blood don&amp;rsquo;t really fall within what I&amp;rsquo;d call family. If it were shared interests, how many interests does it take to truly become a friend? Does any common interest qualify? If it were shared values, then why do we sometimes meet people who are better than us in ways that make us willing to change?&lt;/p&gt;
&lt;p&gt;And sometimes, if we had met the same person at a different point in their life, or ours, perhaps we wouldn&amp;rsquo;t have become friends at all. So why is it that meeting someone at a particular moment can determine, for the rest of a lifetime, whether they become family or friend?&lt;/p&gt;
&lt;p&gt;The answer feels too mysterious for me to fully grasp. For now, I can only call it grace. Because this is not something we can get through effort, or arrange by carefully scheduling the right encounters. The grace of meeting someone who fits, someone with whom we simply belong, is what allows us, wherever we end up, to catch a glimpse of home: no loneliness, no need to stay guarded, time together that passes like seconds, old unspoken understandings quietly growing into new ones.&lt;/p&gt;
&lt;p&gt;And it is somewhere in that accumulation of seconds and unspoken understanding that the overwhelming sensory experiences and the cultural frustrations suddenly become a little easier to bear. I&amp;rsquo;m grateful that some people in my life have become a place I can rest when I&amp;rsquo;m tired. And I&amp;rsquo;m honored to be that place for some of them in return.&lt;/p&gt;
&lt;p&gt;May we be home to one another.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 04/18/26. It was later translated with assistance from AI tools, edited by me, and published in English on 05/02/26.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&amp;ldquo;Family&amp;rdquo; here refers to the subset of people, within both biological and faith relationships, with whom I genuinely feel at ease. &amp;ldquo;Friends&amp;rdquo; refers not only to peers but more broadly to those across all ages with whom I share a sincere connection. These definitions are not objective truths that apply universally; they are simply the author&amp;rsquo;s personal sense of things.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>About</title><link>https://alicehsu.blog/about/</link><pubDate>Fri, 01 May 2026 23:30:00 -0500</pubDate><guid>https://alicehsu.blog/about/</guid><description>&lt;figure class=" w-49"&gt;&lt;img src="https://alicehsu.blog/images/avatar.jpg"
 alt="profile photo"&gt;
&lt;/figure&gt;

&lt;p&gt;Writing, for me, is a way to settle, clarify, converse, experiment, and share.&lt;/p&gt;
&lt;p&gt;After writing on multiple platforms, I found that the nature of a platform undeniably shapes how a person expresses themselves and what they choose to write about. In order to preserve the greatest possible freedom in my writing, I started this blog in October 2025. As I kept writing, I realized this is still the place where I feel most at ease, and where I tend to meet a more authentic version of myself. Why is that? You can head right to the end of the hall to &amp;ldquo;&lt;a href="https://alicehsu.blog/posts/2026/01/pros-and-cons-of-self-hosted-blogs/"&gt;Pros and Cons of Self Hosted Blogs&lt;/a&gt;&amp;rdquo; to find out.&lt;/p&gt;</description><content:encoded>&lt;figure class=" w-49"&gt;&lt;img src="https://alicehsu.blog/images/avatar.jpg"
alt="profile photo"&gt;
&lt;/figure&gt;
&lt;p&gt;Writing, for me, is a way to settle, clarify, converse, experiment, and share.&lt;/p&gt;
&lt;p&gt;After writing on multiple platforms, I found that the nature of a platform undeniably shapes how a person expresses themselves and what they choose to write about. In order to preserve the greatest possible freedom in my writing, I started this blog in October 2025. As I kept writing, I realized this is still the place where I feel most at ease, and where I tend to meet a more authentic version of myself. Why is that? You can head right to the end of the hall to &amp;ldquo;&lt;a href="https://alicehsu.blog/posts/2026/01/pros-and-cons-of-self-hosted-blogs/"&gt;Pros and Cons of Self Hosted Blogs&lt;/a&gt;&amp;rdquo; to find out.&lt;/p&gt;
&lt;p&gt;Besides writing, I built a website called &lt;a href="https://visbible.org/"target="_blank"
&gt;VisBible&lt;/a&gt; — a Bible visualization project designed to help readers navigate the wealth of information in the Bible without feeling overwhelmed, so they can come to understand who God is and what His heart toward people looks like. I also have some &lt;a href="https://alicehsu.blog/portfolio/"&gt;musical works&lt;/a&gt; you&amp;rsquo;re welcome to browse.&lt;/p&gt;
&lt;p&gt;Finally, a heartfelt thank you to my husband &lt;a href="https://mhyeh.github.io/"target="_blank"
&gt;Samuel&lt;/a&gt; (Sam in my posts) for setting up this website and making it look so beautiful ❤️&lt;/p&gt;
&lt;p&gt;For any feedback, please don&amp;rsquo;t hesitate to contact me by email. You can reach me at: mail@alicehsu.blog&lt;/p&gt;</content:encoded></item><item><title>Good bye! My Old Scores</title><link>https://alicehsu.blog/posts/2026/05/good-bye-my-old-scores/</link><pubDate>Fri, 01 May 2026 22:30:00 -0500</pubDate><guid>https://alicehsu.blog/posts/2026/05/good-bye-my-old-scores/</guid><description>&lt;p&gt;A little memorial for the sheet music I&amp;rsquo;m about to throw away.

&lt;style&gt;
 
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 {
 width: 100%;
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-container {
 width: 100%;
 position: relative;
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item {
 display: inline-block;
 width: 100%;
 margin-bottom: 20px;
 break-inside: avoid;
 box-sizing: border-box;
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item img {
 width: 95%;
 height: auto;
 display: block;
 transition: transform 0.3s ease-in-out;
 border-radius: 0.5rem;
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .glightbox {
 display: block;
 text-decoration: none;
 overflow: hidden;
 cursor: pointer;
 border-radius: 0.5rem;
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .glightbox:hover,
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .glightbox:focus {
 text-decoration: none;
 outline: none;
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item:hover img {
 transform: scale(1.05);
}

#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item {
 overflow: hidden;
 border-radius: 0.5rem;
}
&lt;/style&gt;

&lt;div class="masonry-gallery" 
 id="masonry-fd1a8633dd6459ce8cf481b96443f62d-1"
 data-columns="1"
 data-gutter="20"
 data-animate="true"
 data-use-transform="true"
 data-center="true"
 data-max-columns="10"
 data-lightbox="true"&gt;

 &lt;div class="masonry-container"&gt;
 &lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post42home.jpg" 
 class="glightbox"
 data-gallery="masonry-fd1a8633dd6459ce8cf481b96443f62d-1"&gt;
 
 &lt;img
 src="https://alicehsu.blog/images/Post42home.jpg"
 alt=""
 
 
 loading="lazy"
 decoding="async"
 data-gallery-src="https://alicehsu.blog/images/Post42home.jpg"
 data-gallery-alt=""
 data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;script&gt;
(function() {
 const containerId = 'masonry-fd1a8633dd6459ce8cf481b96443f62d-1';
 const config = {
 columns: 1 ,
 gutter: 20 ,
 maxColumns: 10 ,
 lightbox: true ,
 animate: "true",
 useTransform: "true",
 center: "true"
 };
 
 console.log('Initializing masonry gallery:', containerId, config);
 
 function initMasonryGallery() {
 const container = document.getElementById(containerId);
 if (!container) {
 console.error('Masonry container not found:', containerId);
 return;
 }
 
 const masonryContainer = container.querySelector('.masonry-container');
 if (!masonryContainer) {
 console.error('Masonry inner container not found');
 return;
 }
 
 
 if (typeof Macy === 'undefined') {
 console.error('Macy.js not loaded');
 return;
 }
 
 console.log('Found container and Macy, initializing...');
 
 
 try {
 const macyInstance = Macy({
 container: masonryContainer,
 trueOrder: false,
 waitForImages: true,
 useOwnImageLoader: false,
 debug: false,
 mobileFirst: true,
 columns: config.columns,
 margin: {
 x: config.gutter,
 y: config.gutter
 },
 breakAt: {
 1400: Math.min(config.maxColumns, config.columns),
 1200: Math.min(config.maxColumns, config.columns),
 940: Math.min(config.maxColumns, config.columns), 
 768: Math.min(3, config.columns),
 520: Math.min(2, config.columns),
 400: 1
 }
 });
 
 console.log('Macy initialized successfully for', containerId);
 
 
 const images = masonryContainer.querySelectorAll('img');
 let loadedImages = 0;
 const totalImages = images.length;
 
 function onImageLoad() {
 loadedImages++;
 console.log(`Image ${loadedImages}/${totalImages} loaded`);
 
 if (loadedImages === totalImages) {
 setTimeout(() =&gt; {
 if (macyInstance &amp;&amp; macyInstance.reCalculate) {
 macyInstance.reCalculate(true);
 console.log('Macy layout recalculated after all images loaded');
 }
 }, 100);
 }
 }
 
 images.forEach(img =&gt; {
 if (img.complete) {
 onImageLoad();
 } else {
 img.addEventListener('load', onImageLoad);
 img.addEventListener('error', onImageLoad);
 }
 });
 
 } catch (error) {
 console.error('Error initializing Macy:', error);
 }
 
 
 if (config.lightbox) {
 if (typeof GLightbox !== 'undefined') {
 try {
 
 let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
 
 if (typeof globalLightboxConfig === 'string') {
 try {
 globalLightboxConfig = JSON.parse(globalLightboxConfig);
 } catch (e) {
 console.error('Error parsing masonry GLightbox config:', e);
 globalLightboxConfig = {};
 }
 } 
 const lightbox = GLightbox({
 selector: `#${containerId} .glightbox`,
 touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
 loop: globalLightboxConfig.loop ?? true,
 draggable: globalLightboxConfig.draggable ?? true,
 zoomable: globalLightboxConfig.zoomable ?? true,
 preload: globalLightboxConfig.preload ?? true,
 width: globalLightboxConfig.width || '90vw',
 height: globalLightboxConfig.height || '90vh',
 descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
 onOpen: () =&gt; {
 console.log('GLightbox opened for', containerId);
 }
 });
 
 console.log('GLightbox initialized successfully for', containerId, 'with global config');
 
 } catch (error) {
 console.error('Error initializing GLightbox:', error);
 }
 } else {
 console.error('GLightbox not loaded but lightbox is enabled');
 }
 }
 }
 
 
 function waitForLibraries() {
 let attempts = 0;
 const maxAttempts = 50;
 
 function check() {
 attempts++;
 
 const macyReady = typeof Macy !== 'undefined';
 const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
 
 if (macyReady &amp;&amp; lightboxReady) {
 initMasonryGallery();
 } else if (attempts &lt; maxAttempts) {
 setTimeout(check, 100);
 } else {
 console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
 }
 }
 
 check();
 }
 
 
 if (document.readyState === 'loading') {
 document.addEventListener('DOMContentLoaded', waitForLibraries);
 } else {
 setTimeout(waitForLibraries, 50);
 }
})();
&lt;/script&gt;&lt;/p&gt;</description><media:thumbnail url="https://alicehsu.blog/images/Post42home.jpg"/><media:content url="https://alicehsu.blog/images/Post42home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post42home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;A little memorial for the sheet music I&amp;rsquo;m about to throw away.
&lt;style&gt;
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 {
width: 100%;
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .glightbox:hover,
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-fd1a8633dd6459ce8cf481b96443f62d-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-fd1a8633dd6459ce8cf481b96443f62d-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post42home.jpg"
class="glightbox"
data-gallery="masonry-fd1a8633dd6459ce8cf481b96443f62d-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post42home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post42home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-fd1a8633dd6459ce8cf481b96443f62d-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;These are just the tip of the iceberg of a huge pile of books. On top of these, I also threw out many folders with printed sheet music. All those childhood memories of practicing piano came flooding back.&lt;/p&gt;
&lt;p&gt;And I remember so vividly the excitement of finishing Hanon and starting to play Burgmüller.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 03/29/26. It was later translated with assistance from AI tools, edited by me, and published in English on 05/01/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>How to Save Time</title><link>https://alicehsu.blog/posts/2026/05/how-to-save-time/</link><pubDate>Fri, 01 May 2026 19:30:00 -0500</pubDate><guid>https://alicehsu.blog/posts/2026/05/how-to-save-time/</guid><description>At the library near my house, I spotted a slim little book sitting in the non-fiction section called &amp;ldquo;How to Save Time.&amp;rdquo;</description><media:thumbnail url="https://alicehsu.blog/images/Post/41/2.JPG"/><media:content url="https://alicehsu.blog/images/Post/41/2.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/41/2.JPG" type="image/jpeg"/><content:encoded>&lt;p&gt;At the library near my house, I spotted a slim little book sitting in the non-fiction section called &amp;ldquo;How to Save Time.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I was expecting it to be a straightforward book — some arguments, maybe a few practical tips. But the moment I opened to the first page, I was stunned.&lt;/p&gt;
&lt;p&gt;The first page:
&lt;style&gt;
#masonry-312beb9c8b941177b65bd68ff6370b02-1 {
width: 100%;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .glightbox:hover,
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-312beb9c8b941177b65bd68ff6370b02-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-312beb9c8b941177b65bd68ff6370b02-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/41/1.JPG"
class="glightbox"
data-gallery="masonry-312beb9c8b941177b65bd68ff6370b02-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/41/1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/41/1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-312beb9c8b941177b65bd68ff6370b02-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;Okay?&lt;/p&gt;
&lt;p&gt;I flipped through it quickly. The whole book was exactly like the first page: one picture and one simple sentence.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;May keeps losing her things.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;So May put a bowl on the table. The bowl holds her glasses. The bowl holds her keys. The bowl holds her phone.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;Now May knows where things are.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;So May had been wasting all her time looking for her stuff this whole time?&lt;/p&gt;
&lt;p&gt;There was also this part:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;May wants to do it all.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;She takes classes.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;She bowls on a team.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;She helps at a playschool.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;But May cannot do it all.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;So May cuts down.&amp;rdquo;
&lt;br&gt;
&amp;ldquo;She saves time.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;hellip;&amp;hellip;Life could really be that simple, couldn&amp;rsquo;t it lol&lt;/p&gt;
&lt;p&gt;The thing that made me nearly lose it in the library was this:
&lt;style&gt;
#masonry-312beb9c8b941177b65bd68ff6370b02-2 {
width: 100%;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .glightbox:hover,
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-312beb9c8b941177b65bd68ff6370b02-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-312beb9c8b941177b65bd68ff6370b02-2"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/41/2.JPG"
class="glightbox"
data-gallery="masonry-312beb9c8b941177b65bd68ff6370b02-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/41/2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/41/2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-312beb9c8b941177b65bd68ff6370b02-2';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;(What does this have to do with saving time?!) I screamed internally, desperately trying not to laugh in the library, shoulders shaking the whole time.&lt;/p&gt;
&lt;p&gt;You shouldn&amp;rsquo;t chase productivity too hard in life. Proper rest is still necessary. That&amp;rsquo;s what the author was trying to say, right?&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re curious, feel free to grab a copy &lt;a href="https://us.grassrootsbooks.net/products/how-to-save-time"target="_blank"
&gt;here&lt;/a&gt; — $9.95 each, and there&amp;rsquo;s a preview on the website. Oh, and by the way, the audio sample is actually long enough that you can hear the entire book.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 03/12/26. It was later translated with assistance from AI tools, edited by me, and published in English on 05/01/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Memories of Pudding</title><link>https://alicehsu.blog/posts/2026/05/memories-of-pudding/</link><pubDate>Fri, 01 May 2026 19:00:00 -0500</pubDate><guid>https://alicehsu.blog/posts/2026/05/memories-of-pudding/</guid><description>Some people are store-bought pudding; some people are homemade pudding.</description><media:thumbnail url="https://alicehsu.blog/images/Post39home.jpg"/><media:content url="https://alicehsu.blog/images/Post39home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post39home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;How do you eat your pudding?&lt;/p&gt;
&lt;p&gt;When I was little, I was absolutely obsessed with Tong-Yi pudding (a famous brand of store-bought pudding in Taiwan). I remember always using those square plastic spoons that came with it at the convenience store, eating the pudding layer by layer. I mean that quite literally. I&amp;rsquo;d gently shave off one thin layer from the surface, then the next, and the next. While working through each layer, I&amp;rsquo;d try my best to make sure there were no visible dig marks between one spoonful and the last. When I reached the boundary between the custard and the caramel, I&amp;rsquo;d insist on keeping that final yellow layer completely untouched by any caramel. Then, when it came to the caramel itself, I&amp;rsquo;d eat the curved edges first before finishing off whatever remained in the center.&lt;/p&gt;
&lt;p&gt;All that effort just to get a perfect cross-section — smoothing out any stray marks that dared to appear. Why go to all that trouble? I don&amp;rsquo;t think it was simply because young me had nothing better to do. It was more of a reluctance to let it be over. Pudding didn&amp;rsquo;t show up in our house very often, and whenever this rare guest appeared in the fridge, it deserved to be treated with care to make the happy memory last a little longer.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Growing up, pudding milk tea was a game changer. I&amp;rsquo;ve realized that I might actually love it even more than bubble tea.&lt;/p&gt;
&lt;p&gt;Unsweetened milk tea paired with pudding — rich, smooth, and just the right amount of sweet. Unlike bubble tea, which demands chewing effort and offers little control over how many bobas you get per sip, pudding milk tea is far more gentle. It sips beautifully, with the pudding-to-tea ratio feeling just right.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Last weekend I was invited to a potluck. The host said we didn&amp;rsquo;t need to bring anything, but if we wanted to, something sweet would be welcome. My eyes lit up and I turned to Sam: &amp;ldquo;Should we make pudding from scratch?&amp;rdquo; He seemed less excited than I was, but I managed to talk him into it.
Neither of us had ever made pudding before, so to avoid serving guests a failed batch, we did a test run following &lt;a href="%28https://www.youtube.com/watch?v=PlA09FSd22E%29"&gt;MASA&amp;rsquo;s recipe&lt;/a&gt;. Watching the mountain of sugar pour in, I thought this pudding was going to be devastatingly sweet. Sure enough, the first batch was so sweet it gave me an actual stomachache. The version we brought to the potluck used only 70% of the original sugar, which was still a touch sweet but at least no longer stomach-wrecking. Honestly, I think 50% of the sugar in the custard itself would have been just right. On top of that, since our pudding molds were a different size from MASA&amp;rsquo;s, the baking time had to be extended significantly. Making desserts really does come down to the tiniest details. The tiniest difference throws everything off.&lt;/p&gt;
&lt;p&gt;Also, what surprised me most was the taste. After making it ourselves, I discovered that homemade pudding and store-bought pudding are quite different: the caramel in homemade pudding doesn&amp;rsquo;t form a distinct separate layer the way store-bought pudding does. It&amp;rsquo;s more liquid, pooling at the base. The custard itself is intensely rich and fragrant, with a firm, dense texture that&amp;rsquo;s not so easy to scoop through. Come to think of it, store-bought pudding is soft and almost mushy, and the flavor is nowhere near as deep.&lt;/p&gt;
&lt;p&gt;You don&amp;rsquo;t know what real pudding tastes like until you&amp;rsquo;ve had the real thing, and only then do you realize that store-bought pudding isn&amp;rsquo;t really pudding at all. It just looks like one.&lt;/p&gt;
&lt;p&gt;This feels surprisingly applicable to relationships too. Some people are store-bought pudding; some people are homemade pudding. Homemade pudding gives you love that&amp;rsquo;s genuine — real milk, real eggs, real sugar. But some puddings look every bit the part, shaped perfectly in their little molds, while having none of the substance that pudding should have (fun fact: store-bought pudding contains no fresh milk or eggs whatsoever). If you&amp;rsquo;ve only ever had store-bought pudding, you might think that&amp;rsquo;s just what pudding is. But once you encounter the homemade kind, you realize that what you had before wasn&amp;rsquo;t pudding at all.&lt;/p&gt;
&lt;p&gt;So the next time someone is being insincere with you, you can quietly mutter under your breath: &amp;ldquo;You store-bought pudding.&amp;rdquo; (Please don&amp;rsquo;t actually do this.)&lt;/p&gt;
&lt;p&gt;That said, the next time I&amp;rsquo;m back in Taiwan, I&amp;rsquo;ll probably still grab a store-bought pudding and wash it down with a pudding milk tea — because they&amp;rsquo;re convenient, and because they carry just enough nostalgia to bring back a little of my youth. I just probably won&amp;rsquo;t be eating it so painstakingly carefully anymore. One spoon, straight to the bottom.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a photo of our test batch of pudding:
&lt;style&gt;
#masonry-0246d0d0cb50628e46be996a7807ad73-1 {
width: 100%;
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .masonry-item img {
width: 50%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .glightbox:hover,
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-0246d0d0cb50628e46be996a7807ad73-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-0246d0d0cb50628e46be996a7807ad73-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post39home.jpg"
class="glightbox"
data-gallery="masonry-0246d0d0cb50628e46be996a7807ad73-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post39home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post39home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-0246d0d0cb50628e46be996a7807ad73-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 02/28/26. It was later translated with assistance from AI tools, edited by me, and published in English on 05/01/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Walk in the Afternoon</title><link>https://alicehsu.blog/posts/2026/05/walk-in-the-afternoon/</link><pubDate>Fri, 01 May 2026 18:30:00 -0500</pubDate><guid>https://alicehsu.blog/posts/2026/05/walk-in-the-afternoon/</guid><description>For a lake to freeze that deep, it takes not one cold day, but many cold days, weeks, and months.</description><media:thumbnail url="https://alicehsu.blog/images/Post/38/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/38/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/38/1.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;Today, temperatures rarely climbed above ten degrees Celsius. Seeing the sunshine outside, I couldn&amp;rsquo;t help setting down my work and stepping out for a walk.&lt;/p&gt;
&lt;p&gt;On warmer days like this, small creatures come out one by one: I spotted a squirrel, busily searching for acorns, and heard the cheerful chirping of sparrows. Alongside the little animals, plenty of people had emerged, too. The path was full of passersby soaking up the afternoon sun.&lt;/p&gt;
&lt;p&gt;I wandered over to the nearby lake. Some parents had brought their children to play in the sandbox by the water; a little kid on an electric scooter whizzed past me; and older kids rode their bikes with wide grins stretched across their faces.&lt;/p&gt;
&lt;p&gt;Ah, they must have been cooped up just as long as I had. Finally able to come out and breathe, smiles impossible to hold back.&lt;/p&gt;
&lt;p&gt;Beyond the children, there were also some young adults jogging along the lakeside. Dressed in fitted athletic shirts and bright-colored running shoes, not even the muddy ground could slow their confident, steady strides. Some had brought their dogs along — one Bernese Mountain Dog with a pair of bright, clever eyes gently set down the stick it had been carrying, waiting for its owner behind to pick it up and throw it forward, then trotted off happily to retrieve its beloved little branch.&lt;/p&gt;
&lt;p&gt;There were also elderly people walking in pairs — some who looked like couples, others like old friends. Older folks walk with slower, more careful steps, and tend to dress in more layers. Every now and then one would pass by with a warm smile and a friendly hello. Oh, and equally unhurried were new parents, gently pushing their strollers — a moment that felt like it could last forever.&lt;/p&gt;
&lt;p&gt;I made my way to the far end of the lake where fewer people ventured, and the view opened up. The once-frozen surface had become uneven and broken, and the reeds along the bank had begun to poke their heads out. Patches of half-melted ice clinging to them like marshmallows on hot cocoa, soft and quietly delightful. It was hard to imagine that not long ago this lake had been one solid block of ice, solid enough to skate on.&lt;/p&gt;
&lt;p&gt;For a lake to freeze that deep, it takes not one cold day, but many cold days, weeks, and months. Even so, for the sun, melting a lake is no great task — warm it day by day, week by week, month by month, and it will thaw in time.&lt;/p&gt;
&lt;p&gt;Do we focus on the cold, or on the warmth? Do we see the present moment, or eternity?&lt;/p&gt;
&lt;p&gt;An afternoon walk to shake off the chill and welcome the first hints of spring.&lt;/p&gt;
&lt;style&gt;
#masonry-426b522110167236a6a95bd4fc2e4d27-1 {
width: 100%;
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .glightbox:hover,
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-426b522110167236a6a95bd4fc2e4d27-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-426b522110167236a6a95bd4fc2e4d27-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/38/1.jpg"
class="glightbox"
data-gallery="masonry-426b522110167236a6a95bd4fc2e4d27-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/38/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/38/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/38/2.jpg"
class="glightbox"
data-gallery="masonry-426b522110167236a6a95bd4fc2e4d27-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/38/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/38/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/38/3.JPG"
class="glightbox"
data-gallery="masonry-426b522110167236a6a95bd4fc2e4d27-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/38/3.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/38/3.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-426b522110167236a6a95bd4fc2e4d27-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 02/16/26. It was later translated with assistance from AI tools, edited by me, and published in English on 05/01/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>The Apothecary Diaries: For My Friends with Their Inner Light</title><link>https://alicehsu.blog/posts/2026/02/the-apothecary-diaries/</link><pubDate>Tue, 10 Feb 2026 16:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/02/the-apothecary-diaries/</guid><description>why do the protagonist’s traits resonate with me so much? I think it’s because she reminds me of my friends.</description><media:thumbnail url="https://alicehsu.blog/images/Post37home.jpg"/><media:content url="https://alicehsu.blog/images/Post37home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post37home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post37home.jpg"
loading="eager"
/&gt;&lt;p&gt;A few days ago, I read a &lt;a href="https://www.cna.com.tw/news/acul/202602070198.aspx"target="_blank"
&gt;news report&lt;/a&gt; about Aoi Yuki, the voice actress for the protagonist of &lt;em&gt;The Apothecary Diaries&lt;/em&gt;, visiting Taiwan.&lt;/p&gt;
&lt;p&gt;Glancing through the article, I saw a few keywords: Maomao, rear palace, detective. Hey! Right on target! This was exactly my cup of tea.&lt;/p&gt;
&lt;p&gt;I asked Sam if he’d heard of this anime. He said it had great reviews, though he hadn’t seen it himself. So, the two of us, both feeling under the weather, binged the entire first season over a single weekend.&lt;/p&gt;
&lt;p&gt;There are several points about this anime that really drew me in:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The female lead isn’t a high-born lady; she was raised in a brothel. You might think it’s a typical “rags-to-riches” inspirational story, but it’s not. She often thinks about how to navigate danger and solve problems without standing out. Beyond that, she’s adaptable, dedicated to her work, and kind to those around her.&lt;/li&gt;
&lt;li&gt;She has zero interest in handsome men, yet her eyes light up whenever she sees the medicinal herbs she’s passionate about.&lt;/li&gt;
&lt;li&gt;Her appearance is (deliberately) unremarkable, but she possesses profound pharmacological knowledge and exceptional deductive reasoning skills.&lt;/li&gt;
&lt;li&gt;Unlike &lt;em&gt;Detective Conan&lt;/em&gt;, where the protagonist’s background is clearly laid out in the first episode, &lt;em&gt;The Apothecary Diaries&lt;/em&gt; slowly scatters clues throughout the episodes, letting viewers piece together the origins of the male and female leads themselves.&lt;/li&gt;
&lt;li&gt;Also unlike Conan, where most cases are wrapped up within a single episode, &lt;em&gt;The Apothecary Diaries&lt;/em&gt; resolves the immediate issue while often leaving one or two lingering mysteries that aren’t unraveled until much later.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The storytelling method helps spark the reader’s engagement, but why do the protagonist’s traits resonate with me so much? I think it’s because she reminds me of my friends.&lt;/p&gt;
&lt;p&gt;I had a few friends in university who were the “hidden gem” the kind of person. They had excellent grades but weren’t interested in being top-of-the-class. They were walking encyclopedias regarding the things they loved. For instance, one friend loved the &lt;em&gt;Grave Robbers’ Chronicles&lt;/em&gt; audiobooks. Several times while we were working part-time for a professor, she would narrate the story from the very first chapter until our shift ended, leaving me with a cliffhanger for the next time we worked together (we did still work hard!). Another friend was obsessed with the Victoria’s Secret Fashion Show and could identify every supermodel. They seemed ordinary on the surface, but they all shared these traits: they were incredibly loyal, respected their friends’ choices, and offered support at just the right moments. They were indifferent to fame or fortune and never sought the spotlight, yet they were the most sincere friends one could ask for. Looking back, I feel truly grateful for their companionship during my university years.&lt;/p&gt;
&lt;p&gt;I hope the author maintains this level of quality in the writing. I also hope my friends—those people who, like Maomao, possess a quiet, brilliant inner light—are all doing well.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from AI tools, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Chicken Soup</title><link>https://alicehsu.blog/posts/2026/02/chicken-soup/</link><pubDate>Tue, 10 Feb 2026 16:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/02/chicken-soup/</guid><description>there would probably be beams of light shooting out from the soup right now, with chickens dancing happily behind me 🐔🐔🐔</description><media:thumbnail url="https://alicehsu.blog/images/Post/36/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/36/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/36/1.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;I haven’t been feeling well lately, suffering from sinusitis and an ear infection, so I’ve been craving something hot to help my body recover quickly.&lt;/p&gt;
&lt;p&gt;It is said that chicken soup has anti-inflammatory properties, so Sam and I decided to challenge ourselves by making a whole chicken soup—the kind where an entire chicken is actually in the pot!&lt;/p&gt;
&lt;p&gt;Making a truly impressive chicken soup is actually quite a hassle. If you’re making the “Tori Paitan” (creamy chicken broth) used in ramen, you have to simmer a pot of broth first, then mince the chicken meat and boil it with the original broth a second time. As for the clear chicken soup served in high-end hotels, word has it they use two chickens: the first is just for the broth and isn’t meant to be eaten, while the second is the one actually served. Since we were just making a “home-style” (?) version, we decided to stick with one chicken from start to finish.&lt;/p&gt;
&lt;p&gt;When we went to the supermarket, we found there weren’t many choices on the shelf—just two types:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Air-chilled chicken: All the giblets were cleaned out, but the chickens were on the smaller side.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Conventionally processed chicken: Much larger, but still had some giblets inside.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(Guess which one we chose?)&lt;/p&gt;
&lt;p&gt;After thinking it over, we felt that if we were going to stew it, we might as well go big. So, we headed home with that large, round ball of a chicken in its plastic bag.&lt;/p&gt;
&lt;p&gt;After giving the chicken a “spa” wash, hero Sam put on gloves and fished the head and giblets out of its belly (nothing can stop a foodie!). We then rinsed the chicken thoroughly, inside and out. Next, we boiled a pot of water and gingerly lowered the chicken in (it was actually quite precarious—the chicken was so big and our pot so small that we almost scalded ourselves). After blanching it for two minutes, we lifted it out and placed it into the inner pot of the electric rice cooker.&lt;/p&gt;
&lt;p&gt;Next, we added ginger slices, soaked shiitake, and some garlic to the inner pot. We took the water used for blanching, added a bit of rice wine, salt, sugar, and Shaoxing wine, and poured it in along with the mushroom soaking liquid. After sealing it tight with aluminum foil, it was ready to be steamed in the cooker!&lt;/p&gt;
&lt;p&gt;We put two cups of water in the outer pot, let it pop, added two more cups, and when it popped again, we had this perfect pot of chicken soup.&lt;/p&gt;
&lt;style&gt;
#masonry-5674fa6142238f1239a71c67b36f9d31-1 {
width: 100%;
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 10px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .masonry-item img {
width: 95%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .glightbox:hover,
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-5674fa6142238f1239a71c67b36f9d31-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-5674fa6142238f1239a71c67b36f9d31-1"
data-columns="2"
data-gutter="10"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/36/1.jpg"
class="glightbox"
data-gallery="masonry-5674fa6142238f1239a71c67b36f9d31-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/36/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/36/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/36/2.jpg"
class="glightbox"
data-gallery="masonry-5674fa6142238f1239a71c67b36f9d31-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/36/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/36/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-5674fa6142238f1239a71c67b36f9d31-1';
const config = {
columns: 2 ,
gutter: 10 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;I had a bowl, and the flavor was delicious! It was even better than some of the chicken soups you get at restaurants. The essence released by the mushrooms and the chicken made the broth incredibly rich and complex. If I were in an anime, there would probably be beams of light shooting out from the soup right now, with chickens dancing happily behind me 🐔🐔🐔.&lt;/p&gt;
&lt;p&gt;And then, quite decadently, we used this clear, golden broth as a base for hot pot.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 02/09/26. It was later translated with assistance from AI tools, edited by me, and published in English on 02/10/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>When the Weather is Dry......</title><link>https://alicehsu.blog/posts/2026/02/static-shock/</link><pubDate>Thu, 05 Feb 2026 22:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/02/static-shock/</guid><description>I joke that our &amp;ldquo;sparks&amp;rdquo; are a bit too literal.</description><media:thumbnail url="https://alicehsu.blog/images/Post35home.jpg"/><media:content url="https://alicehsu.blog/images/Post35home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post35home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post35home.jpg"
loading="eager"
/&gt;&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;This is my submission for the &lt;a href="https://blogblog.club/party"target="_blank"
&gt;“BlogBlog Club - February 2026.”&lt;/a&gt; This month’s theme is “Is it just me?” (hosted by Wiwi). If you have your own blog, you’re welcome to join us!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;When I first moved to the US, I had to adapt not only to differences in language and culture but also to the difference in humidity.&lt;/p&gt;
&lt;p&gt;As winter arrives and the heater kicks on, the house becomes full of hidden dangers. If I’m not careful, sparks fly as I touch objects around the house. That’s right—static electricity. A phenomenon I barely noticed in Taiwan has become a constant presence in the US.&lt;/p&gt;
&lt;p&gt;As soon as the heater starts, the indoor humidity plummets. Whenever I touch a doorknob, a hanger, or my laptop, I get zapped with a sharp crack. Sometimes, when I touch Sam, sparks even fly between us. I joke that our &amp;ldquo;sparks&amp;rdquo; are a bit too literal.&lt;/p&gt;
&lt;p&gt;One day, I finally couldn’t take it anymore and bought a humidifier on Amazon for the living room. Watching the mist slowly puff out gave me so much peace of mind. Eventually, I didn’t have to live my life in a constant state of alert.&lt;/p&gt;
&lt;p&gt;Even so, the fear of getting shocked is deeply rooted. Whenever I have to touch a metal object, I always find myself using awkward maneuvers to try and reduce the chance of getting zapped.&lt;/p&gt;
&lt;p&gt;For example: before touching a doorknob, I’ll quickly tap it with my fingernail and only grip it once I’m sure it’s safe. If I’m washing my hands, I’ll turn on the faucet and quickly swipe my hand through the water stream first, making sure it’s okay before putting my hands under to rinse. When I come home and need to hang my coat, I try my best not to touch the coat stand; instead, I’ll swing my coat&amp;rsquo;s hood to hook it.&lt;/p&gt;
&lt;p&gt;And there are more: passing by the humidifier, I’ll hover my hands over the steam for a second; I don&amp;rsquo;t grab the handle to close the car door, but instead use my elbow; before shaking hands with someone, I’ll secretly breathe into my own palms (though it doesn’t really work—I still end up getting zapped anyway).&lt;/p&gt;
&lt;p&gt;I wonder if I&amp;rsquo;m the only one this afraid of static electricity? If you’re just as terrified of it as I am, or if you have any clever tricks for fighting it, feel free to email me and share (&lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt;). Let me know I’m not alone, haha.&lt;/p&gt;
&lt;p&gt;When everything is dry and parched, you don’t just have to watch out for fires—you have to watch out for static too!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from AI tools, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>The Matrix: That Strange Feeling Matters</title><link>https://alicehsu.blog/posts/2026/01/the-matrix-that-strange-feeling-matters/</link><pubDate>Tue, 27 Jan 2026 16:40:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/the-matrix-that-strange-feeling-matters/</guid><description>I think every change begins with a sense that something is wrong.</description><media:thumbnail url="https://alicehsu.blog/images/Post33home.png"/><media:content url="https://alicehsu.blog/images/Post33home.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post33home.png" type="image/jpeg"/><content:encoded>&lt;p&gt;On my last trip, during a flight from San Diego back to Chicago, I finally watched &lt;em&gt;The Matrix&lt;/em&gt;. There was a dialogue between Keanu Reeves and Laurence Fishburne that left a deep impression on me.&lt;/p&gt;
&lt;style&gt;
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 {
width: 100%;
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .glightbox:hover,
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-f110c3513b35dbc3798c4bc9bc783c7d-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-f110c3513b35dbc3798c4bc9bc783c7d-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post33home.png"
class="glightbox"
data-gallery="masonry-f110c3513b35dbc3798c4bc9bc783c7d-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post33home.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post33home.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-f110c3513b35dbc3798c4bc9bc783c7d-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;That you are a slave, Neo.&lt;/p&gt;
&lt;p&gt;Like everyone else, you were born into bondage,&lt;/p&gt;
&lt;p&gt;Born into a prison that you cannot smell or taste or touch,&lt;/p&gt;
&lt;p&gt;A prison… for your mind.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;This dialogue is Laurence Fishburne’s description of the &amp;ldquo;Matrix&amp;rdquo;: it tells of how the world the protagonist and everyone else inhabits is not actually the real world, but a world manipulated by the “Matrix.”&lt;/p&gt;
&lt;p&gt;Sounds like social media, doesn&amp;rsquo;t it?&lt;/p&gt;
&lt;h2 id="the-matrix-and-social-media"&gt;The Matrix and Social Media&lt;/h2&gt;
&lt;p&gt;Social media is like a prison for our minds: algorithms feed us messages every day, and we consume them just like prison food. It keeps you from starving, but it lacks nutrition or flavor. Occasionally, it’s even worse than prison food; some inflammatory and provocative words are actually toxic.&lt;/p&gt;
&lt;p&gt;Many social media creators are like slaves, contributing their talents within closed platforms while the platforms remain the biggest beneficiaries. Non-creators are also slaves; they contribute their attention. Attention is time, time is life, and life is the most precious asset we have on this earth.&lt;/p&gt;
&lt;p&gt;I find one thing about social media particularly paradoxical: it feels like you own the key to the prison—you can leave just by logging out. But in reality, it possesses a terrifying, magnet-like force that pulls you back at any moment. Even if you log out repeatedly, you&amp;rsquo;re already hooked on those quick dopamine hits, so you keep coming back. It&amp;rsquo;s addiction, plain and simple.&lt;/p&gt;
&lt;p&gt;Escaping such a prison requires great effort and cost. Besides struggling with how to quit, you must face the lack of understanding from others and your own occasional FOMO (Fear of Missing Out)—the worry of missing out on other people’s life stories. However, compared to the protagonist in the movie who must undergo a terrifying, inhuman surgery to gain freedom, the price of leaving social media is much smaller. It only takes some effort and method to escape this cage of the mind. Furthermore, unlike the steak in &lt;em&gt;The Matrix&lt;/em&gt; which becomes tasteless after leaving, you will find that there are many more delicious things in the real world: great books, classic movies, and moving music. There are so many wonderful creations from throughout history that don’t exist on Facebook or Instagram!&lt;/p&gt;
&lt;h2 id="my-embarrassing-past"&gt;My Embarrassing Past&lt;/h2&gt;
&lt;p&gt;In the past, especially during my college years, I spent way too much time on Instagram and Facebook. I noticed a behavioral pattern: whenever I encountered setbacks or sadness, I would open social media to look at posts. It was a quick way to distract myself, but it accumulated many hidden problems. At that time, I hadn’t learned to deal with difficulties in a healthy way, resulting in a prime period of my life simply slipping away. Social media substantially stole my time and my life.&lt;/p&gt;
&lt;p&gt;The article &lt;a href="https://alicehsu.blog/posts/2025/09/what-happened-when-i-deleted-my-facebook-and-instagram-app/"&gt;“What Happened When I Deleted My Facebook and Instagram App?”&lt;/a&gt; was written in 2019. That wasn’t the moment I truly quit social media; it was just a starting point. It took me years, and eventually, I had to use the extreme method of deleting my accounts directly to truly break free from the influence of social media.&lt;/p&gt;
&lt;p&gt;Despite the time and effort it took, I am still glad that my 2019 self was like Neo at the beginning of the movie: having an indescribable, strange feeling about this world.&lt;/p&gt;
&lt;h2 id="that-strange-feeling-is-the-start-of-everything"&gt;That Strange Feeling is the Start of Everything&lt;/h2&gt;
&lt;p&gt;That indescribable strange feeling was actually the beginning of everything—it started my journey away from social media. &lt;strong&gt;I think every change begins with a sense that something is wrong, right? It’s that feeling where everyone else thinks things are normal, but only you know that something feels a bit off.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As a side note, if you successfully quit social media but still feel like something is wrong, that is also normal. It means you have discovered an even larger cage surrounding you, and the Christian faith is the force that helps you escape that cage and resist the magnetic pull.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Finally, I want to say: classics are truly classics! &lt;em&gt;The Matrix&lt;/em&gt; was actually released in 1999, a time when social media had not yet overrun the world. Looking at it now, I wouldn’t call it a prophecy; I would only say that a classic possesses the power to pierce through time and space, resonating with people across different generations.&lt;/p&gt;
&lt;p&gt;Let’s go watch more classics together!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from Typeless, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Recommend Typeless</title><link>https://alicehsu.blog/posts/2026/01/recommend-typeless/</link><pubDate>Sat, 24 Jan 2026 19:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/recommend-typeless/</guid><description>It handles mixed-language sentences quite well. For example: “我覺得那家 ice cream shop 的 Gelato 很好吃，下次我想要吃 strawberry 口味的！” This code-switching sentence was actually dictated using Typeless.</description><media:thumbnail url="https://alicehsu.blog/images/Post32home.jpg"/><media:content url="https://alicehsu.blog/images/Post32home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post32home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post32home.jpg"
loading="eager"
/&gt;&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;This is not a sponsored post, but purely a passionate review—though if Typeless wants to sponsor me, I wouldn’t say no!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;Today, I want to recommend a voice input software that has been incredibly helpful to me, called Typeless.&lt;/p&gt;
&lt;p&gt;I discovered Typeless after reading &lt;a href="https://readingoutpost.com/typeless/"target="_blank"
&gt;an article by Waki&lt;/a&gt; (who, in turn, learned about it from a video by another creator). That’s how I found out about this voice input tool.&lt;/p&gt;
&lt;p&gt;Typeless is software that respects user privacy. They claim that once data is uploaded to the server and processed, it is immediately destroyed after being downloaded back to your computer. They also don’t use your data to train their language models. Your data stays only on your device. Typeless can be set to output Traditional Chinese. Waki mentioned this is more user-friendly than Whisperflow, which can only produce Simplified Chinese. In my experience, it mostly outputs Traditional Chinese, though occasionally Simplified Chinese appears—a strange little bug. However, I think the pros far outweigh this minor flaw.&lt;/p&gt;
&lt;h2 id="how-it-helps-me"&gt;How It Helps Me&lt;/h2&gt;
&lt;h3 id="1-giving-my-hands-a-rest"&gt;1. Giving My Hands a Rest&lt;/h3&gt;
&lt;p&gt;My hands have been injured for a while and are currently in a long-term recovery phase. For me, Typeless arrived at the perfect time. It allows me to “speak” my articles instead of typing them, giving my hands the rest they need.&lt;/p&gt;
&lt;h3 id="2-improving-writing-efficiency"&gt;2. Improving Writing Efficiency&lt;/h3&gt;
&lt;p&gt;Speaking is truly much faster than writing. Sometimes when I dictate a list, it automatically adds numbers for me. When I get stuck and say “um” or “ah,” or even say “Oops, I said that wrong,” it understands and filters out filler words and errors. Furthermore, it handles mixed-language sentences quite well. For example: “我覺得那家 ice cream shop 的 Gelato 很好吃, 下次我想要吃 strawberry 口味的!” This code-switching sentence was actually dictated using Typeless!&lt;/p&gt;
&lt;h3 id="3-boosting-translation-efficiency"&gt;3. Boosting Translation Efficiency&lt;/h3&gt;
&lt;p&gt;I write my blog posts in Chinese first and then use AI to translate them into English (Of course, I will edit and proofread it later.) Previously, I had to paste the text into ChatGPT, wait for the translation, and then paste it back into VS Code. With Typeless, I don’t need to switch between apps. I just copy the Chinese text, select it, press the shortcut, and say: “Please translate this into English.” A few seconds later, it generates the translation right there on the spot.&lt;/p&gt;
&lt;p&gt;Additionally, I have to mention the translation quality. I find that ChatGPT sometimes doesn’t translate very well; I often have to provide many prompts to help it navigate the differences between Chinese and English (including grammar and idioms), and it still requires significant proofreading and editing. Typeless’s language model is impressive. It requires very little editing and often leaves me in awe. Here are a few examples.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;a href="https://alicehsu.blog/zh-tw/posts/2026/01/lets-go-crocheting-little-cutties/"&gt;&amp;ldquo;Our Little Cutties at Home&lt;/a&gt;,&amp;rdquo; there’s a key phrase, “織織不倦 (zhī zhī bù juàn),” which literally means to weave diligently without feeling tired. I invented this phrase as a playful twist on the Chinese Chengyu “孜孜不倦 (zī zī bù juàn),” which originally means to study or work diligently without getting tired. Typeless translated it as &lt;a href="https://alicehsu.blog/posts/2026/01/our-little-cutties-at-home/"&gt;“You could say we are hooked,”&lt;/a&gt; and I have to say, the way it handled the pun was brilliant! My original pun was based on sound, replacing 孜孜 (zī zī) with 織織 (zhī zhī). Typeless, however, went for a semantic pun: “hook” refers to the tool used in crocheting, and as an adjective, “hooked” also means being obsessed with or deeply into something. I must admit, that was a really clever choice.&lt;/li&gt;
&lt;li&gt;In my poem &lt;a href="https://alicehsu.blog/zh-tw/posts/2026/01/let-go-of-the-burden/"&gt;&amp;ldquo;Let Go of the Burden,&amp;rdquo;&lt;/a&gt; my original Chinese version rhymed. When Typeless &lt;a href="https://alicehsu.blog/posts/2026/01/let-go-of-the-burden/"&gt;translated it into English&lt;/a&gt;, it actually managed to rhyme perfectly! And it even used the AABB rhyme scheme common in English poetry.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Some might wonder: is it necessary to use AI to turn a Chinese poem into an English one? Does translating poetry with AI lose the beauty of the original? I don’t think it loses the beauty. Rather, it gives the poem a richer form. For me, the Chinese poem (and all my Chinese articles, music, and illustrations) is created entirely without AI—it’s the result of me racking my brain. Once finished, Typeless acts like an American friend, helping me translate my work into idiomatic English.&lt;/p&gt;
&lt;p&gt;I’m getting a bit off-track; maybe I’ll write a separate post to discuss this more when I have time.&lt;/p&gt;
&lt;h3 id="4-faster-bookkeeping"&gt;4. Faster Bookkeeping&lt;/h3&gt;
&lt;p&gt;Sam and I have a habit of tracking our expenses. Every time we return from the supermarket with a stack of receipts, bookkeeping feels like an exhausting chore. After I started using Typeless, I thought: “Wouldn’t it be so much easier if I could just speak the entries?” So we tried dictating the items and prices, and we found it to be incredibly fast!&lt;/p&gt;
&lt;h2 id="how-to-use-it"&gt;How to Use It&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Computer&lt;/strong&gt;: Hold down the default shortcut &lt;code&gt;Fn&lt;/code&gt; to start speaking, and release it when you’re done. The system will display what you just said. You can also use the hands-free mode by pressing &lt;code&gt;Fn&lt;/code&gt; + &lt;code&gt;Space&lt;/code&gt; so you don’t have to keep holding the key.&lt;/p&gt;
&lt;p&gt;Since my Mac shortcut for Delete is &lt;code&gt;Fn&lt;/code&gt; + &lt;code&gt;Delete&lt;/code&gt;, and I would accidentally trigger Typeless every time I pressed it, I changed the Typeless shortcut to &lt;code&gt;Control&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So far, I haven’t encountered an interface where it doesn’t work. VS Code, web search bars, ChatGPT, Mac Notes, Finder, etc&amp;hellip;.All work with Typeless.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mobile&lt;/strong&gt;: After downloading the Typeless app, it integrates into your mobile keyboard. When you need to type, switch the keyboard to Typeless, tap the black microphone, speak, and tap again when finished.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tips-for-use"&gt;Tips for Use&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Sometimes it needs longer sentences to understand context. For example, if I say “Oyster Omelet” in Taiwanese Hokkien (Ô-á-tsian) in isolation, Typeless might output something nonsensical. But if I code-switch between Mandarin and Taiwanese Hokkien: “I want to go to the night market to eat Ô-á-tsian,” it gets the characters &amp;ldquo;蚵仔煎&amp;rdquo; right.&lt;/li&gt;
&lt;li&gt;Typeless occasionally tries to be “too smart” by rewriting what you said to make it flow better (according to its logic, not necessarily yours). If you want it to transcribe exactly what you say word-for-word, you can tell it: “&lt;strong&gt;Please input every sentence and every word I say verbatim&lt;/strong&gt;: ‘I am very happy to introduce Typeless here…’” and that’s it!&lt;/li&gt;
&lt;li&gt;We use spreadsheets for bookkeeping and need items and prices in different cells. We give a command before dictating the content, such as: “&lt;strong&gt;Please use a ‘tab’ to separate the item and the price, and don’t add numbers.&lt;/strong&gt; Tomato 2.99, Instant noodles 4.79…” We’ve found that dictating more items at once reduces hallucinations. The only downside is that it transcribes the command as well, but deleting it isn’t a big deal.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="cost"&gt;Cost&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Free Version: 4,000 words per week, which is plenty for those who don’t need to produce large amounts of text.&lt;/li&gt;
&lt;li&gt;Paid Version: Unlimited words and offers a 30-day trial. If you buy a yearly subscription, it costs about $12 USD per month.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After using Typeless, I realized that my previous habit of handwriting notes wasn’t very efficient for learning. Instead, by using my voice to take notes, I find it easier to understand what I’ve learned and retain knowledge.&lt;/p&gt;
&lt;p&gt;I highly recommend it to everyone!&lt;/p&gt;
&lt;p&gt;Official download link: &lt;a href="https://www.typeless.com/"target="_blank"
&gt;Typeless&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 01/21/26. It was later translated with assistance from Typeless, edited by me, and published in English on 01/24/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Digital Minimalism Manifesto</title><link>https://alicehsu.blog/posts/2026/01/digital-minimalism-manifesto/</link><pubDate>Sat, 24 Jan 2026 18:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/digital-minimalism-manifesto/</guid><description>Why am I taking this photo? Will I actually look at it? Or will it be used at my funeral?</description><media:thumbnail url="https://alicehsu.blog/images/Post31home.jpg"/><media:content url="https://alicehsu.blog/images/Post31home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post31home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post31home.jpg"
loading="eager"
/&gt;&lt;p&gt;I’ve spent the last two days deleting photos from my phone until my eyes are bloodshot. Honestly, I didn’t intend to do a major overhaul at first, but it’s probably just like cleaning a room: you wipe down a desk, then you want to mop the floor; once you mop the floor, you want to tidy up the bed.&lt;/p&gt;
&lt;p&gt;Once I started organizing, I realized that the newer the phone, the “fatter” the photos are. A single photo on a new phone is three times the size of one on my old phone. Yet, before I upload them to my blog, I still compress them to around 720p. Since I can’t adjust the pixel settings on my phone, it’s just… (sigh).&lt;/p&gt;
&lt;p&gt;So, I went through nearly six years of photos, deleted about 2,000 of them, and cleared up roughly 12 GB of space.&lt;/p&gt;
&lt;p&gt;It feels quite absurd when I think about how I spend a tiny bit of time taking photos, only to spend a massive amount of time deleting them. Even though hard drive storage is huge and cheap these days, just dumping unorganized data in there to keep it out of sight and out of mind really isn’t my style.&lt;/p&gt;
&lt;p&gt;After spending too much time tidying up, I’ve learned my lesson and decided to establish a “Digital Minimalism Manifesto” to try and control the volume of data at its source. This covers not just photos, but also messages and files—as a reminder to myself and for everyone else’s reference.&lt;/p&gt;
&lt;h2 id="digital-minimalism-manifesto"&gt;Digital Minimalism Manifesto&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I will think twice before pressing the shutter: Why am I taking this photo? Will I actually look at it? &lt;del&gt;Or will it be used at my funeral?&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;I will organize and delete duplicate photos immediately after traveling.&lt;/li&gt;
&lt;li&gt;I will delete emails, notes, and apps as I go.&lt;/li&gt;
&lt;li&gt;I will freely leave work-related groups that I no longer need.&lt;/li&gt;
&lt;li&gt;I will freely delete “friends” I don’t really know.&lt;/li&gt;
&lt;li&gt;For privacy reasons, I will back up most data to a hard drive.&lt;/li&gt;
&lt;li&gt;If I must use cloud backup, I won’t scatter data across different cloud services; I’ll stick to just one.&lt;/li&gt;
&lt;li&gt;If the files on my computer are constantly a mess, it means I need to redesign my workflow or file management system.&lt;/li&gt;
&lt;li&gt;Before keeping a piece of data, I will ask myself: does this spark joy?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let’s embrace a digital minimalist lifestyle together!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 01/18/26. It was later translated with assistance from Typeless, edited by me, and published in English on 01/24/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>The Art of Creative Insults</title><link>https://alicehsu.blog/posts/2026/01/the-art-of-creative-insults/</link><pubDate>Sat, 24 Jan 2026 17:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/the-art-of-creative-insults/</guid><description>When you insult someone, you should pick someone who surpasses you in every aspect so that you don’t come out at a loss.</description><media:thumbnail url="https://alicehsu.blog/images/Post29home.jpg"/><media:content url="https://alicehsu.blog/images/Post29home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post29home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post29home.jpg"
loading="eager"
/&gt;&lt;p&gt;I recently read an interesting essay titled “The Art of Insulting” (罵人的藝術), written by &lt;a href="https://www.britannica.com/biography/Liang-Shiqiu"target="_blank"
&gt;Mr. Liang Shih-chiu (1903–1987)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The author makes his point clear from the very beginning: there isn’t a single person in this world who doesn’t criticize or insult others. However, the process of choosing “what to insult,” “what not to insult,” and “how to insult” is actually a highly moral endeavor. Bottling up the urge to speak out can lead to inner frustration and even physical health issues. Therefore, refraining from it entirely is unnecessary. As for how to go about it—that is where wisdom and art come into play.&lt;/p&gt;
&lt;p&gt;The essay is concise and refined. The author lists ten points, providing witty analysis and dialectics for each. I highly recommend reading the original text, but I’ll share a few highlights here.&lt;/p&gt;
&lt;p&gt;Liang suggests that when you insult someone, you should pick someone who surpasses you in every aspect so that you don’t come out at a loss. If they choose to talk back, it means they view you as being on the same level.&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;If you insult a “big shot,” the only thing to fear is their silence. If they snap back, you’ve succeeded, because only those of equal status are willing to engage in a back-and-forth.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;He also notes that insults should be subtle, with the goal of creating a “delayed reaction.” Ideally, the target shouldn’t realize they’ve been insulted at first; it’s only when they reflect on it later that they realize the words weren’t kind. Using elegant language helps achieve this, and it is even better if you can quote the person’s own words back at them.&lt;/p&gt;
&lt;p&gt;Furthermore, the biggest taboo in insulting is impulsiveness. The lowest way is to cause a public scene. A more sophisticated method is to wait until the other person is exhausted from yelling, then drop a brief comment or a cold laugh—this is enough to drive them crazy.&lt;/p&gt;
&lt;p&gt;Finally, the author reveals the true purpose of the essay: it isn’t just to teach people how to insult, but also to help readers understand the mindset of those who do. It’s a clever twist at the end.&lt;/p&gt;
&lt;h2 id="my-thoughts"&gt;My Thoughts&lt;/h2&gt;
&lt;p&gt;I never imagined that insulting someone could have so many facets; it was quite an eye-opener.&lt;/p&gt;
&lt;p&gt;Looking at the people in real life who love to lash out through the lens of these standards, I suddenly feel they are not wise. Whether they are shouting until they are red in the face or being blatantly rude, it’s simply not smart.&lt;/p&gt;
&lt;p&gt;Now, when facing people who insult me for no reason, I have better ways to respond. I also realize that, in their eyes, I must be quite a “big shot”! Hahaha.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Reference:&lt;br&gt;
梁實秋（秋郎）。〈罵人的藝術〉。《罵人的藝術》，新月書店，1927 年，頁 1–10。&lt;/p&gt;
&lt;p&gt;Further Reading:
&lt;a href="https://www.taiwan-panorama.com/en/Articles/Details?Guid=c909246b-2742-4a05-b2bc-239d9ee3fe33&amp;amp;CatId=8&amp;amp;postname=The%20Great%20Master--Liang%20Shih-chiu%20Has%20Not%20Left%20Us"target="_blank"
&gt;The Great Master&amp;ndash;Liang Shih-chiu Has Not Left Us&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thumbnail and Banner: Icons by &lt;a href="https://icon-sets.iconify.design/?query=face&amp;#43;to&amp;#43;face"target="_blank"
&gt;Game-Icons&lt;/a&gt;, licensed under CC BY 3.0. Modified by Alice Hsu.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 01/15/26. It was later translated with assistance from Typeless, edited by me, and published in English on 01/24/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Let Go of the Burden</title><link>https://alicehsu.blog/posts/2026/01/let-go-of-the-burden/</link><pubDate>Wed, 21 Jan 2026 21:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/let-go-of-the-burden/</guid><description>Hey dear, you are under such strain</description><media:thumbnail url="https://alicehsu.blog/images/Post30home.jpeg"/><media:content url="https://alicehsu.blog/images/Post30home.jpeg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post30home.jpeg" type="image/jpeg"/><content:encoded>&lt;p&gt;　Hey dear, you are under such strain,&lt;/p&gt;
&lt;p&gt;　Have you been eating well, despite the pain?&lt;/p&gt;
&lt;p&gt;　So many things fill your heart with care,&lt;/p&gt;
&lt;p&gt;　Leaving you lost in deep despair.&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 0vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;　Life sometimes feels withered and dry,&lt;/p&gt;
&lt;p&gt;　God’s love like a stream flows gently by.&lt;/p&gt;
&lt;p&gt;　When your steps falter and you start to tire,&lt;/p&gt;
&lt;p&gt;　Give God your burdens and your heart’s desire.&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 0vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;　You carry heavy loads day after day,&lt;/p&gt;
&lt;p&gt;　Fearing if you stop, all will fall away.&lt;/p&gt;
&lt;p&gt;　But life is not meant to be so tough,&lt;/p&gt;
&lt;p&gt;　With Jesus, his grace is more than enough.&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 0vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;　It’s okay to go out and have some fun,&lt;/p&gt;
&lt;p&gt;　Or climb a mountain in the morning sun.&lt;/p&gt;
&lt;p&gt;　You don’t have to struggle all on your own,&lt;/p&gt;
&lt;p&gt;　With Jesus near, you are never alone.&lt;/p&gt;
&lt;style&gt;
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 {
width: 100%;
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .glightbox:hover,
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-219a1551ecbc81d0b72d75ce38a0e76a-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-219a1551ecbc81d0b72d75ce38a0e76a-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post30home.jpeg"
class="glightbox"
data-gallery="masonry-219a1551ecbc81d0b72d75ce38a0e76a-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post30home.jpeg"
alt="This poem was originally written in Chinese. The above photo is my Chinese draft."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post30home.jpeg"
data-gallery-alt="This poem was originally written in Chinese. The above photo is my Chinese draft."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;This poem was originally written in Chinese. The above photo is my Chinese draft.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-219a1551ecbc81d0b72d75ce38a0e76a-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;hr&gt;
&lt;h3 id="postscript"&gt;Postscript&lt;/h3&gt;
&lt;p&gt;Lately, I’ve been organizing my notes and came across this interesting piece I wrote back in June 2024. At the time, I was obsessed with a Japanese manga called &amp;ldquo;Ya Boy Kongming!&amp;rdquo; (though I’ve since dropped it). There’s a character named KABE-Taijin, a rapper with incredible lyrical skills. What amazed me most was the translation: in the Chinese version of KABE-Taijin’s rap segments, the translator managed to make every single line rhyme perfectly!&lt;/p&gt;
&lt;p&gt;Inspired by that work, a Chinese rhymed sentence suddenly popped into my head one day. I decided to challenge myself to see if I could complete a piece where every line rhymed, eventually resulting in these lyrics. Maybe I’ll set it to music someday; for now, I’m posting it on my blog as a memento.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 01/16/2026. It was later translated with assistance from Typeless, edited by me, and published in English on 01/21/2026.&lt;/em&gt;　&lt;/p&gt;</content:encoded></item><item><title>The Melting of a Snowman</title><link>https://alicehsu.blog/posts/2026/01/the-melting-of-a-snowman/</link><pubDate>Tue, 13 Jan 2026 21:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/the-melting-of-a-snowman/</guid><description>A friend mentioned that it doesn’t look like a snowman, but more like a piece in Chinese Checkers.</description><media:thumbnail url="https://alicehsu.blog/images/Post/28/1.JPG"/><media:content url="https://alicehsu.blog/images/Post/28/1.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/28/1.JPG" type="image/jpeg"/><content:encoded>&lt;p&gt;It was freezing a while ago and we had heavy snowfall. The snow accumulation was actually higher than the seat cushions. So, Sam and I decided to build a &lt;a href="https://alicehsu.blog/posts/2025/12/christmas-gif-paintings/"&gt;snowman&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Here is the “History of the Melting Snowman”:
&lt;style&gt;
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 {
width: 100%;
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .glightbox:hover,
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/1.JPG"
class="glightbox"
data-gallery="masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/2.JPG"
class="glightbox"
data-gallery="masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/2.JPG"
alt="The big snowman looks really rock-and-roll, while the little ones look just like the &amp;#34;Dango 3 Kyōdai.&amp;#34;"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/2.JPG"
data-gallery-alt="The big snowman looks really rock-and-roll, while the little ones look just like the &amp;#34;Dango 3 Kyōdai.&amp;#34;"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The big snowman looks really rock-and-roll, while the little ones look just like the &amp;#34;Dango 3 Kyōdai.&amp;#34;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/3.JPG"
class="glightbox"
data-gallery="masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/3.JPG"
alt="Voldemort snowman"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/3.JPG"
data-gallery-alt="Voldemort snowman"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Voldemort snowman&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/28/4.JPG"
class="glightbox"
data-gallery="masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/28/4.JPG"
alt="Oh no, it broke off."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/28/4.JPG"
data-gallery-alt="Oh no, it broke off."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Oh no, it broke off.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-0b0cf2e3f1e386e7b1d5c7a30c3f8448-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
A friend mentioned that it doesn’t look like a snowman, but more like a piece in Chinese Checkers. Now that he mentions it, I see the resemblance too, haha!&lt;/p&gt;
&lt;p&gt;Actually, we only rolled one snowball. We made the snowman’s body by clearing away the accumulated snow (which shows just how deep it was) and patting it down firmly. We spent most of our time working on the head, rolling it properly before placing it on top.&lt;/p&gt;
&lt;p&gt;When we first started making the snowball, it was really hard to get it to hold its shape. The snow was too soft and powdery, with no stickiness at all. Later, we sprayed some water on it, patting the snow on as we sprayed, then rolled it on the ground while spraying it with more water. That finally did the trick.&lt;/p&gt;
&lt;p&gt;Once we succeeded, we went and found two branches to stick in as arms. Then, I felt like the face was missing something. We happened to have bought carrots that week, so I picked one out of the fridge and poked it in. How cute!&lt;/p&gt;
&lt;p&gt;After finishing the big snowman, I was so enthusiastic that I piled up three more snowballs the next day to make a little snowman. With the little one joining in, the big snowman didn’t look so lonely anymore.&lt;/p&gt;
&lt;p&gt;These two snowmen stood side-by-side on my balcony for several weeks. Eventually, the weather started to warm up, and the two of them slowly said their goodbyes to us.&lt;/p&gt;
&lt;p&gt;Originally, I thought I’d just leave the carrot on the balcony. I figured maybe a squirrel or a bird might stop by (animals in snowy countries aren’t afraid of the cold) and have it as a snack. But after waiting a long time, no one seemed interested in visiting that carrot. One day, I decided I couldn’t just leave it there, so I opened the door to pick it up and toss it into the garbage disposal.&lt;/p&gt;
&lt;p&gt;The moment I picked it up, I realized why no animal wanted to eat it.&lt;/p&gt;
&lt;p&gt;This carrot, having gone through endless cycles of freezing and thawing, was no longer the carrot I remembered. It had turned into a limp, mushy thing with all its cells collapsed and dead. The texture was truly horrifying. I can still feel it vividly today.&lt;/p&gt;
&lt;p&gt;Next year, or whenever we build a snowman again, I don’t think I’ll want to use a carrot. Sticking in some branches is good enough.&lt;/p&gt;
&lt;p&gt;See you next year, Mr. Snowman!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from Typeless, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Life is a Lavish Gift</title><link>https://alicehsu.blog/posts/2026/01/life-is-a-lavish-gift/</link><pubDate>Fri, 09 Jan 2026 13:25:05 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/life-is-a-lavish-gift/</guid><description>Life is a Lavish Gift acts as a staircase built through Wu Kun-sheng’s essays, hoping that readers might stand upon these steps to draw closer to the true light of Christ.</description><media:thumbnail url="https://alicehsu.blog/images/Post23home.jpeg"/><media:content url="https://alicehsu.blog/images/Post23home.jpeg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post23home.jpeg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post23home.jpeg"
loading="eager"
/&gt;&lt;p&gt;Existentialists say life is a void; Buddhists say the karma accumulated from past lives is repaid in the present; only Christians say that life is a generous gift bestowed by God.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Life is a Lavish Gift&lt;/em&gt; (生命是一份厚禮), written by Wu Kun-sheng (吳鯤生), is a collection of illustrated essays spanning just over a hundred pages. While the writing is plain and accessible, its reflections on life are far from shallow. The weight of the words reveals the author’s extensive reading and his keen awareness of Christ’s presence in everyday life.&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;If “death” is a bridge, and eternity lies on the other side: though parting brings sadness, beyond the immense sorrow lies an even greater assurance of “meeting again.” (pp. 118–119)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;…However, Death forgot one fact: Death is the consequence of sin, and it can only detain those who have sinned. Thus, when one day a man who “had been tempted in every way, just as we are, yet was without sin” took the initiative to face the torture of the cross and walk into Death, Death realized its mistake. The holy and sinless Jesus entered the valley of the shadow of Death to confront it. (p. 100)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;&lt;em&gt;Life is a Lavish Gift&lt;/em&gt; invites readers to seek the source of life through the small things in everyday life. For instance, the author describes how unexpectedly adopting a dog gave him an urgent reason to return home, evoking a sense of empathy for the concept of “home” in the reader, before ultimately articulating his own longing for an eternal homeland:&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;Homeland is a calling, a yearning; when I lean toward a downward path, the longing for home pulls me back and refuses to give up on me. (p. 25)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;These timeless words do not seek pity or comfort, nor do they carry the air of a writer showing off their erudition. &lt;em&gt;Life is a Lavish Gift&lt;/em&gt; acts as a staircase built through Wu Kun-sheng’s essays, hoping that readers might stand upon these steps to draw closer to the true light of Christ.&lt;/p&gt;
&lt;p&gt;Bibliography:
Wu, Kun-sheng. &lt;em&gt;Life is a Lavish Gift&lt;/em&gt; . New Taipei City: CampusPress, 2018.&lt;/p&gt;
&lt;p&gt;Purchase Links: &lt;a href="https://www.books.com.tw/products/0010807841"target="_blank"
&gt;Books.com.tw&lt;/a&gt; / &lt;a href="https://shop.campus.org.tw/ProductDetails.aspx?productID=000544689"target="_blank"
&gt;CampusPress&lt;/a&gt; / &lt;a href="https://www.taaze.tw/products/11316450170.html"target="_blank"
&gt;TAAZE&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="afterword"&gt;Afterword&lt;/h3&gt;
&lt;p&gt;This article was originally published on Medium on July 2, 2020. Following &lt;a href="https://alicehsu.blog/posts/2025/09/what-happened-when-i-deleted-my-facebook-and-instagram-app/"&gt;“What Happened When I Deleted My Facebook and Instagram App?,”&lt;/a&gt; this is the second and final post migrated from Medium, now re-posted on this blog after proofreading and formatting. With this, the migration from Medium is complete. Bye bye, Medium!&lt;/p&gt;
&lt;style&gt;
#masonry-bca15c05610c05b32a4cd467f6961358-1 {
width: 100%;
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 10px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .glightbox:hover,
#masonry-bca15c05610c05b32a4cd467f6961358-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-bca15c05610c05b32a4cd467f6961358-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-bca15c05610c05b32a4cd467f6961358-1"
data-columns="2"
data-gutter="10"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/23/1.png"
class="glightbox"
data-gallery="masonry-bca15c05610c05b32a4cd467f6961358-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/23/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/23/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-bca15c05610c05b32a4cd467f6961358-1';
const config = {
columns: 2 ,
gutter: 10 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB 1: Life is a Lavish Gift was originally written in Chinese and it hasn&amp;rsquo;t been officially translated into English yet.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB 2: This article was first published in Chinese on 12/31/25. It was later translated with assistance from Typeless, edited by me, and published in English on 01/09/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>A Corner With a Sunlight Stair</title><link>https://alicehsu.blog/posts/2026/01/a-corner-with-a-sunlight-stair/</link><pubDate>Fri, 09 Jan 2026 00:34:23 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/a-corner-with-a-sunlight-stair/</guid><description>The winter sun / Dries and beats / My damp, heavy soul</description><media:thumbnail url="https://alicehsu.blog/images/Post20home.jpg"/><media:content url="https://alicehsu.blog/images/Post20home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post20home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;
&lt;style&gt;
#masonry-c6abf657640e491e9db18f0e6647c951-1 {
width: 100%;
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .glightbox:hover,
#masonry-c6abf657640e491e9db18f0e6647c951-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-c6abf657640e491e9db18f0e6647c951-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-c6abf657640e491e9db18f0e6647c951-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post20home.jpg"
class="glightbox"
data-gallery="masonry-c6abf657640e491e9db18f0e6647c951-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post20home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post20home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-c6abf657640e491e9db18f0e6647c951-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
The winter sun&lt;/p&gt;
&lt;p&gt;Dries and beats&lt;/p&gt;
&lt;p&gt;My damp, heavy soul&lt;/p&gt;
&lt;p&gt;The musty scent evaporates under the day’s gentle kneading&lt;/p&gt;
&lt;p&gt;Leaving the soul infused&lt;/p&gt;
&lt;p&gt;With a warm, radiant fragrance&lt;/p&gt;
&lt;p&gt;I pick it up and put it on&lt;/p&gt;
&lt;p&gt;Ah—a sigh of pure contentment&lt;/p&gt;
&lt;p&gt;This tender touch&lt;/p&gt;
&lt;p&gt;Paired with herbal tea&lt;/p&gt;
&lt;p&gt;And a conversation with the one I love&lt;/p&gt;
&lt;p&gt;This is the touch of blissfulness’s kiss&lt;/p&gt;
&lt;p&gt;Yes, yes&lt;/p&gt;
&lt;p&gt;Blissfulness resides in a corner&lt;/p&gt;
&lt;p&gt;Where the sunlight rests upon the stairs&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This poem was originally published on FaceBook on December 21, 2018. I never imagined that today, exactly seven years later on December 20, 2025, I would happen to remember this piece and decide to post it on my blog as a memento.&lt;/p&gt;
&lt;p&gt;I still remember that period was the rainy season in Taipei, and also the rainy season of my life. It just happened that the weather that day was unexpectedly beautiful. While tucked away studying in the library, I saw this scene; moved by the moment, I wrote this poem in Chinese.&lt;/p&gt;
&lt;p&gt;Reading the same poem many years later, I am still deeply moved. I am moved because I managed to catch the sunlight during that rainy season, which allowed me to make it to where I am today.&lt;/p&gt;
&lt;p&gt;I hope this poem can bring a little strength to everyone who is currently going through a heavy downpour.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/20/25. It was later translated with assistance from Typeless, edited by me, and published in English on 01/09/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Our Little Cutties at Home</title><link>https://alicehsu.blog/posts/2026/01/our-little-cutties-at-home/</link><pubDate>Thu, 08 Jan 2026 22:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/our-little-cutties-at-home/</guid><description>You could say we are “hooked,” haha.</description><media:thumbnail url="https://alicehsu.blog/images/Post/25/8.JPG"/><media:content url="https://alicehsu.blog/images/Post/25/8.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/25/8.JPG" type="image/jpeg"/><content:encoded>&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;This is my submission for the January 2026 &lt;a href="https://blogblog.club/party"target="_blank"
&gt;BlogBlog Club Party&lt;/a&gt;. Everyone is welcome to join the party!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;“Hey, Udon! We have guests! Come say hi!”&lt;/p&gt;
&lt;p&gt;“Wait, let me go get Sesame so we can say hi together! Se-sa-me~~~”&lt;/p&gt;
&lt;p&gt;“Udon, you’re being so loud, I want to sleep a bit longer…”&lt;/p&gt;
&lt;p&gt;“Hurry up, Udon and Sesame! Our guests came specifically to see you today!”&lt;/p&gt;
&lt;p&gt;“What! Really? We’re coming!”&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
Super cute, right?!&lt;/p&gt;
&lt;h2 id="how-i-fell-down-the-rabbit-hole"&gt;How I Fell Down the Rabbit Hole&lt;/h2&gt;
&lt;p&gt;How did I get into this? Actually, nobody pushed me—I jumped in all by myself.&lt;/p&gt;
&lt;p&gt;Once while browsing a craft fair, I saw someone selling various crochet works. Among them were adorable little things just like Udon and Sesame. One cost forty-five dollars. I was tempted, but I couldn’t quite bring myself to spend that much. Suddenly, a lightbulb went off: “Why don’t I try making one myself?” And just like that, I fell into the hole.&lt;/p&gt;
&lt;p&gt;At first, I was worried I wouldn’t stick with this new hobby. So, I went to a physical art supply store (the now-defunct JOANN, RIP) and bought a single 2.5 mm hook and a tiny bit of yarn. I started learning the basic stitches from YouTube. Among all the tutorials, Eveline’s (艾織) explanations were the clearest. Her beginner videos are filmed with great detail, and her delivery is very easy to follow. I started by learning to crochet a flat square, then a bunch of small balls, then I challenged myself with a tiny kitty. Feeling confident, I finally started the &amp;ldquo;Loaf Cat” project!&lt;/p&gt;
&lt;p&gt;This rabbit hole keeps getting deeper, and its influence is huge—even Sam couldn’t help but learn along with me. He made Udon, and I made Sesame; he made two little dinosaurs, and I made a little turtle and a hat. We made a Christmas tree before the holidays and flowers during spring. You could say we are “hooked,” haha.&lt;/p&gt;
&lt;style&gt;
#masonry-699840899b122edb20b77e027115cbdc-1 {
width: 100%;
}
#masonry-699840899b122edb20b77e027115cbdc-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-699840899b122edb20b77e027115cbdc-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 15px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-699840899b122edb20b77e027115cbdc-1 .masonry-item img {
width: 90%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-699840899b122edb20b77e027115cbdc-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-699840899b122edb20b77e027115cbdc-1 .glightbox:hover,
#masonry-699840899b122edb20b77e027115cbdc-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-699840899b122edb20b77e027115cbdc-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-699840899b122edb20b77e027115cbdc-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-699840899b122edb20b77e027115cbdc-1"
data-columns="3"
data-gutter="15"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/2.JPG"
class="glightbox"
data-gallery="masonry-699840899b122edb20b77e027115cbdc-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/3.JPG"
class="glightbox"
data-gallery="masonry-699840899b122edb20b77e027115cbdc-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/3.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/3.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/4.JPG"
class="glightbox"
data-gallery="masonry-699840899b122edb20b77e027115cbdc-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/4.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/4.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/5.JPG"
class="glightbox"
data-gallery="masonry-699840899b122edb20b77e027115cbdc-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/5.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/5.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/6.jpg"
class="glightbox"
data-gallery="masonry-699840899b122edb20b77e027115cbdc-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/25/7.jpg"
class="glightbox"
data-gallery="masonry-699840899b122edb20b77e027115cbdc-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/7.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/7.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-699840899b122edb20b77e027115cbdc-1';
const config = {
columns: 3 ,
gutter: 15 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="the-benefits-of-crochet"&gt;The Benefits of Crochet&lt;/h2&gt;
&lt;h3 id="1-extremely-low-cost"&gt;1. Extremely Low Cost&lt;/h3&gt;
&lt;p&gt;As mentioned, you don’t actually need much:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yarn&lt;/li&gt;
&lt;li&gt;A crochet hook (Knitting requires two needles, but crochet uses just one hook with a blunt tip)&lt;/li&gt;
&lt;li&gt;Stitch markers (To mark your stitches—don’t use safety pins, they’ll prick your fingers. Don’t ask me how I know.)&lt;/li&gt;
&lt;li&gt;Scissors (Something every household has)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/9.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/9.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;If you want to make stuffed animals (amigurumi), you’ll also need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Safety eyes or embroidery thread&lt;/li&gt;
&lt;li&gt;Straight pins (To temporarily hold the limbs in place to confirm positioning)&lt;/li&gt;
&lt;li&gt;Fiberfill/Stuffing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to tackle amigurumi or multi-colored projects right away, you can buy a pre-packed crochet kit. That way, you don’t have to worry about color matching or buying excessive materials. However, the unit price is higher, so use your discretion.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I bought a yarn holder but later realized it wasn’t necessary. Maybe the one I got wasn’t heavy enough. It kept falling over while I worked. You can skip it.&lt;/p&gt;
&lt;h3 id="2-easy-to-learn"&gt;2. Easy to Learn&lt;/h3&gt;
&lt;p&gt;YouTube is full of free tutorials. I recommend starting with &lt;a href="https://www.youtube.com/@EvelinesCrochet"target="_blank"
&gt;Eveline&lt;/a&gt;’s &lt;a href="https://youtube.com/playlist?list=PLJZs-ZBpJ2IXYB61RLnqRWcIwQJlHHrrb&amp;amp;si=ANUvBvf7VGL_jyOd"target="_blank"
&gt;Crochet Basic Stitch Tutorials&lt;/a&gt;. Once you master the basics, everything else becomes a breeze. Some items look complex, but the principles are simple. For example, cats and dinosaurs are usually made by crocheting the body first, then the limbs, and finally sewing them together. Plus, this skill is like riding a bike—even if you don’t pick it up for a long time, it’s easy to remember.&lt;/p&gt;
&lt;h3 id="3-great-for-gifts-and-personal-use"&gt;3. Great for Gifts and Personal Use&lt;/h3&gt;
&lt;p&gt;Crochet works are incredibly versatile: you can make a small ball for your cat, a little animal for a child, or something cute for yourself. Empty walls? Crochet some flowers to decorate them! Can’t find clothes in a specific color or pattern? Design your own pattern and make it! As for gifts, who wouldn’t love a handmade item? The warmth of something handmade is irreplaceable.&lt;/p&gt;
&lt;h3 id="4-a-healthy-hobby-to-pass-the-time"&gt;4. A Healthy Hobby to Pass the Time&lt;/h3&gt;
&lt;p&gt;Always felt that mindlessly scrolling through social media is unhealthy, but sometimes don&amp;rsquo;t know what else to do? Here’s a little secret: start crocheting! Unlike scrolling, which leaves you with nothing, crocheting results in a cute little fox, a squirrel, or a warm scarf. The sense of healing is hard to describe. And unlike the addictive nature of social media, crocheting isn’t an “addiction” you can’t stop—you can easily put down a half-finished project to do other things. Plus, it’s portable. Just toss a ball of yarn and a hook in your bag, and you can crochet while waiting for the bus, at the bank, or during your commute.&lt;/p&gt;
&lt;p&gt;What does crochet have to do with mental health? A journal entry in PubMed answers this.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; In 2018, Australian researchers Burns and Van der Meer surveyed online crochet communities. Out of 8,391 valid responses, the majority (89.5%) felt that crochet brought them calmness. Furthermore, the effects were almost entirely positive (calm, happy, confident…), with only a tiny fraction reporting negative emotions (stress, worthlessness, or anxiety accounted for only 2.1%, 0.5%, and 0.4% respectively). Additionally, some people use crochet to help cope with major life events like the loss of a loved one, divorce, or serious illness.&lt;/p&gt;
&lt;p&gt;There’s also a moderator on &lt;a href="https://www.reddit.com/r/crochet/comments/1ep1b3k/the_mental_health_benefits_of_crocheting_arent/"target="_blank"
&gt;Reddit&lt;/a&gt; discussing how crochet helps them manage anxiety:&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;Whenever this (anxiety) happens I’m usually already crocheting or pick up my hook because genuinely crocheting makes me feel so much better i feel like it really helps to expel the nervous energy.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;Someone replied:&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;Crocheting helps me focus on something other than my racing thoughts.&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;With a hobby that helps you stay calm and happy, why not give it a try?&lt;/p&gt;
&lt;h3 id="5-fun-for-everyoneyoung-old-alone-or-together"&gt;5. Fun for Everyone—Young, Old, Alone, or Together&lt;/h3&gt;
&lt;p&gt;Do you think crochet is just for grandmas? That’s a lame way to think. Crochet is actually very trendy: you can crochet a painting, bags, or super cool clothes. Type “crochet art” into a search bar, and you’ll see many young artists making cool things you’ve never seen (like this &lt;a href="https://www.theblueelephants.com/crochet-heart-pattern/"target="_blank"
&gt;anatomical heart&lt;/a&gt;—so cool!).&lt;/p&gt;
&lt;p&gt;Beyond solo crafting, it’s great for groups. Lunar New Year is coming up—awkward family gatherings with nothing to do? Crochet together! Everyone focuses on their work, reducing the frequency of annoying questions. Because you’re doing the same thing, it fosters interaction and care (“Hey, I don’t know how to do this stitch! Can you check it for me?” “Oh, here you just insert the hook and pull the yarn through…”). Plus, there are crochet clubs in many places where you can meet people—just enough social interaction without it being overwhelming. It’s a very introvert friendly activity.&lt;/p&gt;
&lt;h3 id="6-training-creativity-and-spatial-awareness--passive-income"&gt;6. Training Creativity and Spatial Awareness + Passive Income&lt;/h3&gt;
&lt;p&gt;Once you move past the beginner stage, you don’t have to follow someone else’s pattern stitch-by-stitch. You can use your imagination to create something unique. This stage is challenging; it involves a lot of “frogging” (ripping out stitches) and restarting. By converting a mental image into a 2D or 3D object, you train your spatial awareness. Some people sell their original patterns on &lt;a href="https://www.etsy.com/"target="_blank"
&gt;Etsy&lt;/a&gt;. I think this is brilliant: instead of selling finished items that take forever to make, a pattern is a “create once, sell forever” digital product—a great source of passive income.&lt;/p&gt;
&lt;h2 id="who-is-crochet-for"&gt;Who is Crochet For?&lt;/h2&gt;
&lt;p&gt;To summarize, crochet is perfect for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People looking for an affordable new hobby&lt;/li&gt;
&lt;li&gt;People wanting to break a social media scrolling habit&lt;/li&gt;
&lt;li&gt;People with boring commutes&lt;/li&gt;
&lt;li&gt;People dealing with anxiety or depression&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;People wanting to train their creativity and spatial awareness&lt;/li&gt;
&lt;li&gt;People interested in passive income&lt;/li&gt;
&lt;li&gt;Introverts who want a bit of social energy without the drain&lt;/li&gt;
&lt;li&gt;People who want to give heartfelt, “warm” gifts&lt;/li&gt;
&lt;li&gt;People whose homes need more decorations or plushies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Come start crocheting together!&lt;/p&gt;
&lt;h2 id="afterword"&gt;Afterword&lt;/h2&gt;
&lt;p&gt;I.&lt;/p&gt;
&lt;p&gt;I made this video in Canva a while ago and am finally sharing it! It’s a collection of photos of Udon waiting for Sesame to be “born.” Cute, right?&lt;/p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;en-US&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/25/Hello%20Sesame.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;II.&lt;/p&gt;
&lt;p&gt;While I was writing this article, Sam finished crocheting this giant dinosaur. Isn’t it adorable? It’s so big and huggable!&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/25/8.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/25/8.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 01/06/26. It was later translated with assistance from Typeless, edited by me, and published in English on 01/08/26.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Burns, P, and R Van Der Meer. &lt;a href="https://pubmed.ncbi.nlm.nih.gov/32245337/"target="_blank"
&gt;“Happy Hookers: findings from an international study exploring the effects of crochet on wellbeing.”&lt;/a&gt; Perspectives in public health vol. 141,3 (2021): 149-157. doi:10.1177/1757913920911961&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Crochet cannot and should not replace professional medical or psychological treatment. If you have mental health needs, please consult a professional medical or mental health provider.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>Pros and Cons of Self Hosted Blogs</title><link>https://alicehsu.blog/posts/2026/01/pros-and-cons-of-self-hosted-blogs/</link><pubDate>Thu, 08 Jan 2026 21:15:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/pros-and-cons-of-self-hosted-blogs/</guid><description>If no one “likes” or “claps,” why am I still writing?</description><media:thumbnail url="https://alicehsu.blog/images/Post22home.jpeg"/><media:content url="https://alicehsu.blog/images/Post22home.jpeg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post22home.jpeg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post22home.jpeg"
loading="eager"
/&gt;&lt;h2 id="intro"&gt;Intro&lt;/h2&gt;
&lt;p&gt;It has been over two months—nearly three—since this blog launched on October 5th, 2025. Ever since I’ve had this space, I’ve felt an indescribable sense of stability. Ah, it’s like the peace of mind someone feels when they finally buy a house after years of renting.&lt;/p&gt;
&lt;p&gt;Originally, I titled this post “The Benefits of Blogging,” but then I thought better of it. “Blogging” is fundamentally “writing,” and the core meaning of “writing” is “creation.” Since I already touched upon that in my post &lt;a href="https://alicehsu.blog/posts/2025/10/why-do-we-create/"&gt;&amp;ldquo;Why Do We Create?&amp;rdquo;&lt;/a&gt;, I won’t repeat myself here. Instead, I want to focus on the pros and cons of the medium itself: the self-hosted blog.&lt;/p&gt;
&lt;h2 id="the-cons"&gt;The Cons&lt;/h2&gt;
&lt;p&gt;Let’s start with the downside.&lt;/p&gt;
&lt;p&gt;The main disadvantage of self-hosting a blog is the incredibly steep learning curve. For someone who studies literature, has never written code and almost never used a terminal, the difficulty level is quite high. It often takes a long time just to grasp the underlying logic of building a website. Personally, I was spared the pain thanks to my husband. Beyond thanking Sam, I’d like to call out to all the programmers out there: your talents give your friends and family a stage to showcase theirs. If you have the time and energy, please don’t hesitate to help those around you set up their own blogs.&lt;/p&gt;
&lt;h2 id="the-pros"&gt;The Pros&lt;/h2&gt;
&lt;p&gt;Now, let’s talk about the advantages.&lt;/p&gt;
&lt;p&gt;Wait, you’re asking if that’s it for the cons? Yes, that’s it. And this single disadvantage can be overcome through self-study or the help of friends and family. The control is in your hands.&lt;/p&gt;
&lt;h3 id="absolute-ownership"&gt;Absolute Ownership&lt;/h3&gt;
&lt;p&gt;First and most obviously, the author has absolute ownership. As long as you decide to keep it running, the blog will never be shut down. Back in elementary school, “Wretch” (無名小站) was huge. I remember almost all my classmates had accounts; we’d visit each other’s pages and obsess over the “Who’s visited me” list. Beyond that, we never tired of picking out beautiful themes for our blogs (I think I chose an autumn maple theme). As a kid, I wrote several posts there—mostly “teen angst” essays. Some were locked, meant only for my best friends. Of course, many classmates also used locked posts to talk behind people’s backs.&lt;/p&gt;
&lt;p&gt;However, the once-glorious Wretch shut down in 2013. By then, I had been using Facebook for four years and had moved my focus there, so I didn’t feel much when Wretch closed. I thought Facebook was good enough. I was so young back then; now, I have no way of knowing what “Little Alice” wrote in her blog.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;In contrast, a self-hosted blog won’t vanish because of someone else’s business decisions. If you want it open, it stays open. If you decide one day you’re done, you take it down yourself.&lt;/p&gt;
&lt;h3 id="a-great-way-to-share-travelogues"&gt;A Great Way to Share Travelogues&lt;/h3&gt;
&lt;p&gt;Secondly, something I realized while writing my &lt;a href="https://alicehsu.blog/posts/2025/12/journey-to-the-west-part-i-sights-of-san-diego/"&gt;Journey to the West&lt;/a&gt; series: if you want to share travel photos with family and friends, sending a direct blog link is the most space-efficient and meaningful method. Your recipients don’t have to clear out their messaging app storage because of your heavy photo files. Furthermore, unlike writing detailed travel notes directly in a chat app—which risks “information overload” for the recipient—it’s perfectly normal to write long-form text around images on a blog. You can provide interesting captions and reflect deeply on the experience. You might say, “Can’t I do this on FaceBook or Instagram?” Well, your friends and family might not use those platforms! (I am that friend who doesn’t use Instagram).&lt;/p&gt;
&lt;h3 id="high-autonomy-in-layout"&gt;High Autonomy in Layout&lt;/h3&gt;
&lt;p&gt;Thirdly, a point many people mention: the autonomy over layout. Self-hosted blogs are vastly superior to other platforms in this regard.&lt;/p&gt;
&lt;p&gt;The biggest drawback of using social media or pre-built blog services is that you cannot change the existing layout settings. Worse, when the platform updates, you are forced to accept the new look, whether it’s pretty or ugly.&lt;/p&gt;
&lt;p&gt;A long, long time ago, I started a Medium account and wrote two articles. Then I got busy and stopped. One day, on a whim, I thought about going back to write something. I clicked in and found: What! Why were the titles changed to this hideously ugly italics? And I couldn’t even change it back. My eyes hurt. Medium was bossier than my landlord. My landlord can’t just barge into the room I rent; but when I write on Medium, they have the right to barge in and paint my walls &lt;span style="color: #8400ffff;"&gt;bright purple&lt;/span&gt; without me being able to say no.&lt;/p&gt;
&lt;style&gt;
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 {
width: 100%;
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 10px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .glightbox:hover,
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-be2ce55306cb121ffb12a8f489b3fc9d-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-be2ce55306cb121ffb12a8f489b3fc9d-1"
data-columns="2"
data-gutter="10"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/21/1.png"
class="glightbox"
data-gallery="masonry-be2ce55306cb121ffb12a8f489b3fc9d-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/21/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/21/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/21/2.png"
class="glightbox"
data-gallery="masonry-be2ce55306cb121ffb12a8f489b3fc9d-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/21/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/21/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-be2ce55306cb121ffb12a8f489b3fc9d-1';
const config = {
columns: 2 ,
gutter: 10 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;(The difference is clear, right?)&lt;/p&gt;
&lt;p&gt;With a self-hosted blog, you are no longer subject to others’ whims, and you can start doing “out of the box” things. For example, you can draw your own &lt;a href="https://alicehsu.blog/posts/2025/12/christmas-gif-paintings/"&gt;Christmas illustrations&lt;/a&gt; and place them in the corners of your blog; you can decide on every element, like drawing your own Favicon (the colorful smiling note for this blog is my own drawing!). You also get to decide if a post needs images and how they should be presented. Unlike Instagram, where photos are mandatory and must come before the text, or Facebook, where text always precedes photos, neither allows for a truly integrated “interwoven” layout.&lt;/p&gt;
&lt;p&gt;Your creativity is precious and unique. Don’t imprison it in Facebook’s &lt;span style="color: #1877F2;"&gt;#1877F2 blue&lt;/span&gt; and white prison uniform!&lt;/p&gt;
&lt;p&gt;Additionally, authors can categorize posts systematically, making it easier for readers to understand their perspective on a specific topic. For instance, you can see my posts organized by subject in the &lt;a href="https://alicehsu.blog/categories/"&gt;“Categories”&lt;/a&gt; section, or click on &lt;a href="https://alicehsu.blog/posts/2026/01/sesame-oil-chicken-misua/"&gt;orange text&lt;/a&gt; within an article to jump to a related post. These are features current social media lacks.&lt;/p&gt;
&lt;h3 id="no-need-for-likes-hearts-or-claps"&gt;No Need for “Likes,” “Hearts,” or “Claps”&lt;/h3&gt;
&lt;p&gt;Finally, and perhaps most importantly: on your own blog, you can choose not to have “Like,” “Heart,” or “Clap” buttons.&lt;/p&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-0')" role="button" tabindex="0"
aria-expanded="true" aria-controls="alert-0-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-0');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-0-title"
class="m-0 font-semibold text-foreground/90"&gt;
Fun Fact
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-0-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;Did you know? Facebook didn’t actually have a “Like” button at the start. That button was added on February 9, 2009, five years after the platform was founded—a decision that made Facebook a fortune. Then in 2016, they added six more moods.”&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;These mechanisms allow readers to express non-verbal reactions quickly, and authors to receive instant feedback. However, “fast” and “efficient” aren’t necessarily “good” for human well-being. In my view, while articles spread much faster and are easily seen, this convenience fosters a specific habit: as a reader, it’s easy to just give an emotional reaction rather than truly digesting and understanding what the author is saying. As an author, it’s easy to measure the value of your work by quantified likes, or even use like counts as a standard for creation. Think about it: many masters of painting, music, and literature were ignored during their lifetimes, only to be discovered and celebrated by later generations. If social media existed back then and they judged their work by “likes,” we might not see many Van Gogh paintings in museums today.&lt;/p&gt;
&lt;p&gt;To be honest, when I used to post on social media, my mood would fluctuate based on who liked my posts and who didn’t (be honest, you do it too, don’t you?). These fluctuations would affect my state of mind for the next post. I found my writing becoming more and more constrained, my motivation swaying in the wind.&lt;/p&gt;
&lt;p&gt;Since I started writing on my own blog three months ago, writing has become something much purer: &lt;strong&gt;If no one “likes” or “claps,” why am I still writing? It seems I can write more for the sake of sharing things I love, things I find interesting, valuable, and meaningful.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I won’t claim to be entirely selfless; I must admit that sometimes I really want my work to be seen (which is why this blog has a &lt;a href="https://alicehsu.blog/portfolio/"&gt;“Portfolio”&lt;/a&gt; page). However, writing on my own blog, without those heart and like mechanisms, makes the act of writing and composing feel much steadier. I can enjoy the satisfaction of the work itself, rather than feeling elated or dejected based on someone else’s emotional feedback.&lt;/p&gt;
&lt;p&gt;But please don’t misunderstand—I still very much look forward to interacting with readers. I’m always happy to receive emails. To me, constructive written feedback is far more meaningful than a quantified number of likes or hearts.&lt;/p&gt;
&lt;h2 id="the-happy-farmer"&gt;The Happy Farmer&lt;/h2&gt;
&lt;p&gt;That’s about all for the pros and cons of self-hosted blogs. I’m not sure what this blog will look like in the future. Just like three months ago, I couldn’t have imagined it would be this colorful! I’ll just keep writing and drawing. I am no longer an &lt;a href="https://wiwi.blog/blog/internet-peasant"target="_blank"
&gt;internet peasant&lt;/a&gt;; I am a farmer with my own acre of land, continuing to cultivate here happily.&lt;/p&gt;
&lt;h3 id="afterword"&gt;Afterword&lt;/h3&gt;
&lt;p&gt;After finishing this, it feels more and more like a recommendation post. If you are interested in self-hosting a blog, feel free to check out &lt;a href="https://blogblog.club/resources"target="_blank"
&gt;BlogBlog Club&lt;/a&gt; for resources!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/28/25. It was later translated with assistance from AI tools, edited by me, and published in English on 01/08/26.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Actually, you can try searching via the Internet Archive’s Wayback Machine, but I’ve even forgotten my account name. If you remember yours, you can follow this tutorial: &lt;a href="https://www.elle.com/tw/life/tech/g64365475/find-wretch-back/"target="_blank"
&gt;https://www.elle.com/tw/life/tech/g64365475/find-wretch-back/&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;This history comes from this report: &lt;a href="https://apnews.com/article/like-button-facebook-history-book-89d00e73c7c6da500b06e251d44b858c"target="_blank"
&gt;https://apnews.com/article/like-button-facebook-history-book-89d00e73c7c6da500b06e251d44b858c&lt;/a&gt;&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>Journey to the West (Final): Unexpected Spots in San Diego</title><link>https://alicehsu.blog/posts/2026/01/journey-to-the-west-final-unexpected-spots-in-san-diego/</link><pubDate>Thu, 08 Jan 2026 21:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/journey-to-the-west-final-unexpected-spots-in-san-diego/</guid><description>Finally, the Journey to the West series is coming to an end.</description><media:thumbnail url="https://alicehsu.blog/images/Post/18/2.JPG"/><media:content url="https://alicehsu.blog/images/Post/18/2.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/18/2.JPG" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/18/2.JPG"
loading="eager"
/&gt;&lt;p&gt;Finally, the Journey to the West series is coming to an end. To wrap it up, I’ll end this journey with three unexpected places we encountered along the way.&lt;/p&gt;
&lt;h2 id="ec-gallery"&gt;Ec Gallery&lt;/h2&gt;
&lt;p&gt;One evening after dinner, we were wandering around when we happened to pass by a gallery. Through the transparent display window, we saw the two paintings below, and I was immediately drawn in.
&lt;style&gt;
#masonry-a3255bb44b70c41503680e1600a110e8-1 {
width: 100%;
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .masonry-item img {
width: 80%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .glightbox:hover,
#masonry-a3255bb44b70c41503680e1600a110e8-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-a3255bb44b70c41503680e1600a110e8-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-a3255bb44b70c41503680e1600a110e8-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/2.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/2.JPG"
alt="This gaze feels so warm"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/2.JPG"
data-gallery-alt="This gaze feels so warm"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;This gaze feels so warm&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/3.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/3.JPG"
alt="Schroeder playing and piano and Woodstock playing the violin"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/3.JPG"
data-gallery-alt="Schroeder playing and piano and Woodstock playing the violin"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Schroeder playing and piano and Woodstock playing the violin&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-a3255bb44b70c41503680e1600a110e8-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;After chatting with the staff, we learned that the artist is Tom Everhart. He is actually a close friend of Peanuts creator Charles Schulz. Before Schulz passed away, he entrusted Everhart with the copyrights, with only one condition: Everhart could not repeat Schulz’s style. He had to paint a Snoopy that was truly his own.&lt;/p&gt;
&lt;style&gt;
#masonry-a3255bb44b70c41503680e1600a110e8-2 {
width: 100%;
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .glightbox:hover,
#masonry-a3255bb44b70c41503680e1600a110e8-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-a3255bb44b70c41503680e1600a110e8-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-a3255bb44b70c41503680e1600a110e8-2"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/4.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/4.JPG"
alt="A photo of Schulz and Everhart together "
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/4.JPG"
data-gallery-alt="A photo of Schulz and Everhart together "
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;A photo of Schulz and Everhart together &lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/5.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/5.JPG"
alt="Other Snoopy works by Everhart"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/5.JPG"
data-gallery-alt="Other Snoopy works by Everhart"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Other Snoopy works by Everhart&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-a3255bb44b70c41503680e1600a110e8-2';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;I really love Everhart’s style—dreamy, a little mischievous, and warm at the same time. I never knew Snoopy could be this colorful.&lt;/p&gt;
&lt;h2 id="the-shout-house"&gt;The Shout! House&lt;/h2&gt;
&lt;style&gt;
#masonry-a3255bb44b70c41503680e1600a110e8-3 {
width: 100%;
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .glightbox:hover,
#masonry-a3255bb44b70c41503680e1600a110e8-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-a3255bb44b70c41503680e1600a110e8-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-a3255bb44b70c41503680e1600a110e8-3"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/8.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/8.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/8.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-a3255bb44b70c41503680e1600a110e8-3';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;One night, we had dinner with Sam’s coworkers. During the meal, someone mentioned wanting to go to a piano bar afterward. Everyone was intrigued, so we decided to go together. There’s no cover charge, though they do check IDs and bags at the entrance. We ordered drinks and waited for the show to start at eight.&lt;/p&gt;
&lt;p&gt;On stage were Courtney, Eric, and Tom, taking turns performing. Most of the time, two of them played on stage while one took a break. It was usually dual pianos, though occasionally one of them would switch to drums or guitar. Honestly, after listening for the whole night, I was deeply impressed by each musician’s massive song repertoire, their playing and singing skills, and especially their improvisation ability.&lt;/p&gt;
&lt;p&gt;Each table had note paper and pencils, so guests could write down song requests and bring them up to place on the piano. Requests for birthday wishes and those with tips usually got priority. How many songs do they have to know to pull this off? Incredible.&lt;/p&gt;
&lt;p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;en-US&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/18/Song%201.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
(This song is called All My Ex’s Live in Texas. The lyrics are hilarious.)&lt;/p&gt;
&lt;p&gt;And live music really does have an irreplaceable vitality. During the performance, they actively hyped up the crowd and even invited people who made requests to come on stage and dance. The very hyped guy below and his friend were one such pair.&lt;/p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;en-US&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/18/Song%202.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;The music and atmosphere were both amazing. If I ever visit San Diego again, I’d love to come back for another show.&lt;/p&gt;
&lt;h2 id="the-rady-shell-at-jacobs-park"&gt;The Rady Shell at Jacobs Park&lt;/h2&gt;
&lt;p&gt;One evening, Sam and I were walking past The Rady Shell when we heard music and got curious. We walked over and realized it seemed like a rehearsal for some kind of musical.
&lt;style&gt;
#masonry-a3255bb44b70c41503680e1600a110e8-4 {
width: 100%;
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .masonry-container {
width: 100%;
position: relative;
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .glightbox:hover,
#masonry-a3255bb44b70c41503680e1600a110e8-4 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-a3255bb44b70c41503680e1600a110e8-4 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-a3255bb44b70c41503680e1600a110e8-4"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/9-1.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/9-1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/9-1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-a3255bb44b70c41503680e1600a110e8-4';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;The stage lighting was stunning, and the dialogue between the two actors was really funny—probably some sort of absurd comedy.&lt;/p&gt;
&lt;p&gt;We looked it up and found out it was a Christmas production hosted by Awaken Church nearby. What? Not only was there acting, but also aerial performers? What? Not only aerial performers, but fireworks too? We were very tempted to buy tickets, but the price was quite steep. After some thought, we decided to pass, telling ourselves that getting to see part of the rehearsal for free was already nice.&lt;/p&gt;
&lt;p&gt;A few days later, on a Saturday afternoon, after wandering around Little Italy, we somehow decided not to take the trolley and instead walk slowly back to the hotel. Along the waterfront path, we saw a guy who seemed to be promoting something. Somehow, despite being introverts, we didn’t avoid him.&lt;/p&gt;
&lt;p&gt;He said, “There’s a show tonight! It’s really awesome. You should come check it out!”&lt;/p&gt;
&lt;p&gt;He paused for a moment, then added,
“The ticket price is a bit high, but if you really want to come, you can tell the ticket booth staff, ‘Esther invited us,’ and it’ll be free.”&lt;/p&gt;
&lt;p&gt;And just like that, we got tickets. Once inside, I discovered that our seats were right at the front, in the rocking zone.&lt;/p&gt;
&lt;p&gt;Faced with a series of events piled up from so many “somehows,” with such an improbably low chance of happening, I can only describe it as God’s grace. When God gives a gift, it’s delivered right in front of you—and not sparingly, but generously, with front-row seats.&lt;/p&gt;
&lt;style&gt;
#masonry-a3255bb44b70c41503680e1600a110e8-5 {
width: 100%;
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .masonry-container {
width: 100%;
position: relative;
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .glightbox:hover,
#masonry-a3255bb44b70c41503680e1600a110e8-5 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-a3255bb44b70c41503680e1600a110e8-5 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-a3255bb44b70c41503680e1600a110e8-5"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/9.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/9.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/9.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/10.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/10.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/10.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/11.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/11.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/11.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/12.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/12.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/12.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/13.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/13.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/13.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/14.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/14.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/14.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/15.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/15.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/15.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/18/16.JPG"
class="glightbox"
data-gallery="masonry-a3255bb44b70c41503680e1600a110e8-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/18/16.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/18/16.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-a3255bb44b70c41503680e1600a110e8-5';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;The entire production told the story of Jesus’ birth. By the end, I felt deeply moved. This church is truly full of talent—the band, singers, aerial performers, actors, and all the behind-the-scenes staff were completely devoted, making the whole show highly professional and spectacular.&lt;/p&gt;
&lt;p&gt;After entering the venue, we also ran into the promoter again and chatted for a bit. We learned that his name was Pedro.&lt;/p&gt;
&lt;p&gt;Thank you, Pedro, for your hard work serving under the sun and for giving us the chance to experience this performance.&lt;/p&gt;
&lt;h2 id="closing"&gt;Closing&lt;/h2&gt;
&lt;p&gt;At last, Journey to the West is finished. I never planned to write this much at the beginning, but as I kept going, the series ended up surpassing 4,000 words (it feels like I’m about to turn into a travel-and-food blogger, lol). Did any part of these posts resonate with you? Feel free to write to me and share your thoughts!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/18/25. It was later translated with assistance from AI tools, edited by me, and published in English on 01/08/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Journey to the West (Part III): People I Met in San Diego</title><link>https://alicehsu.blog/posts/2026/01/journey-to-the-west-part-iii-people-i-met-in-san-diego/</link><pubDate>Thu, 08 Jan 2026 20:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/journey-to-the-west-part-iii-people-i-met-in-san-diego/</guid><description>“I’ve never seen snow in my entire life. I really want to.”</description><media:thumbnail url="https://alicehsu.blog/images/Post17home.gif"/><media:content url="https://alicehsu.blog/images/Post17home.gif" medium="image"/><enclosure url="https://alicehsu.blog/images/Post17home.gif" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post17home.gif"
loading="eager"
/&gt;&lt;h3 id="part-i"&gt;Part I&lt;/h3&gt;
&lt;p&gt;At dusk, Little Italy was brightly lit and bustling. The lights of The Market of Buon Appetito were on as well.&lt;/p&gt;
&lt;p&gt;The grocery store isn’t big. It sits on a street corner, right next to their own restaurant, and looks as if two rooms were knocked into one. The owner makes extremely efficient use of space (this always reminds me of Chinese supermarkets). One room sells dry goods: shelves packed tightly together, leaving aisles just wide enough for about one and a half people to pass. The shelves are filled with all kinds of sauces and pasta—thin noodles, wide noodles, spirals, shells, and even wheel-shaped pasta—so much that it’s almost overwhelming.&lt;/p&gt;
&lt;p&gt;The other room holds a small fresh-food section and somehow also squeezes in a coffee spot with bar seating. Well, it might not really be a shop; let&amp;rsquo;s just call it a corner instead.&lt;/p&gt;
&lt;p&gt;No one in the store was idle, including that Italian guy.&lt;/p&gt;
&lt;p&gt;We grabbed a couple of Galvanina sodas and waited at the counter to check out. Peeking over, we saw a guy in a black Buon Appetito T-shirt stocking shelves with merchandise. When he noticed us, he put down what he was doing and started chatting.&lt;/p&gt;
&lt;p&gt;“Where are you from?”&lt;/p&gt;
&lt;p&gt;“Wisconsin. It’s really cold there. There’s a snowstorm right now.”&lt;/p&gt;
&lt;p&gt;“Wow,” he said. “I’ve never seen snow in my entire life. I really want to.”&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 20vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Because the Galvanina soda was so good, we ended up visiting the shop several more times, and we always saw him there. He was either busy working or chatting with customers.&lt;/p&gt;
&lt;p&gt;When I saw him again, I said, “It&amp;rsquo;s good to see you again!”&lt;/p&gt;
&lt;p&gt;“Oh right! You were here a few days ago.”&lt;/p&gt;
&lt;p&gt;After a bit of small talk, we ordered two espressos from that mysterious little coffee corner and kept chatting. He talked with Sam about conferences and AI, and mentioned that he was also a student, working here part-time for now, and that he was quite interested in those topics too. Mid-conversation, he suddenly seemed to remember something and said,&lt;/p&gt;
&lt;p&gt;“Ah, I hate to say that, but… you still need to pay.”&lt;/p&gt;
&lt;p&gt;We all laughed. After paying, we chatted a bit more. Then another customer came up with a question. He waved us off and got busy again.&lt;/p&gt;
&lt;div style="width: 100%; justify-content: center; display: flex;"&gt;
&lt;div style="width: 20vw;"&gt;
&lt;hr style="margin: 0; --tw-gradient-via: var(--color-accent);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The last time we saw him was one morning.&lt;/p&gt;
&lt;p&gt;We got off the trolley at Little Italy station and happened to see him hurrying along in front of us, still wearing that black Buon Appetito T-shirt.&lt;/p&gt;
&lt;p&gt;He crossed the street just as the traffic light turned red. From the other side, we watched him walk into a convenience store ahead.&lt;/p&gt;
&lt;p&gt;For him, it was probably just another workday.&lt;/p&gt;
&lt;p&gt;Chatting with tourists like us is likely part of his everyday summer routine. But he probably doesn’t know that his everyday life brought warmth to two people from a snowy place.&lt;/p&gt;
&lt;p&gt;I hope that one day, he’ll get to see real snow.&lt;/p&gt;
&lt;h3 id="part-ii"&gt;Part II&lt;/h3&gt;
&lt;p&gt;Right outside the back door of the hotel is a coastal walkway where many people walk their dogs or go for a run.&lt;/p&gt;
&lt;p&gt;There are lots of runners. Most commonly young women in yoga pants and shirtless men.&lt;/p&gt;
&lt;p&gt;Besides yoga pants and bare chests, another common accessory among them is a speaker. Yes, a speaker—not headphones. The kind that plays music out loud so everyone can hear it without needing to clean their ears.&lt;/p&gt;
&lt;p&gt;It reminded me of how many uncles in Taiwan bring their own speakers when hiking. The difference is that instead of Taiwanese love songs, they play trendy, rhythmic English dance music. Of course, people with speakers here look much cooler than those uncles.&lt;/p&gt;
&lt;p&gt;Even though it’s visually pleasing, I still don’t really like people who bring their own BGM (after all, you have to endure music you may not enjoy). So I asked Sam a hypothetical question:&lt;/p&gt;
&lt;p&gt;“Which kind of person do you think is harder to tolerate: someone running with a speaker, or someone dancing on the street while wearing headphones?”&lt;/p&gt;
&lt;p&gt;He thought for a moment and said:&lt;/p&gt;
&lt;p&gt;“Probably the one dancing with headphones. You can’t be sure they’re actually listening to music—maybe they’re just high. And you can’t predict their movements either. If you get too close, you might accidentally get hit.”&lt;/p&gt;
&lt;p&gt;Just a few minutes later, we ran into a guy wearing headphones, dancing as if no one else existed.&lt;/p&gt;
&lt;p&gt;……&lt;/p&gt;
&lt;p&gt;“I think you’re right. People with speakers are much safer.”&lt;/p&gt;
&lt;h3 id="postscript"&gt;Postscript&lt;/h3&gt;
&lt;p&gt;The first two parts of &amp;ldquo;Journey to the West&amp;rdquo; were image-driven travel posts. For this final piece, I wanted to try a different style—using pure text to sketch the interesting people we met in San Diego. After finishing it, I realized these fragments of memory came together to form a surprisingly interesting shape. I quite like it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/17/25. It was later translated with assistance from AI tools, edited by me, and published in English on 01/08/26.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Sesame Oil Chicken Misua</title><link>https://alicehsu.blog/posts/2026/01/sesame-oil-chicken-misua/</link><pubDate>Thu, 08 Jan 2026 00:10:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/sesame-oil-chicken-misua/</guid><description>“one family cooks chicken, and the whole neighborhood smells the aroma.”</description><media:thumbnail url="https://alicehsu.blog/images/Post24home.jpg"/><media:content url="https://alicehsu.blog/images/Post24home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post24home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;In my memory, my family didn’t actually cook sesame oil chicken very often, but I have a fairly strong impression of the dish. When I was a child, one of our neighbors loved to cook it; the fragrance would often waft out in broad daylight—it was truly a case of “one family cooks chicken, and the whole neighborhood smells the aroma.”&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;During my university years, I always loved going to the street behind the back gate of the college with good friends in the winter to eat sesame oil chicken misua (noodles). The restaurant was within walking distance, just a bit far, but chatting with friends made walking in the cold wind feel like less of a chore. I recall that the noodles and the soup had to be ordered separately. We would also add an order of blanched vegetables—it was Taiwanese cabbage soaked in sesame oil soup, and it was incredibly good. After eating, our bodies would be all warm and cozy. The road back to the dorm was uphill, so by the time we got back, we weren’t just full; we were sweating, which helped us withstand the damp, cold weather of northern Taiwan.&lt;/p&gt;
&lt;p&gt;After moving to the U. S., I met an auntie at church who used to work in restaurants. One day, she wanted to share her cooking skills with us kids, so she opened up requests: “Just tell me what dish you want to learn!” Thus, one afternoon we gathered together to learn how to make crystal dumplings, sesame oil chicken, moon shrimp cakes, and more. We had a wonderful time cooking.&lt;/p&gt;
&lt;p&gt;It was extremely cold a while ago, probably around minus ten degrees Celsius. Suddenly, on a whim, I craved sesame oil chicken misua and remembered that I still had the recipe I learned from the auntie. So, Sam and I went to the supermarket, bought the ingredients, and came back to cook. We adjusted the recipe slightly, removing the goji berries and red dates that we don’t like and adding Taiwanese cabbage. We were very satisfied with the final result! It’s quite moving to eat a dish full of Taiwanese flavor while in a foreign country.&lt;/p&gt;
&lt;style&gt;
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 {
width: 100%;
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .glightbox:hover,
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-e7f499abfdf25c26c8d51f48a5f706fe-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-e7f499abfdf25c26c8d51f48a5f706fe-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post24home.jpg"
class="glightbox"
data-gallery="masonry-e7f499abfdf25c26c8d51f48a5f706fe-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post24home.jpg"
alt="Super Yummy！"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post24home.jpg"
data-gallery-alt="Super Yummy！"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Super Yummy！&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-e7f499abfdf25c26c8d51f48a5f706fe-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h3 id="cooking-steps-for-sesame-oil-chicken"&gt;Cooking Steps for Sesame Oil Chicken&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Sauté ginger slices in vegetable oil starting with cold oil.&lt;/li&gt;
&lt;li&gt;Once the ginger turns golden brown, add sesame oil and continue to sauté.&lt;/li&gt;
&lt;li&gt;After the aroma is released, sear the chicken with the skin side down.&lt;/li&gt;
&lt;li&gt;Once the chicken skin is golden brown, add rice wine and hot water directly (at a ratio of approximately 1:1) and simmer for one hour.&lt;/li&gt;
&lt;li&gt;Add cabbage and cook until it becomes slightly translucent.&lt;/li&gt;
&lt;li&gt;Season with salt and it’s ready to serve.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="adding-misua"&gt;Adding Misua&lt;/h3&gt;
&lt;p&gt;The noodles we bought were Wu-Mu “Tomoshiraga” noodles, which are a bit thinner than the noodles in my memory. We used a separate pot to boil the noodles; they can be scooped into a bowl after about two minutes. Then, just add the prepared sesame oil chicken soup and ingredients, and it’s ready for the table.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 01/03/26. It was later translated with assistance from AI tools, edited by me, and published in English on 01/08/26.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;This is adapted from a common Taiwanese saying: &amp;ldquo;One family barbecues, ten thousand families smell the fragrance.&amp;rdquo;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>Changed my emails and Handles!</title><link>https://alicehsu.blog/posts/2026/01/changed-my-emails-and-handles/</link><pubDate>Wed, 07 Jan 2026 23:50:31 -0600</pubDate><guid>https://alicehsu.blog/posts/2026/01/changed-my-emails-and-handles/</guid><description>@alicehsumusic / &lt;a href="mailto:alicehsumusic@gmail.com"&gt;alicehsumusic@gmail.com&lt;/a&gt; / &lt;a href="mailto:alicehsuwrites@gmail.com"&gt;alicehsuwrites@gmail.com&lt;/a&gt;</description><media:thumbnail url="https://alicehsu.blog/images/Post26home.jpg"/><media:content url="https://alicehsu.blog/images/Post26home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post26home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post26home.jpg"
loading="eager"
/&gt;&lt;p&gt;New year, new beginnings. In order to revamp my image (?), I recently changed my YouTube and SoundCloud handles and set up two new Gmail accounts.&lt;/p&gt;
&lt;p&gt;My YouTube and SoundCloud handles, which were originally &lt;code&gt;@alice_h_hsu&lt;/code&gt;, are now &lt;code&gt;@alicehsumusic&lt;/code&gt;. It’s clear and straightforward, representing me making music.&lt;/p&gt;
&lt;p&gt;As for my Gmail accounts, I previously had an address called alicemusicwonderland77 for music-related things and emails from this blog. However, I eventually felt it was too long and unprofessional. So, I went ahead and created &lt;a href="mailto:alicehsumusic@gmail.com"&gt;alicehsumusic@gmail.com&lt;/a&gt; specifically for music-related matters. Additionally, I applied for another Gmail account, &lt;a href="mailto:alicehsuwrites@gmail.com"&gt;alicehsuwrites@gmail.com&lt;/a&gt;, to handle blog correspondence and writing-related tasks. Any emails sent to &lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt; (displayed on my homepage) will also be automatically forwarded to this address.&lt;/p&gt;
&lt;p&gt;Nowadays, finding a Gmail address that looks professional and cool without having to add any numbers is truly difficult! I’m so happy to have found these two unused accounts.&lt;/p&gt;
&lt;p&gt;In short, here is how to contact me:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Music-related:
Please email &lt;a href="mailto:alicehsumusic@gmail.com"&gt;alicehsumusic@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Writing/Blog-related:
Please email &lt;a href="mailto:alicehsuwrites@gmail.com"&gt;alicehsuwrites@gmail.com&lt;/a&gt; or &lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That said, if I write a music-related post and you want to respond to the content, feel free to pick either one lol. Either way, the person receiving the email will always be me.&lt;/p&gt;
&lt;p&gt;To all my silent readers out there, come email me and say hi!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from AI tools, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Journey to the West (Part II): Food of San Diego</title><link>https://alicehsu.blog/posts/2025/12/journey-to-the-west-part-ii-food-of-san-diego/</link><pubDate>Wed, 24 Dec 2025 16:20:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/12/journey-to-the-west-part-ii-food-of-san-diego/</guid><description>Before the trip even began, as foodies, we had already saved a long list of restaurants on the Google Map.</description><media:thumbnail url="https://alicehsu.blog/images/Post/15/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/15/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/15/1.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/15/1.jpg"
loading="eager"
/&gt;&lt;p&gt;Before the trip even began, as foodies, we had already saved a long list of restaurants on the Google Map. Sam and I are big ramen fans, but surprisingly, there aren&amp;rsquo;t many ramen shops in San Diego, and the ones we found didn&amp;rsquo;t look especially impressive. On the other hand, the restaurants in Little Italy looked really good, so we decided to give them a try. That decision changed everything. One meal in, and we officially became fans of Italian food.&lt;/p&gt;
&lt;p&gt;Little Italy is right next to the airport, and the MTS (San Diego’s trolley system) stops there as well, which makes it incredibly convenient. Fresh off the plane and absolutely starving, we headed straight there for dinner. The whole neighborhood has a very Italian vibe—relaxed, chill, and lively at the same time. Almost every restaurant has outdoor seating with tall propane patio heaters, so you can enjoy eating outside without freezing.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/31.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/31.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="main-dishes"&gt;Main Dishes&lt;/h2&gt;
&lt;p&gt;Walking into an Italian-owned restaurant honestly feels like stepping into someone’s grandma’s kitchen. Portions are huge—the kind that take you from “very &amp;ldquo;starving&amp;rdquo; to “I cannot move.” Usually, each of us ordered one main dish, or we shared an appetizer and a main, and that was more than enough.&lt;/p&gt;
&lt;h3 id="arancini-and-octopus-salad-insalata-di-polpo"&gt;Arancini and Octopus Salad (Insalata di Polpo)&lt;/h3&gt;
&lt;p&gt;We ordered arancini and octopus salad as appetizers at &lt;a href="https://maps.app.goo.gl/PfHRxdasvwwRX6eD8"target="_blank"
&gt;Buon Appetito&lt;/a&gt; and &lt;a href="https://maps.app.goo.gl/MtpcPQXRd9DvfDSg6"target="_blank"
&gt;Solunto&lt;/a&gt; respectively. The arancini was about two-thirds the size of my fist. They were three deep-fried risottos ball stuffed with meat sauce, cheese, and green peas. The outside was crispy, with a sticky texture that arancini usually has. The filling was rich, cheesy, and stretchy.&lt;/p&gt;
&lt;p&gt;I usually avoid green peas (thanks to some childhood memories), but these were surprisingly good——no raw, grassy flavor at all, and perfectly tender. Turns out I’m not picky; I just don’t like bad food. lol&lt;/p&gt;
&lt;p&gt;The octopus salad came with octopus, mixed greens, roasted potatoes, olives, and artichokes. Once you squeeze some lemon juice over it, everything balances out beautifully and tastes fresh and bright. I expected the octopus to be cold, but it was actually warm and incredibly tender. Very different from the chewy octopus you get in Takoyaki.
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/5.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/5.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h3 id="cioppino-and-risotto-on-the-side"&gt;Cioppino and Risotto on the Side&lt;/h3&gt;
&lt;p&gt;Cioppino (/tʃoʊˈpiːnoʊ/) is basically a must-order in San Diego. Being so close to the ocean, Little Italy restaurants have access to fresh, affordable seafood though not every place serves it. After some searching, we found it at &lt;a href="https://maps.app.goo.gl/PfHRxdasvwwRX6eD8"target="_blank"
&gt;Buon Appetito&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That day, neither of us was especially hungry, so we shared one cioppino and ordered the risotto as a side. First, the owner brought us complimentary bread. Then came the risotto. Finally, he split the cioppino into two bowls for us without us even asking. So thoughtful!&lt;/p&gt;
&lt;style&gt;
#masonry-36e8e6f20563f95425c95284e89c654f-1 {
width: 100%;
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .glightbox:hover,
#masonry-36e8e6f20563f95425c95284e89c654f-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-36e8e6f20563f95425c95284e89c654f-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-36e8e6f20563f95425c95284e89c654f-1"
data-columns="3"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/9.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/9.jpg"
alt="Complimentary Bread"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/9.jpg"
data-gallery-alt="Complimentary Bread"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Complimentary Bread&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/8.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/8.jpg"
alt="Half Portion of Cioppino"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/8.jpg"
data-gallery-alt="Half Portion of Cioppino"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Half Portion of Cioppino&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/7.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/7.jpg"
alt="Side of Risotto"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/7.jpg"
data-gallery-alt="Side of Risotto"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Side of Risotto&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-36e8e6f20563f95425c95284e89c654f-1';
const config = {
columns: 3 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;Looking at the portions, it honestly felt like the owner was worried we might leave hungry.&lt;/p&gt;
&lt;p&gt;The bread alone could have lasted me five days’ worth of breakfasts. Even half a portion of cioppino was loaded with seafood, and the risotto was piled into a small mountain.&lt;/p&gt;
&lt;p&gt;Everything was excellent. The bread was soft and perfect for dipping into their house sauce. Even knowing it was several breakfasts’ worth, we finished it anyway. It&amp;rsquo;s so good that we even stopped by their attached Italian grocery store and bought more bread and sauce for breakfast over the next few days after the meal. The cioppino was packed with clams, mussels, squid, scallops, fish, and shrimp. Topped with a generous layer of Parmesan cheese and soaked in a tomato-based broth, it felt like I made up for an entire year of not eating seafood. The risotto was properly done, with a slightly firm center to the rice. The saffron aroma was rich. Absolutely delicious.&lt;/p&gt;
&lt;h3 id="pasta-and-risotto"&gt;Pasta and Risotto&lt;/h3&gt;
&lt;p&gt;At these restaurants, once your dish arrives, the server often asks, “Would you like some Parmesan cheese?” If you say yes, they bring over a huge bowl of grated cheese and say, “Tell me when.” Then they start spooning cheese onto your pasta or risotto. Even though I live in the cheese state, good cheese is still not cheap. Watching them be so generous made me feel like a spoiled grandchild being fed nonstop by a doting grandmother.&lt;/p&gt;
&lt;p&gt;One particularly fun dish was cheese wheel pasta, especially at &lt;a href="https://maps.app.goo.gl/uynWX388Avqjta2r7"target="_blank"
&gt;Vincenzo&lt;/a&gt;. After the pasta is cooked, a server brings it to the table along with an enormous wheel of Parmesan for tableside service. First, he torched the cheese, then scraped the softened surface. After that, he poured the pasta into the wheel, tossed it thoroughly, and finally plated it. Pasta coated in warm, melty cheese is impossible to resist. We also tried cheese wheel pasta at another restaurant with our friend, but that version skipped the torch. The pasta simply slid quietly into the cheese, got mixed a couple of times, and was done. It really couldn&amp;rsquo;t compare.&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/11.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/11.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/15.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/15.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/14.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/14.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/13.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/13.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/12.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/12.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/10.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/10.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;div
class="video-js-container"&gt;
&lt;video
data-setup="{&amp;#34;language&amp;#34;:&amp;#34;en-US&amp;#34;,&amp;#34;playbackRates&amp;#34;:[0.5,1,1.5,2]}"
width="100%"
height="100%"
class="video-js vjs-default-skin vjs-fluid"
controls
&gt;
&lt;source
src="https://alicehsu.blog/images/Post/15/Cheese%20Wheel%20Pasta.mp4"
&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h3 id="tacos-and-nachos"&gt;Tacos and Nachos&lt;/h3&gt;
&lt;p&gt;Besides Italian food, tacos are another must eat in San Diego. We visited &lt;a href="https://maps.app.goo.gl/mZPy8NBqv8XuvHRf7"target="_blank"
&gt;Taco El Gordo&lt;/a&gt; and &lt;a href="https://maps.app.goo.gl/qi79vQh418Ea2RbS9"target="_blank"
&gt;The Waves&lt;/a&gt;. Both are located just south of Little Italy, about a ten minute walk from the Convention Center. Taco El Gordo always has a line outside. Even during mid afternoon snack time, there are still plenty of people waiting. The place was packed.&lt;/p&gt;
&lt;p&gt;We ordered three different tacos. My favorite was beef tongue. It had a charming smoky aroma and was well seasoned. The cilantro was milder than what I am used to in Taiwan, so even someone who normally avoids cilantro could enjoy it. There was also plenty of avocado, while the onion and lime juice helped balance the richness, giving the tacos more depth and contrast. As for the horchata, it was incredibly sweet. I believe it is made from rice and has a strong cinnamon flavor, which was nice, but the sweetness level was enough to make my head spin. I simply could not finish it.&lt;/p&gt;
&lt;p&gt;Taco El Gordo does not serve fish tacos, so when we wanted those, we went to The Waves. After ordering fish tacos, we also added nachos. The fish portions were generous and very satisfying. The nachos came in a huge portion as well. The three of us barely managed to finish them.&lt;/p&gt;
&lt;style&gt;
#masonry-36e8e6f20563f95425c95284e89c654f-2 {
width: 100%;
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .glightbox:hover,
#masonry-36e8e6f20563f95425c95284e89c654f-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-36e8e6f20563f95425c95284e89c654f-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-36e8e6f20563f95425c95284e89c654f-2"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/17.JPG"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/17.JPG"
alt="So many people at Taco El Gordo"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/17.JPG"
data-gallery-alt="So many people at Taco El Gordo"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;So many people at Taco El Gordo&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/18.JPG"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/18.JPG"
alt="Beef tongue, beef and pork tacos at Taco El Gordo"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/18.JPG"
data-gallery-alt="Beef tongue, beef and pork tacos at Taco El Gordo"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Beef tongue, beef and pork tacos at Taco El Gordo&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/19.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/19.jpg"
alt="Nachos at The Waves"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/19.jpg"
data-gallery-alt="Nachos at The Waves"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Nachos at The Waves&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/20.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/20.jpg"
alt="Fish Tacos at The Waves"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/20.jpg"
data-gallery-alt="Fish Tacos at The Waves"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Fish Tacos at The Waves&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-36e8e6f20563f95425c95284e89c654f-2';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="desserts-and-drinks"&gt;Desserts and Drinks&lt;/h2&gt;
&lt;p&gt;Of course, there’s always room for dessert. The photos may not look large, but in reality, most of these desserts are meant to be shared by two or three people. I will start with my first-ever experience trying crêpes and cannoli. Taiwanese style crêpes are crispy, while French crêpes are soft. At &lt;a href="https://maps.app.goo.gl/NtqKdpdP8B1a86Q47"target="_blank"
&gt;Le Parfait Paris&lt;/a&gt;, which offers many crêpe flavors, we ordered one filled with real strawberries and topped with berry sauce. It was excellent. As for the cannoli from &lt;a href="https://maps.app.goo.gl/MtpcPQXRd9DvfDSg6"target="_blank"
&gt;Solunto&lt;/a&gt;, they sell both large and small sizes. We shared one large piece. The shell was hard and crunchy, and the flavor oddly reminded me of &lt;a href="https://www.formosamarket.com/products/hty-salted-radish-cracker-110g"target="_blank"
&gt;Taiwanese radish crackers&lt;/a&gt;, which felt a bit unexpected. Still, the contrast between the crisp shell and the soft filling worked well overall.&lt;/p&gt;
&lt;p&gt;For drinks, Galvanina fruit sodas are highly recommended. They are surprisingly affordable at Italian grocery stores, often about half the price of Walmart. After trying three different flavors, lemon was still my favorite. The lemon flavor is gently sweet, and the carbonation is soft and delicate, nothing like the sharp fizz of Sprite. Very refreshing.&lt;/p&gt;
&lt;style&gt;
#masonry-36e8e6f20563f95425c95284e89c654f-3 {
width: 100%;
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .glightbox:hover,
#masonry-36e8e6f20563f95425c95284e89c654f-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-36e8e6f20563f95425c95284e89c654f-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-36e8e6f20563f95425c95284e89c654f-3"
data-columns="3"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/23.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/23.jpg"
alt="Crêpe"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/23.jpg"
data-gallery-alt="Crêpe"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Crêpe&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/24.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/24.jpg"
alt="Cannoli"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/24.jpg"
data-gallery-alt="Cannoli"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Cannoli&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/25.jpg"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/25.jpg"
alt="Napoleon Pie"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/25.jpg"
data-gallery-alt="Napoleon Pie"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Napoleon Pie&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/26.JPG"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/26.JPG"
alt="Tiramisu"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/26.JPG"
data-gallery-alt="Tiramisu"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Tiramisu&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/27.JPG"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/27.JPG"
alt="Irish Coffee"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/27.JPG"
data-gallery-alt="Irish Coffee"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Irish Coffee&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/15/28.JPG"
class="glightbox"
data-gallery="masonry-36e8e6f20563f95425c95284e89c654f-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/15/28.JPG"
alt="Galvanina fruit soda"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/15/28.JPG"
data-gallery-alt="Galvanina fruit soda"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Galvanina fruit soda&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-36e8e6f20563f95425c95284e89c654f-3';
const config = {
columns: 3 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="closing-thoughts"&gt;Closing Thoughts&lt;/h2&gt;
&lt;p&gt;While writing this post, I found myself missing the food more and more with every paragraph. If I had to recommend just one Italian restaurant, it would be Buon Appetito. The food is excellent, the owner is genuinely thoughtful, and the attached grocery store is staffed by a particularly interesting guy who deserves a story of his own. There is a warmth there that other Italian restaurants do not quite have, which is why it earned its place as both the cover and thumbnail of this post. No sponsorship involved, just sincere appreciation.&lt;/p&gt;
&lt;p&gt;To be continued&amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/12/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/24/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Journey to the West (Part I): Sights of San Diego</title><link>https://alicehsu.blog/posts/2025/12/journey-to-the-west-part-i-sights-of-san-diego/</link><pubDate>Tue, 23 Dec 2025 21:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/12/journey-to-the-west-part-i-sights-of-san-diego/</guid><description>Why is it called &amp;ldquo;Journey to the West?&amp;rdquo; Simply because this is a travelogue written by someone who lives in Wisconsin and traveled west to California. lol</description><media:thumbnail url="https://alicehsu.blog/images/Post/14/0-2.JPG"/><media:content url="https://alicehsu.blog/images/Post/14/0-2.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/14/0-2.JPG" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/14/0-2.JPG"
loading="eager"
/&gt;&lt;p&gt;Why is it called &amp;ldquo;Journey to the West?&amp;rdquo; Simply because this is a travelogue written by someone who lives in Wisconsin and traveled west to California. lol&lt;/p&gt;
&lt;p&gt;I just got back from a trip to San Diego. This year, the NeurIPS conference was held there, and &lt;a href="https://arxiv.org/pdf/2509.23564"target="_blank"
&gt;Sam’s paper&lt;/a&gt; was accepted as a Poster. Thanks to that, I had the chance to tag along and travel there as well.&lt;/p&gt;
&lt;p&gt;The conference started on December 2, and we arrived a few days early. We left on Thanksgiving Day, November 27, to visit a friend first. It turned out that we accidentally dodged Wisconsin’s first snowstorm of the year and traveled to a place where we could wear T-shirts only.&lt;/p&gt;
&lt;p&gt;The moment we got off the bus, everyone around us was taking photos. It&amp;rsquo;s really beautiful!
&lt;style&gt;
#masonry-4f9a592310160af8505048baff6c1d21-1 {
width: 100%;
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .glightbox:hover,
#masonry-4f9a592310160af8505048baff6c1d21-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-4f9a592310160af8505048baff6c1d21-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-4f9a592310160af8505048baff6c1d21-1"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/0-0.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/0-0.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/0-0.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/0-1.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/0-1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/0-1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/0-2.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/0-2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/0-2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-4f9a592310160af8505048baff6c1d21-1';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="balboa-park-the-botanical-building"&gt;Balboa Park: The Botanical Building&lt;/h2&gt;
&lt;p&gt;On our second day after arriving, we took a walk around Balboa Park. Being Thanksgiving weekend, it felt like half of San Diego had shown up here. Parking was difficult, so we parked farther away and walked in.&lt;/p&gt;
&lt;p&gt;Balboa Park is huge, with tons of attractions and museums scattered throughout. There is no way to see everything in a single day, so we picked a few spots that interested us. One of them was the Botanical Building. Its lattice roof allows rainwater to pass through. On rainy days, plants can therefore be watered. The plants were cute, and there was even a small fountain. It is a great place for photos.&lt;/p&gt;
&lt;style&gt;
#masonry-4f9a592310160af8505048baff6c1d21-2 {
width: 100%;
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .glightbox:hover,
#masonry-4f9a592310160af8505048baff6c1d21-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-4f9a592310160af8505048baff6c1d21-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-4f9a592310160af8505048baff6c1d21-2"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/1.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/1.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/1.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/2.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/2.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/2.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/3.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/3.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/3.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-4f9a592310160af8505048baff6c1d21-2';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="balboa-park-san-diego-museum-of-art"&gt;Balboa Park: San Diego Museum of Art&lt;/h2&gt;
&lt;p&gt;Our next stop was the San Diego Museum of Art. Many of the buildings in Balboa Park, like this one, share a similar style, with carvings decorating their exteriors. Inside the museum, we saw works from surrealism, Dutch paintings, and pieces by an artist named Alfredo Castañeda. What follows are some of my silly reflections. Please don&amp;rsquo;t take them seriously.
&lt;style&gt;
#masonry-4f9a592310160af8505048baff6c1d21-3 {
width: 100%;
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .glightbox:hover,
#masonry-4f9a592310160af8505048baff6c1d21-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-4f9a592310160af8505048baff6c1d21-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-4f9a592310160af8505048baff6c1d21-3"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/4.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/4.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/4.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/5.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/5.JPG"
alt="Is this meant to suggest that the tree is actually the raw material for the pipe?"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/5.JPG"
data-gallery-alt="Is this meant to suggest that the tree is actually the raw material for the pipe?"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Is this meant to suggest that the tree is actually the raw material for the pipe?&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/6.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/6.JPG"
alt="Some visitors pointed out that there’s a ship in the upper-right corner. Pretty cool."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/6.JPG"
data-gallery-alt="Some visitors pointed out that there’s a ship in the upper-right corner. Pretty cool."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Some visitors pointed out that there’s a ship in the upper-right corner. Pretty cool.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/7.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/7.JPG"
alt="Calves with Varicose Veins after sitting too long."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/7.JPG"
data-gallery-alt="Calves with Varicose Veins after sitting too long."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Calves with Varicose Veins after sitting too long.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/8.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/8.JPG"
alt="&amp;#34;Big sister isn’t home today. Go grab that portrait so we can paint a family picture!”"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/8.JPG"
data-gallery-alt="&amp;#34;Big sister isn’t home today. Go grab that portrait so we can paint a family picture!”"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;&amp;#34;Big sister isn’t home today. Go grab that portrait so we can paint a family picture!”&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/9.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/9.JPG"
alt="Castañeda clearly loved painting himself. A lot of his works feature his own face, and most of the time I find them funny while he was probably exploring the idea that people carry multiple identities."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/9.JPG"
data-gallery-alt="Castañeda clearly loved painting himself. A lot of his works feature his own face, and most of the time I find them funny while he was probably exploring the idea that people carry multiple identities."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Castañeda clearly loved painting himself. A lot of his works feature his own face, and most of the time I find them funny while he was probably exploring the idea that people carry multiple identities.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/10.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/10.JPG"
alt="This kind of expressionless, multi-faced figure shows up in most of his paintings. There were quite a few similar works scattered throughout the exhibition."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/10.JPG"
data-gallery-alt="This kind of expressionless, multi-faced figure shows up in most of his paintings. There were quite a few similar works scattered throughout the exhibition."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;This kind of expressionless, multi-faced figure shows up in most of his paintings. There were quite a few similar works scattered throughout the exhibition.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/11.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/11.JPG"
alt="&amp;#34;Look! Here are holes!&amp;#34;"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/11.JPG"
data-gallery-alt="&amp;#34;Look! Here are holes!&amp;#34;"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;&amp;#34;Look! Here are holes!&amp;#34;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-4f9a592310160af8505048baff6c1d21-3';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="maritime-museum-of-san-diego"&gt;Maritime Museum of San Diego&lt;/h2&gt;
&lt;p&gt;The Maritime Museum of San Diego ended up being the best value of the entire trip. Admission was $28 per person, and that gave us access to 9 ships. There were also optional add-ons such as harbor cruises and pirate ship experiences, but we skipped those. The standard ticket alone kept us busy for more than three hours. All the ships are docked along San Diego Bay, and in some cases, you can even walk directly from one ship to another.
&lt;style&gt;
#masonry-4f9a592310160af8505048baff6c1d21-4 {
width: 100%;
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .masonry-container {
width: 100%;
position: relative;
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .glightbox:hover,
#masonry-4f9a592310160af8505048baff6c1d21-4 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-4f9a592310160af8505048baff6c1d21-4 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-4f9a592310160af8505048baff6c1d21-4"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/13.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/13.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/13.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/14.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/14.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/14.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/16.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/16.JPG"
alt="This is the entrance to the USS Dolphin submarine. You can actually walk down inside! "
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/16.JPG"
data-gallery-alt="This is the entrance to the USS Dolphin submarine. You can actually walk down inside! "
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;This is the entrance to the USS Dolphin submarine. You can actually walk down inside! &lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/15.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/15.JPG"
alt="The stairs are steep, so you have to face outward as you climb down."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/15.JPG"
data-gallery-alt="The stairs are steep, so you have to face outward as you climb down."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The stairs are steep, so you have to face outward as you climb down.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/17.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/17.JPG"
alt="You can see the sonar room."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/17.JPG"
data-gallery-alt="You can see the sonar room."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;You can see the sonar room.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/18.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/18.JPG"
alt="You can even operate the periscope and look out over the water."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/18.JPG"
data-gallery-alt="You can even operate the periscope and look out over the water."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;You can even operate the periscope and look out over the water.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/19.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/19.JPG"
alt="The view through the periscope. Very cool. (This shot was the result of a lot of effort on focusing.)"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/19.JPG"
data-gallery-alt="The view through the periscope. Very cool. (This shot was the result of a lot of effort on focusing.)"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The view through the periscope. Very cool. (This shot was the result of a lot of effort on focusing.)&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/20.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/20.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/20.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/21.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/21.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/21.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/22.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/22.JPG"
alt="On the PCF 816 Swift Boat, they hand out helmets and vests so you can get a taste of what it might feel like to be in the Navy. There was also an older gentleman who looked like the captain himself, chatting away with visitors."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/22.JPG"
data-gallery-alt="On the PCF 816 Swift Boat, they hand out helmets and vests so you can get a taste of what it might feel like to be in the Navy. There was also an older gentleman who looked like the captain himself, chatting away with visitors."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;On the PCF 816 Swift Boat, they hand out helmets and vests so you can get a taste of what it might feel like to be in the Navy. There was also an older gentleman who looked like the captain himself, chatting away with visitors.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/23.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/23.JPG"
alt="There was also a boat that looked like something only aristocrats would have traveled on."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/23.JPG"
data-gallery-alt="There was also a boat that looked like something only aristocrats would have traveled on."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;There was also a boat that looked like something only aristocrats would have traveled on.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/24.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/24.JPG"
alt="Inside, it was filled with fancy-looking tableware. Perfect for pretending you are having afternoon tea."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/24.JPG"
data-gallery-alt="Inside, it was filled with fancy-looking tableware. Perfect for pretending you are having afternoon tea."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;Inside, it was filled with fancy-looking tableware. Perfect for pretending you are having afternoon tea.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/25.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/25.JPG"
alt="While we were exploring other ships, we happened to catch a pirate ship setting sail."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/25.JPG"
data-gallery-alt="While we were exploring other ships, we happened to catch a pirate ship setting sail."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;While we were exploring other ships, we happened to catch a pirate ship setting sail.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/26.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/26.JPG"
alt="And then the battle began. They started firing cannons at each other. (Into the water, of course.) Ten out of ten!"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/26.JPG"
data-gallery-alt="And then the battle began. They started firing cannons at each other. (Into the water, of course.) Ten out of ten!"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;And then the battle began. They started firing cannons at each other. (Into the water, of course.) Ten out of ten!&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/27.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/27.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/27.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/28.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/28.JPG"
alt="The captain’s cabin on the Star of India even had a proper bed. This ship once carried many immigrants. One particularly striking record dates back to 1879, when the ship sailed from London to New Zealand with hopeful migrants onboard. A passenger named Stead Ellis wrote that: at the end of the journey, food ran dangerously low. Many passengers survived on rat pie while I stole potatoes because the hunger was unbearable."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/28.JPG"
data-gallery-alt="The captain’s cabin on the Star of India even had a proper bed. This ship once carried many immigrants. One particularly striking record dates back to 1879, when the ship sailed from London to New Zealand with hopeful migrants onboard. A passenger named Stead Ellis wrote that: at the end of the journey, food ran dangerously low. Many passengers survived on rat pie while I stole potatoes because the hunger was unbearable."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The captain’s cabin on the Star of India even had a proper bed. This ship once carried many immigrants. One particularly striking record dates back to 1879, when the ship sailed from London to New Zealand with hopeful migrants onboard. A passenger named Stead Ellis wrote that: at the end of the journey, food ran dangerously low. Many passengers survived on rat pie while I stole potatoes because the hunger was unbearable.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/29.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/29.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/29.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-4f9a592310160af8505048baff6c1d21-4';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;Overall, the experience was excellent. Each ship had plenty of informational displays, and I think it is perfectly enjoyable to explore the museum at your own pace. If you are visiting San Diego, I would highly recommend stopping by.&lt;/p&gt;
&lt;h2 id="tuna-harbor-park-and-seaport-village"&gt;Tuna Harbor Park and Seaport Village&lt;/h2&gt;
&lt;p&gt;We went to Tuna Harbor Park mainly to see the statue Unconditional Surrender, often referred to as the Kissing statue. The area was crowded, with not only young couples but also older couples and families lining up to take photos. There is quite a bit of gossip surrounding the statue, but I will just skip the story.&lt;/p&gt;
&lt;p&gt;Seaport Village, nearby, is filled with souvenir shops. Some of them sell very trendy clothing and accessories. My friend picked up T-shirts that looked great. I was tempted by a baseball cap, but then I realized it only suited my summer self, so I decided to pass.&lt;/p&gt;
&lt;style&gt;
#masonry-4f9a592310160af8505048baff6c1d21-5 {
width: 100%;
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .masonry-container {
width: 100%;
position: relative;
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .glightbox:hover,
#masonry-4f9a592310160af8505048baff6c1d21-5 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-4f9a592310160af8505048baff6c1d21-5 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-4f9a592310160af8505048baff6c1d21-5"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/32.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/32.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/32.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/33.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/33.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/33.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-4f9a592310160af8505048baff6c1d21-5';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="sunset-cliffs"&gt;Sunset Cliffs&lt;/h2&gt;
&lt;p&gt;Sunset Cliffs Natural Park was another highlight of the trip. The sun set at around 4:30 that day, and we rushed to catch it. There were clouds along the horizon, and as we approached, we could see the sun sinking beneath the clouds from the car. It was absolutely stunning.
&lt;style&gt;
#masonry-4f9a592310160af8505048baff6c1d21-6 {
width: 100%;
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .masonry-container {
width: 100%;
position: relative;
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .glightbox:hover,
#masonry-4f9a592310160af8505048baff6c1d21-6 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-4f9a592310160af8505048baff6c1d21-6 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-4f9a592310160af8505048baff6c1d21-6"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/42.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/42.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/42.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/43.JPG"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/43.JPG"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/43.JPG"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/44.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/44.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/44.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/45.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/45.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/45.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/46.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/46.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/46.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/47.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/47.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/47.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/48.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/48.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/48.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/49.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/49.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/49.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/50.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/50.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/50.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/14/51.jpg"
class="glightbox"
data-gallery="masonry-4f9a592310160af8505048baff6c1d21-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/14/51.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/14/51.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-4f9a592310160af8505048baff6c1d21-6';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="final-thoughts"&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Thank you for making it to the end of this very photo-heavy post. &amp;ldquo;Journey to the West&amp;rdquo; will continue with more chapters, including food and some unexpected spots. Stay tuned. :)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/10/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/23/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>I've Recorded a Christmas Hymns Medley (Lead Sheet is available)</title><link>https://alicehsu.blog/posts/2025/12/ive-recorded-a-christmas-hymns-medley-lead-sheet-is-available/</link><pubDate>Tue, 23 Dec 2025 16:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/12/ive-recorded-a-christmas-hymns-medley-lead-sheet-is-available/</guid><description>Christmas is just a few days away, and the following project is something I have wanted to do for a long time. That is, to put together a few of my favorite hymns and arranged them into a Christmas medley.</description><media:thumbnail url="https://alicehsu.blog/images/Post21home.png"/><media:content url="https://alicehsu.blog/images/Post21home.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post21home.png" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post21home.png"
loading="eager"
/&gt;&lt;p&gt;Christmas is just a few days away, and the following project is something I have wanted to do for a long time. That is, to put together a few of my favorite hymns and arranged them into a Christmas medley.&lt;/p&gt;
&lt;p&gt;This time, I chose five hymns, all centered around the birth of Jesus:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;O Come, All Ye Faithful&lt;/li&gt;
&lt;li&gt;The First Noel&lt;/li&gt;
&lt;li&gt;What Child Is This? Who, Laid to Rest?&lt;/li&gt;
&lt;li&gt;Silent Night&lt;/li&gt;
&lt;li&gt;Angels We Have Heard on High&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Some of the hymns were reharmonized in hopes of giving the audience a fresh sound. This time, instead of writing out a full score like I usually do, I made a lead sheet with just the right-hand melody and chord symbols, which allows for more freedom and flexibility in performance.&lt;/p&gt;
&lt;p&gt;If you are curious about what is written on the sheet music, you can download it below, &lt;del&gt;although I did not follow it exactly when I played it.&lt;/del&gt; It is best used as a reference.&lt;/p&gt;
&lt;p&gt;May these hymns bring you a sense of peace and strength.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/exz_3UsK_hk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;script type="text/javascript" src= '/js/pdf-js/build/pdf.js'&gt;&lt;/script&gt;
&lt;style&gt;
#embed-pdf-container {
position: relative;
width: 100%;
height: auto;
min-height: 20vh;
}
.pdf-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
#the-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
.pdf-loadingWrapper {
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 350px;
}
.pdf-loading {
display: inline-block;
width: 50px;
height: 50px;
border: 3px solid #d2d0d0;;
border-radius: 50%;
border-top-color: #383838;
animation: spin 1s ease-in-out infinite;
-webkit-animation: spin 1s ease-in-out infinite;
}
.pdf-paginator {
width: 100%;
justify-content: center;
align-items: center;
}
#overlayText {
word-wrap: break-word;
display: grid;
justify-content: end;
}
#overlayText a {
position: relative;
top: 10px;
right: 4px;
color: #000;
margin: auto;
background-color: #eeeeee;
padding: 0.3em 1em;
border: solid 2px;
border-radius: 12px;
border-color: #00000030;
text-decoration: none;
}
#overlayText svg {
height: clamp(1em, 2vw, 1.4em);
width: clamp(1em, 2vw, 1.4em);
}
.pdf-wrapper {
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.pdf-nav {
position: absolute;
top: 100%;
height: 100%;
transform: translateY(-100%);
background: rgba(180, 180, 180, 0.2);
border: none;
font-size: 2rem;
padding: 0em 0.2em;
cursor: pointer;
transition: background 0.2s ease;
}
.pdf-nav:disabled {
opacity: 0.1;
cursor: default;
}
.pdf-nav:hover {
background: rgba(180, 180, 180, 0.7);
}
.pdf-prev {
left: 0em;
}
.pdf-next {
right: 0em;
}
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
&lt;/style&gt;&lt;div class="embed-pdf-container" id="embed-pdf-container-83c188d1"&gt;
&lt;div class="pdf-loadingWrapper" id="pdf-loadingWrapper-83c188d1"&gt;
&lt;div class="pdf-loading" id="pdf-loading-83c188d1"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pdf-wrapper"&gt;
&lt;button class="pdf-nav pdf-prev" id="pdf-prev-83c188d1" aria-label="Previous page"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" fill="black"&gt;
&lt;path d="M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"/&gt;
&lt;/svg&gt;
&lt;/button&gt;
&lt;canvas class="pdf-canvas" id="pdf-canvas-83c188d1"&gt;&lt;/canvas&gt;
&lt;button class="pdf-nav pdf-next" id="pdf-next-83c188d1" aria-label="Next page"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" fill="black"&gt;
&lt;path d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6z"/&gt;
&lt;/svg&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pdf-paginator" id="pdf-paginator-83c188d1"&gt;
&lt;span&gt;
Page &lt;span class="pdf-pagenum" id="pdf-pagenum-83c188d1"&gt;&lt;/span&gt; / &lt;span class="pdf-pagecount" id="pdf-pagecount-83c188d1"&gt;&lt;/span&gt;
&lt;a href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf" aria-label="Download" download&gt;[Download]
&lt;/a&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;noscript&gt;
View the PDF file &lt;a class="pdf-source" id="pdf-source-noscript-83c188d1" href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf"&gt;here&lt;/a&gt;.
&lt;/noscript&gt;
&lt;script type="text/javascript"&gt;
(function(){
var url = '\/pdf\/Christmas Hymns Medley.pdf';
var hidePaginator = "" === "true";
var hideLoader = "" === "true";
var selectedPageNum = parseInt("") || 1;
var pdfjsLib = window['pdfjs-dist/build/pdf'];
if (pdfjsLib.GlobalWorkerOptions.workerSrc == '')
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@3.4.120/build/pdf.worker.min.js';
var pdfDoc = null,
pageNum = selectedPageNum,
pageRendering = false,
pageNumPending = null,
scale = 3,
canvas = document.getElementById('pdf-canvas-83c188d1'),
ctx = canvas.getContext('2d'),
paginator = document.getElementById("pdf-paginator-83c188d1"),
loadingWrapper = document.getElementById('pdf-loadingWrapper-83c188d1');
showPaginator();
showLoader();
function renderPage(num) {
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
showContent();
updateButtons();
if (pageNumPending !== null) {
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
document.getElementById('pdf-pagenum-83c188d1').textContent = num;
}
function showContent() {
loadingWrapper.style.display = 'none';
canvas.style.display = 'block';
}
function showLoader() {
if(hideLoader) return
loadingWrapper.style.display = 'flex';
canvas.style.display = 'none';
}
function showPaginator() {
if(hidePaginator) return
paginator.style.display = 'block';
}
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
function updateButtons() {
var prevBtn = document.getElementById('pdf-prev-83c188d1');
var nextBtn = document.getElementById('pdf-next-83c188d1');
prevBtn.disabled = (pageNum &lt;= 1);
nextBtn.disabled = (pageNum &gt;= pdfDoc.numPages);
}
function onPrevPage() {
if (pageNum &lt;= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('pdf-prev-83c188d1').addEventListener('click', onPrevPage);
function onNextPage() {
if (pageNum &gt;= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('pdf-next-83c188d1').addEventListener('click', onNextPage);
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
var numPages = pdfDoc.numPages;
document.getElementById('pdf-pagecount-83c188d1').textContent = numPages;
if(pageNum &gt; numPages) {
pageNum = numPages
}
renderPage(pageNum);
});
})();
&lt;/script&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/22/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/23/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Christmas GIF paintings</title><link>https://alicehsu.blog/posts/2025/12/christmas-gif-paintings/</link><pubDate>Tue, 23 Dec 2025 15:30:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/12/christmas-gif-paintings/</guid><description>Merry Christmas!</description><media:thumbnail url="https://alicehsu.blog/images/Snowman.gif"/><media:content url="https://alicehsu.blog/images/Snowman.gif" medium="image"/><enclosure url="https://alicehsu.blog/images/Snowman.gif" type="image/jpeg"/><content:encoded>&lt;p&gt;Inspired by &lt;a href="https://trashposts.com/blog/christmas-theme-and-guestbook/"target="_blank"
&gt;Trashposts.com&lt;/a&gt;, I also drew GIF paintings to celebrate Christmas. Merry Christmas!!&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Snowman.gif"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Snowman.gif"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/ChristmasTree.gif"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/ChristmasTree.gif"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post19home.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post19home.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/19/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/23/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Post Vacation Syndrome</title><link>https://alicehsu.blog/posts/2025/12/post-vacation-syndrome/</link><pubDate>Tue, 23 Dec 2025 15:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/12/post-vacation-syndrome/</guid><description>As the name suggests, Post-Vacation Syndrome (PVS) is the collection of behaviors and feelings people often experience after coming back from a trip.</description><media:thumbnail url="https://alicehsu.blog/images/Post16home.jpg"/><media:content url="https://alicehsu.blog/images/Post16home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post16home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post16home.jpg"
loading="eager"
/&gt;&lt;p&gt;As the name suggests, Post-Vacation Syndrome (PVS) is the collection of behaviors and feelings people often experience after coming back from a trip.&lt;/p&gt;
&lt;p&gt;Common symptoms include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scrolling through your vacation photos every single day.&lt;/li&gt;
&lt;li&gt;Walking tens of thousands of steps while traveling, then feeling completely lazy at home.&lt;/li&gt;
&lt;li&gt;Out traveling, I felt like a rock. At home, I melted into a puddle.&lt;/li&gt;
&lt;li&gt;Constantly craving the food you had while traveling.&lt;/li&gt;
&lt;li&gt;Losing motivation to work.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;How to cope:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Think of three things you actually enjoy about being at home.&lt;/li&gt;
&lt;li&gt;Take a good look at your wallet.&lt;/li&gt;
&lt;li&gt;&lt;del&gt;Plan your next trip.&lt;/del&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 12/14/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/23/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Portfolio</title><link>https://alicehsu.blog/portfolio/</link><pubDate>Mon, 22 Dec 2025 16:30:00 -0600</pubDate><guid>https://alicehsu.blog/portfolio/</guid><description>&lt;p&gt;Due to a hand injury, I’ll be taking an extended break and won’t be posting updates for now. (01/24/26)&lt;/p&gt;
&lt;h3 id="original-composition"&gt;Original Composition&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Published Date&lt;/th&gt;
 &lt;th&gt;Title&lt;/th&gt;
 &lt;th&gt;Performance&lt;/th&gt;
 &lt;th&gt;Score&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;10-13-2025&lt;/td&gt;
 &lt;td&gt;Bell (Stage E. Piano)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/3qoF04GK2zI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-stage-e-piano-original-piano-composition"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10-13-2025&lt;/td&gt;
 &lt;td&gt;Bell&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/Z4o3uY5C2EI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-original-piano-composition"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;08-27-2025&lt;/td&gt;
 &lt;td&gt;Ruins&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/RsftgIKy3LM"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/USjfFvWS2FYXasseaL"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Ruins.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;07-01-2025&lt;/td&gt;
 &lt;td&gt;Bitter Sweet&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/iFkaTUgE1PE"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/EUAzsPntLhmjrm2gCZ"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bitter%20Sweet.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;06-18-2025&lt;/td&gt;
 &lt;td&gt;Farewell&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/Rx4R5YYzuEg"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/KXcNYTUocrhkzbLj8z"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Farewell.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="piano-covers"&gt;Piano Covers&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Published Date&lt;/th&gt;
 &lt;th&gt;Original Creator&lt;/th&gt;
 &lt;th&gt;Title&lt;/th&gt;
 &lt;th&gt;Performance&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;12-20-2025&lt;/td&gt;
 &lt;td&gt;John F. Wade / From William Sandy&amp;rsquo;s Christmas Carols, 1833 / John Stainer / Franz Grüber / French Carol&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf"target="_blank"
&gt;Christmas Hymns Medley&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://www.youtube.com/watch?v=exz_3UsK_hk&amp;amp;t=4s"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/WAJOmUA4crqsWt0dp8"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;11-25-2025&lt;/td&gt;
 &lt;td&gt;Fujii Kaze&lt;/td&gt;
 &lt;td&gt;Kirari&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://www.youtube.com/watch?v=rIAMN3ULdX8"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/9POR1wvqA5q98GWS54"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;09-16-2025&lt;/td&gt;
 &lt;td&gt;Five for Fighting&lt;/td&gt;
 &lt;td&gt;100 Years&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/a4PW3n9SA8A"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/Yfra4kwTA3Di3PShph"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;08-09-2025&lt;/td&gt;
 &lt;td&gt;Sodagreen&lt;/td&gt;
 &lt;td&gt;Daylight (2 Piano Covers)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/sNEwXQAIC3A"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/jZC8DiKaGManSVUAcP"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;06-23-2025&lt;/td&gt;
 &lt;td&gt;Sodagreen&lt;/td&gt;
 &lt;td&gt;Once in a Lifetime&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/FShd3-4umQI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/Gx5LJzRlXnUtvylvmr"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;06-08-2025&lt;/td&gt;
 &lt;td&gt;Sodagreen&lt;/td&gt;
 &lt;td&gt;What&amp;rsquo;s the Trouble on Your Mind?&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/JpLZL5CxitI"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/bI4zUMFiUCqAYPNEDc"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="classical-music"&gt;Classical Music&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Published Date&lt;/th&gt;
 &lt;th&gt;Composer&lt;/th&gt;
 &lt;th&gt;Title&lt;/th&gt;
 &lt;th&gt;Performance&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;11-05-2025&lt;/td&gt;
 &lt;td&gt;Francis Poulenc&lt;/td&gt;
 &lt;td&gt;Improvisation No. 7&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://www.youtube.com/watch?v=vE9QNQYPN2Q"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://soundcloud.com/alice_h_hsu/francis-poulenc-improvisation-no-7-alice-hsu?si=6f79b944c30c4c28a313056290bb51f5&amp;amp;utm_source=clipboard&amp;amp;utm_medium=text&amp;amp;utm_campaign=social_sharing"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10-02-2025&lt;/td&gt;
 &lt;td&gt;Dmitri Shostakovich&lt;/td&gt;
 &lt;td&gt;Romance (from Dances of the Dolls)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/1hjkNCefsao"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/V3xWwHzUic6wuWIH0a"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;09-26-2025&lt;/td&gt;
 &lt;td&gt;Dmitri Shostakovich&lt;/td&gt;
 &lt;td&gt;Lyrical Waltz (from Dances of the Dolls)&lt;/td&gt;
 &lt;td&gt;&lt;a
 href="https://youtu.be/PujmjvfiSsE"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;

&lt;/svg&gt;&lt;/a&gt; / &lt;a
 href="https://on.soundcloud.com/VXtjg68HfjPNB3lIGJ"
 class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
 &lt;svg class="h-6 w-6"
 fill="none"
 stroke="currentColor"
 viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;

 &lt;defs
 id="defs1" /&gt;
 &lt;sodipodi:namedview
 id="namedview1"
 pagecolor="#ffffff"
 bordercolor="#000000"
 borderopacity="0.25"
 inkscape:showpageshadow="2"
 inkscape:pageopacity="0.0"
 inkscape:pagecheckerboard="0"
 inkscape:deskcolor="#d1d1d1"
 inkscape:zoom="10.630554"
 inkscape:cx="14.721716"
 inkscape:cy="10.159395"
 inkscape:window-width="896"
 inkscape:window-height="729"
 inkscape:window-x="374"
 inkscape:window-y="38"
 inkscape:window-maximized="0"
 inkscape:current-layer="svg1" /&gt;
 &lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
 &lt;path
 d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
 id="path1"
 style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;

&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description><content:encoded>&lt;p&gt;Due to a hand injury, I’ll be taking an extended break and won’t be posting updates for now. (01/24/26)&lt;/p&gt;
&lt;h3 id="original-composition"&gt;Original Composition&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Published Date&lt;/th&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;th&gt;Performance&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10-13-2025&lt;/td&gt;
&lt;td&gt;Bell (Stage E. Piano)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/3qoF04GK2zI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-stage-e-piano-original-piano-composition"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10-13-2025&lt;/td&gt;
&lt;td&gt;Bell&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/Z4o3uY5C2EI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://soundcloud.com/alice_h_hsu/alice-hsu-bell-original-piano-composition"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bell.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08-27-2025&lt;/td&gt;
&lt;td&gt;Ruins&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/RsftgIKy3LM"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/USjfFvWS2FYXasseaL"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Ruins.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;07-01-2025&lt;/td&gt;
&lt;td&gt;Bitter Sweet&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/iFkaTUgE1PE"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/EUAzsPntLhmjrm2gCZ"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Bitter%20Sweet.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06-18-2025&lt;/td&gt;
&lt;td&gt;Farewell&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/Rx4R5YYzuEg"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/KXcNYTUocrhkzbLj8z"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Farewell.pdf"target="_blank"
&gt;Download&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="piano-covers"&gt;Piano Covers&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Published Date&lt;/th&gt;
&lt;th&gt;Original Creator&lt;/th&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;th&gt;Performance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;12-20-2025&lt;/td&gt;
&lt;td&gt;John F. Wade / From William Sandy&amp;rsquo;s Christmas Carols, 1833 / John Stainer / Franz Grüber / French Carol&lt;/td&gt;
&lt;td&gt;&lt;a href="https://alicehsu.blog/pdf/Christmas%20Hymns%20Medley.pdf"target="_blank"
&gt;Christmas Hymns Medley&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://www.youtube.com/watch?v=exz_3UsK_hk&amp;amp;t=4s"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/WAJOmUA4crqsWt0dp8"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11-25-2025&lt;/td&gt;
&lt;td&gt;Fujii Kaze&lt;/td&gt;
&lt;td&gt;Kirari&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://www.youtube.com/watch?v=rIAMN3ULdX8"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/9POR1wvqA5q98GWS54"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;09-16-2025&lt;/td&gt;
&lt;td&gt;Five for Fighting&lt;/td&gt;
&lt;td&gt;100 Years&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/a4PW3n9SA8A"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/Yfra4kwTA3Di3PShph"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;08-09-2025&lt;/td&gt;
&lt;td&gt;Sodagreen&lt;/td&gt;
&lt;td&gt;Daylight (2 Piano Covers)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/sNEwXQAIC3A"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/jZC8DiKaGManSVUAcP"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06-23-2025&lt;/td&gt;
&lt;td&gt;Sodagreen&lt;/td&gt;
&lt;td&gt;Once in a Lifetime&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/FShd3-4umQI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/Gx5LJzRlXnUtvylvmr"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;06-08-2025&lt;/td&gt;
&lt;td&gt;Sodagreen&lt;/td&gt;
&lt;td&gt;What&amp;rsquo;s the Trouble on Your Mind?&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/JpLZL5CxitI"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/bI4zUMFiUCqAYPNEDc"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="classical-music"&gt;Classical Music&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Published Date&lt;/th&gt;
&lt;th&gt;Composer&lt;/th&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;th&gt;Performance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;11-05-2025&lt;/td&gt;
&lt;td&gt;Francis Poulenc&lt;/td&gt;
&lt;td&gt;Improvisation No. 7&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://www.youtube.com/watch?v=vE9QNQYPN2Q"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://soundcloud.com/alice_h_hsu/francis-poulenc-improvisation-no-7-alice-hsu?si=6f79b944c30c4c28a313056290bb51f5&amp;amp;utm_source=clipboard&amp;amp;utm_medium=text&amp;amp;utm_campaign=social_sharing"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10-02-2025&lt;/td&gt;
&lt;td&gt;Dmitri Shostakovich&lt;/td&gt;
&lt;td&gt;Romance (from Dances of the Dolls)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/1hjkNCefsao"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/V3xWwHzUic6wuWIH0a"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;09-26-2025&lt;/td&gt;
&lt;td&gt;Dmitri Shostakovich&lt;/td&gt;
&lt;td&gt;Lyrical Waltz (from Dances of the Dolls)&lt;/td&gt;
&lt;td&gt;&lt;a
href="https://youtu.be/PujmjvfiSsE"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="YouTube" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;
&lt;path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/&gt;
&lt;/svg&gt;&lt;/a&gt; / &lt;a
href="https://on.soundcloud.com/VXtjg68HfjPNB3lIGJ"
class="inline-flex items-center align-middle mx-1 cursor-pointer transition-opacity hover:opacity-80 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 rounded-sm" aria-label="SoundCloud" target="_blank" rel="noopener noreferrer"&gt;
&lt;svg class="h-6 w-6"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24" aria-hidden="true"&gt;&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;defs
id="defs1" /&gt;
&lt;sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="10.630554"
inkscape:cx="14.721716"
inkscape:cy="10.159395"
inkscape:window-width="896"
inkscape:window-height="729"
inkscape:window-x="374"
inkscape:window-y="38"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /&gt;
&lt;!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--&gt;
&lt;path
d="m 23.831499,14.074453 c -0.04809,0.854592 -0.425446,1.657392 -1.050667,2.238219 -0.625222,0.580827 -1.450218,0.902687 -2.304811,0.891588 h -8.064987 c -0.177578,0 -0.347757,-0.07399 -0.47354,-0.199775 -0.125785,-0.125784 -0.196076,-0.295962 -0.196076,-0.47354 V 7.844436 c -0.0074,-0.147982 0.03329,-0.295963 0.114686,-0.421747 0.08139,-0.125785 0.196074,-0.225672 0.332957,-0.284865 0,0 0.743607,-0.5142349 2.304811,-0.5142349 0.95448,0 1.890464,0.2552679 2.71176,0.7436069 0.64002,0.377352 1.19495,0.8804889 1.631495,1.4835139 0.436545,0.603024 0.739907,1.2874371 0.895287,2.0125471 0.277466,-0.07769 0.566029,-0.118386 0.854593,-0.118386 0.432846,-0.0037 0.861992,0.08139 1.265241,0.247869 0.40325,0.166479 0.758405,0.418048 1.061767,0.728809 0.303361,0.310761 0.540132,0.677015 0.699212,1.083964 0.15908,0.406949 0.23307,0.836095 0.218272,1.26894 z M 10.735144,8.3956669 c 0.0037,-0.03699 0,-0.07399 -0.0111,-0.1072869 -0.0111,-0.033292 -0.02959,-0.066594 -0.05549,-0.096188 -0.0259,-0.029594 -0.05549,-0.048094 -0.08879,-0.062896 -0.06659,-0.029594 -0.14798,-0.029594 -0.214572,0 -0.03329,0.014802 -0.0629,0.03699 -0.08879,0.062896 -0.0259,0.025896 -0.0444,0.059188 -0.05549,0.096188 -0.0111,0.03699 -0.0148,0.070292 -0.0111,0.1072869 -0.2219734,2.9189331 -0.3921523,5.6565891 0,8.5681231 0.0074,0.0629 0.037,0.122085 0.08509,0.166479 0.09619,0.08879 0.251567,0.08879 0.347755,0 0.04809,-0.0444 0.07769,-0.103587 0.08509,-0.166479 0.418049,-2.93743 0.244171,-5.623293 0,-8.5681231 z M 9.1073466,9.4056398 c -0.0074,-0.066594 -0.040698,-0.129484 -0.088792,-0.1738779 -0.048094,-0.044396 -0.1146849,-0.070292 -0.1849769,-0.070292 -0.070292,0 -0.133183,0.025896 -0.1849761,0.070292 -0.051792,0.044396 -0.081386,0.1072859 -0.088792,0.1738779 -0.2922639,2.5119842 -0.2922639,5.0498652 0,7.5618502 0.011104,0.06659 0.044396,0.125784 0.09249,0.166479 0.048094,0.0407 0.1146851,0.06659 0.1775771,0.06659 0.062896,0 0.1294839,-0.0222 0.1775779,-0.06659 0.048094,-0.0444 0.081386,-0.103587 0.09249,-0.166479 0.32556,-2.508286 0.32556,-5.049866 0.00375,-7.5618502 z M 7.4684525,9.1503719 c -0.0074,-0.066594 -0.036995,-0.125784 -0.085089,-0.170179 -0.048094,-0.044396 -0.110986,-0.066594 -0.1775777,-0.066594 -0.066592,0 -0.1294837,0.025896 -0.1775777,0.066594 -0.048094,0.040698 -0.07769,0.103587 -0.085089,0.170179 -0.2478688,2.6636651 -0.3773526,5.1534521 0,7.8097191 0,0.07029 0.025897,0.136883 0.07769,0.184977 0.051794,0.04809 0.1146858,0.07769 0.1849768,0.07769 0.070291,0 0.1368829,-0.0259 0.1849768,-0.07769 0.048094,-0.05179 0.07769,-0.114686 0.07769,-0.184977 0.388451,-2.693262 0.2700658,-5.112758 0.0037,-7.8097191 z m -1.6277957,0.762104 c 0,-0.070292 -0.029596,-0.140582 -0.07769,-0.1923761 -0.048094,-0.051792 -0.118385,-0.077688 -0.1923758,-0.077688 -0.073991,0 -0.1405823,0.029594 -0.1923759,0.077688 -0.051794,0.048094 -0.07769,0.1183851 -0.07769,0.1923761 -0.2996624,2.3418061 -0.2996624,4.7169071 0,7.0587131 0.0074,0.06659 0.036995,0.125785 0.088789,0.170179 0.051794,0.0444 0.1146857,0.07029 0.1775778,0.07029 0.062892,0 0.1294837,-0.0259 0.1775776,-0.07029 0.048094,-0.0444 0.08139,-0.103587 0.088789,-0.170179 0.3255584,-2.341806 0.329258,-4.716907 0.011098,-7.0587131 z M 4.1943635,11.673455 c 0,-0.07029 -0.029596,-0.140582 -0.07769,-0.188676 -0.048094,-0.04809 -0.1183852,-0.07769 -0.1886762,-0.07769 -0.070291,0 -0.1405824,0.02959 -0.1886764,0.07769 -0.048094,0.04809 -0.07769,0.118385 -0.07769,0.188676 -0.3884513,1.820172 -0.2034745,3.473863 0.014798,5.312533 0.011099,0.05919 0.040695,0.114685 0.085089,0.15538 0.044394,0.0407 0.1035871,0.0629 0.1664793,0.0629 0.062892,0 0.118385,-0.0222 0.1664791,-0.0629 0.048094,-0.0407 0.07769,-0.09249 0.085089,-0.15538 0.2441696,-1.864567 0.4291463,-3.481263 0.014798,-5.312533 z M 2.5628683,11.39599 c -0.0074,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.1183851,-0.07029 -0.1849767,-0.07029 -0.066592,0 -0.1331833,0.0259 -0.1849768,0.07029 -0.051793,0.0444 -0.08139,0.107287 -0.088789,0.177578 -0.3440567,1.857167 -0.2293712,3.49236 0.011099,5.345829 0.025897,0.281164 0.5031369,0.277464 0.5327332,0 0.2663664,-1.883065 0.388451,-3.470165 0.011098,-5.345829 z m -1.6499927,0.910086 c -0.007396,-0.06659 -0.040695,-0.129484 -0.088789,-0.177578 -0.048094,-0.04809 -0.11838509,-0.07029 -0.18497679,-0.07029 -0.066592,0 -0.13318329,0.0259 -0.18497678,0.07029 -0.051794,0.0444 -0.085089,0.107286 -0.088789,0.177578 -0.31446047,1.246743 -0.21827258,2.278913 0.022197,3.529356 0.007396,0.0629 0.036995,0.122084 0.085089,0.162779 0.048094,0.0407 0.10728658,0.06659 0.17387818,0.06659 0.066592,0 0.12578419,-0.0222 0.17387819,-0.06659 0.048094,-0.0444 0.07769,-0.09989 0.085089,-0.162779 0.2774652,-1.27634 0.4143479,-2.286312 0.014798,-3.529356 z"
id="path1"
style="stroke-width:0.4;stroke-dasharray:none;stroke-opacity:1" /&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content:encoded></item><item><title>I Made a Piano Cover of Fujii Kaze’s Kirari</title><link>https://alicehsu.blog/posts/2025/12/i-made-a-piano-cover-of-fujii-kazes-kirari/</link><pubDate>Tue, 09 Dec 2025 15:00:00 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/12/i-made-a-piano-cover-of-fujii-kazes-kirari/</guid><description>Writing piano covers feels a bit like translation. You take a song performed by a full band and rewrite it so it makes musical sense on the piano, which gives me a sense of accomplishment.</description><media:thumbnail url="https://alicehsu.blog/images/Post13home.jpg"/><media:content url="https://alicehsu.blog/images/Post13home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post13home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post13home.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post13home.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
(I recently started learning to draw with a drawing app, and this illustration is based on one of Fujii Kaze’s photos. I’m actually very fond of it.)&lt;/p&gt;
&lt;h2 id="how-it-began"&gt;How it began&lt;/h2&gt;
&lt;p&gt;Writing piano covers has been a way for me to train my arranging skills. In other words, it feels a bit like translation. You take a song performed by a full band and rewrite it so it makes musical sense on the piano, which gives me a sense of accomplishment.&lt;/p&gt;
&lt;p&gt;I chose Fujii Kaze&amp;rsquo;s Kirari because I wanted to challenge myself with a style that is not usually in my comfort zone. There are plenty of piano versions of this song on YouTube, yet after listening to several, I realized many of them felt either too busy or a little dull. So I set a goal for myself, namely to create a version that would stay enjoyable throughout, with accompaniment patterns that keep shifting from one section to the next.&lt;/p&gt;
&lt;p&gt;In the end, I realized the arranging was the easy part. The real challenge was the practicing.&lt;/p&gt;
&lt;p&gt;ヽ(；▽；)ノ&lt;/p&gt;
&lt;p&gt;A while ago, I injured my hand during practice. To be specific, the injury came from switching from piano to an older keyboard and accidentally using the wrong muscles, which eventually caused strain and pain. Because of that, practicing this quite demanding piece became a slow and interrupted process. Still, I finally managed to finish recording it recently.
(Big thanks to physical therapists 啾 C and SunGuts for all the hand-stretching videos.) There are still a few imperfect spots, but overall I feel satisfied with how it turned out.&lt;/p&gt;
&lt;h2 id="how-i-arrange-a-piano-cover"&gt;How I arrange a piano cover&lt;/h2&gt;
&lt;p&gt;Here is the general workflow I follow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Identify the vocal melody quickly and map it to the right hand.&lt;/li&gt;
&lt;li&gt;Slow the track down to 0.5x to fix any rhythmic parts I misheard.&lt;/li&gt;
&lt;li&gt;Write out all the chords.&lt;/li&gt;
&lt;li&gt;Turn those chords into accompaniment patterns for the left hand.&lt;/li&gt;
&lt;li&gt;Practice the draft version and revise anything that feels unnatural for me, and repeat that cycle as needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One major advantage of writing my own covers is the freedom to revise anything at will. That is to say, if something feels awkward or inefficient for the hands, I can remove it immediately. As someone who grew up playing classical music, being able to rewrite the score feels a little like bending the rules lol.&lt;/p&gt;
&lt;h3 id="tool-one"&gt;Tool One&lt;/h3&gt;
&lt;p&gt;I used a few tools during the arranging process. The first one was an online music separation tool that splits vocals from the instrumental track. This helped a lot in the second, third, and fourth stages of the process. When listening only to the vocals, I can focus entirely on pitch and rhythm without the band getting in the way. When listening only to the instrumentals, I can analyze the harmony and the band arrangement much more clearly. (Of course, this is only a rough guideline, since identifying the chords still requires taking the vocals into account.)&lt;/p&gt;
&lt;h3 id="tool-two"&gt;Tool Two&lt;/h3&gt;
&lt;p&gt;The second tool was &lt;a href="https://nicechord.com/tuner/"target="_blank"
&gt;Wiwi’s pitch detector&lt;/a&gt;. When the rhythm becomes fast and I cannot quite tell which note Fujii is singing, this tool becomes extremely helpful. I slow the song to 0.5x, turn on the pitch detector, and check the exact note. Since the vocals are usually the loudest in the mix, the tool works well for this purpose.&lt;/p&gt;
&lt;h2 id="the-most-enjoyable-stage"&gt;The most enjoyable stage&lt;/h2&gt;
&lt;p&gt;Stage four is where creativity can shine, and for me, it is the most enjoyable part of the entire process. Once the main melody and chords have been faithfully “translated,” what remains is the part that is &amp;ldquo;untranslatable.&amp;rdquo; That is to say, it’s a blend of timbres that only a full band can create, and that a piano simply cannot reproduce it in the same way. This is the exact stage where I can write freely and follow whatever musical idea feels right.&lt;/p&gt;
&lt;h3 id="section-one"&gt;Section One&lt;/h3&gt;
&lt;p&gt;One passage I feel proud of begins at measure 66:&lt;/p&gt;
&lt;p&gt;&lt;div class="w-10"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rIAMN3ULdX8?autoplay=0&amp;amp;controls=1&amp;amp;end=140&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=133" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;The original arrangement here is actually quite complex. I eventually decided not to recreate the intricate harmonies and instead expressed the complexity through the rhythm. It is not easy to play. I later found that keeping my wrist loose increases accuracy.&lt;/p&gt;
&lt;h3 id="section-two"&gt;Section Two&lt;/h3&gt;
&lt;p&gt;Another section I really enjoy begins at measure 33, which is the start of the chorus.&lt;/p&gt;
&lt;p&gt;&lt;div class="w-10"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rIAMN3ULdX8?autoplay=0&amp;amp;controls=1&amp;amp;end=86&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=67" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/13/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/13/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Since the chorus is fairly long, I wanted the accompaniment to stay engaging. For example, the first beat originally moves upward in octaves, yet after four measures I switch it to repeated notes instead. Another change is that the second beat originally used sixteenth notes, while later I changed it to dotted eighth notes. I like how these subtle variations keep the music alive.&lt;/p&gt;
&lt;h2 id="final-thoughts"&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;There are spots where my recorded performance is not identical to what I wrote, although perhaps this is the privilege of being both the arranger and the performer, which means I can change whatever I want. Next time, I plan to challenge myself with a project in a completely different format. I hope you will look forward to it :)&lt;/p&gt;
&lt;p&gt;Here is the full version:
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rIAMN3ULdX8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Where is the Package?</title><link>https://alicehsu.blog/posts/2025/12/where-is-the-package/</link><pubDate>Wed, 03 Dec 2025 22:50:15 -0800</pubDate><guid>https://alicehsu.blog/posts/2025/12/where-is-the-package/</guid><description>The page showed a FedEx tracking link so I could check where the package was.</description><media:thumbnail url="https://alicehsu.blog/images/Post12home.jpg"/><media:content url="https://alicehsu.blog/images/Post12home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post12home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post12home.jpg"
loading="eager"
/&gt;&lt;p&gt;Recently, I bought something online. After placing the order, the page showed a FedEx tracking link so I could check where the package was.&lt;/p&gt;
&lt;p&gt;I was pretty eager to receive it, so I kept opening the link from time to time, checking again and again to see where it was.&lt;/p&gt;
&lt;p&gt;One day, it suddenly dawned on me: checking more often is not going to make the driver go faster. The item does not need refrigeration, and I do not need to time it perfectly just to put it in the &lt;a href="https://alicehsu.blog/posts/2025/11/%EF%B8%8F-utopian-smart-fridge/"&gt;fridge&lt;/a&gt;, so why am I still clicking that link? It will arrive when it arrives, and if it has not arrived, then it simply has not.&lt;/p&gt;
&lt;p&gt;I also realized that worrying about things I cannot control is just like clicking on that tracking link. It tricks the brain into feeling as if we have some control over the progress, when in reality, all we are doing is refreshing a page. We are not the ones driving, we are not the ones stepping on the gas, and we don&amp;rsquo;t even tell the driver to hurry.&lt;/p&gt;
&lt;p&gt;After resisting the urge to check several times, I couldn’t help myself and checked the link again while writing this piece. Well, the package has made it from Texas to Chicago. With all the Thanksgiving holiday shipments, everything moves so slowly.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 11/26/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/3/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Meet Francis Poulenc</title><link>https://alicehsu.blog/posts/2025/12/meet-francis-poulenc/</link><pubDate>Wed, 03 Dec 2025 22:50:10 -0800</pubDate><guid>https://alicehsu.blog/posts/2025/12/meet-francis-poulenc/</guid><description>What kind of person writes such music? What were his thoughts about music? Any composers he likes or dislikes?</description><media:thumbnail url="https://alicehsu.blog/images/Post/11/2.jpg"/><media:content url="https://alicehsu.blog/images/Post/11/2.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/11/2.jpg" type="image/jpeg"/><content:encoded>&lt;h2 id="encountering-poulenc"&gt;Encountering Poulenc&lt;/h2&gt;
&lt;p&gt;Francis Poulenc (1899 - 1963) was a French composer and pianist, and one of the members of Les Six.&lt;/p&gt;
&lt;p&gt;I first came to know Poulenc through his &lt;a href="https://www.youtube.com/watch?v=vE9QNQYPN2Q"target="_blank"
&gt;Improvisation No. 7&lt;/a&gt;. It was one of the required pieces for a piano exam, and only then did I realize that this figure existed in the world of classical music. Upon first hearing it, I was deeply drawn to its rich harmonies. The piece begins in a simple and seemingly harmless C major. Then, as mysterious and ever-changing chords appear one after another, it becomes clear that it is far from simple. My favorite part is the heartbreaking opening of section B, followed by the majestic layers of octaves, and the return to C major after the climax has faded. Honestly, there are too many parts I love to list them all.&lt;/p&gt;
&lt;p&gt;What kind of person writes such music? What were his thoughts about music? Any composers he likes or dislikes? My curiosity pushed me to search for more information, and here is some of what I found.&lt;/p&gt;
&lt;h2 id="about-poulenc"&gt;About Poulenc&lt;/h2&gt;
&lt;style&gt;
#masonry-83712095efc217fce17d9c7043c6fb2d-1 {
width: 100%;
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 5px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .masonry-item img {
width: 90%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .glightbox:hover,
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-83712095efc217fce17d9c7043c6fb2d-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-83712095efc217fce17d9c7043c6fb2d-1"
data-columns="2"
data-gutter="5"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/11/1.jpg"
class="glightbox"
data-gallery="masonry-83712095efc217fce17d9c7043c6fb2d-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/11/1.jpg"
alt="The photo was taken in 1946 when Poulenc is around 47 years old. This photo is in public domain and is from the University of Melbourne Archives. Link: https://archives.library.unimelb.edu.au/nodes/view/431648"
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/11/1.jpg"
data-gallery-alt="The photo was taken in 1946 when Poulenc is around 47 years old. This photo is in public domain and is from the University of Melbourne Archives. Link: https://archives.library.unimelb.edu.au/nodes/view/431648"
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The photo was taken in 1946 when Poulenc is around 47 years old. This photo is in public domain and is from the University of Melbourne Archives. Link: https://archives.library.unimelb.edu.au/nodes/view/431648&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-83712095efc217fce17d9c7043c6fb2d-1';
const config = {
columns: 2 ,
gutter: 5 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;p&gt;Poulenc was born to a wealthy middle-class family in Paris in 1899. His father, Emile Poulenc, ran a pharmaceutical company, and his mother, Jenny (née Royer), came from a family of artistic craftsmen. Poulenc began learning piano at the age of five under his mother’s guidance, and shortly afterward she found other teachers for him. The teacher who influenced him the most was Ricardo Viñes, with whom he studied from age fifteen to eighteen. Viñes not only influenced Poulenc as a pianist but also became a spiritual mentor in his life. The second influential teacher was Charles Koechlin, whom Poulenc sought at the age of twenty-two, believing that his compositions relied too much on intuition rather than knowledge and hoping to strengthen what he lacked. Poulenc originally intended to attend a music conservatory, but his father insisted that he should first receive a conventional classical education at Lycée Condorcet before continuing music studies, so he followed. Unfortunately, both of his parents died before he turned eighteen, and later the outbreak of the World War I disrupted his plans. Yet none of that prevented his musical path. At eighteen, his &lt;a href="https://www.youtube.com/watch?v=brC3qrv3Yv0"target="_blank"
&gt;Rhapsodie Nègre (FP 3)&lt;/a&gt; premiered in Paris, earning him the admiration of Igor Stravinsky, and the work was soon published by Chester in London.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Reading Poulenc’s biography, I found myself resonating with some parts. When I was in junior and senior high school, I wanted to pursue music professionally, but my family objected. Later in college, I studied literature and originally planned to pursue a graduate degree in music afterward, but life unfolded differently. Around the age of twenty, believing that I lacked professional training, I also sought a teacher, only to later realize the teacher was not the right fit, which is another story. Looking back now, there is still a slight sense of regret, though less than before. Had I received formal conservatory training, I might have spent years studying subjects I was not passionate about, such as opera. I also might have missed the blessings that came from studying literature. Perhaps Poulenc’s freedom as a composer also had something to do with not going through a traditional conservatory system.&lt;/p&gt;
&lt;div
class="alert alert-note my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-note) 10%, transparent);
border-left-color: var(--color-note);
--hover-bg: color-mix(in srgb, var(--color-note) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-note) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-0')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-0-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-0');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-0-title"
class="m-0 font-semibold text-foreground/90"&gt;
🗣️ Fun Fact 1: Was he an extrovert or an introvert?
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-0-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-0-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;Poulenc was very likely a strong extrovert, and the kind who could easily become the center of attention with entertaining stories. Many friends recalled that he was an excellent storyteller. If a gathering needed someone to lift the atmosphere, Poulenc could keep the stories flowing without end.🗣️🗣️🗣️ &lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-tip my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-tip) 10%, transparent);
border-left-color: var(--color-tip);
--hover-bg: color-mix(in srgb, var(--color-tip) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-tip) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
class="
cursor-pointer
flex items-center justify-between px-6 py-6"
onclick="toggleAlert('alert-1')" role="button" tabindex="0"
aria-expanded="false" aria-controls="alert-1-content"
onkeydown="if(event.key==='Enter'||event.key===' '){toggleAlert('alert-1');event.preventDefault();}"
&gt;
&lt;div class="flex items-center gap-3"&gt;
&lt;h4
id="alert-1-title"
class="m-0 font-semibold text-foreground/90"&gt;
📻 Fun Fact 2: A person who kept up with the times.
&lt;/h4&gt;
&lt;/div&gt;
&lt;div
class="flex-shrink-0 transition-transform duration-200"
id="alert-1-chevron"&gt;
&lt;svg class="h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div
id="alert-1-content"
class="alert-content
hidden
px-6 pb-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;Poulenc kept surprisingly up to date with new technologies. When the gramophone was invented, he immediately used it to record his music. His earliest recordings date back to 1928. In his forties and fifties, seeing the growing influence of radio, he even hosted programs on French National Radio.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; If he lived today, I imagine he might start a podcast to talk about music. 🎙️&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;h2 id="poulencs-piano-works"&gt;Poulenc’s Piano Works&lt;/h2&gt;
&lt;h3 id="how-not-to-play-poulenc"&gt;How Not to Play Poulenc?&lt;/h3&gt;
&lt;p&gt;To understand how a piece should be played, aside from reading the score carefully, it is often helpful to hear what the composer does not want. In a conversation with Claude Rostand, Poulenc mentioned four things pianists should never do when performing his works: &lt;strong&gt;no rubato, do not hesitate to use the pedal, do not lengthen or shorten note values, and do not overarticulate repeated chords or arpeggios.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Poulenc greatly disliked rubato. Once a tempo was set, he preferred that it remain consistent unless a tempo change was specifically indicated. He could tolerate wrong notes more easily than altered durations. What mattered most to him was pedaling. Influenced by Viñes, Poulenc believed that the pedal could never be used too much. Even when Viñes used extensive pedaling, his sound remained clear, which impressed Poulenc deeply. When hearing performances with insufficient pedaling, Poulenc said he felt like shouting, &lt;strong&gt;“Put some butter in the sauce! What’s this diet you’re on!”&lt;/strong&gt;&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; (It does sound delicious. Would listening to Poulenc make one gain weight?😆)&lt;/p&gt;
&lt;p&gt;I was surprised at first by this idea. Thinking more about it, I realized that my surprise came not from Poulenc’s music, but from my own assumption that less pedal is better. Perhaps it comes from fear that too much pedal will make the sound muddy. After reading his perspective on pedaling, I agreed that if the pedal is used well, it can enrich color while keeping clarity. It&amp;rsquo;s a good idea to give it a try.&lt;/p&gt;
&lt;h3 id="how-he-evaluate-his-own-piano-music"&gt;How he evaluate his own piano music&lt;/h3&gt;
&lt;p&gt;Poulenc had strong opinions on how his works should be interpreted and was equally candid about judging his own music. I personally enjoy how straightforward he was. He said he could “tolerate” &lt;a href="https://www.youtube.com/watch?v=R7Z_3EA9pyY"target="_blank"
&gt;Mouvements perpétuels (FP 14)&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=zRvDH9OTyXY"target="_blank"
&gt;the Suite in C (FP 19)&lt;/a&gt;, and &lt;a href="https://www.youtube.com/watch?v=f1toEsWfF6Q"target="_blank"
&gt;Trois Pièces (FP 5)&lt;/a&gt;. He deeply loved his &lt;a href="https://www.youtube.com/watch?v=_4WI6B8rY4o"target="_blank"
&gt;Improvisations&lt;/a&gt; and the &lt;a href="https://www.youtube.com/watch?v=OgaqeMzEjS8"target="_blank"
&gt;Intermezzo in A flat (FP 118)&lt;/a&gt;. He completely disliked &lt;a href="https://www.youtube.com/watch?v=XQXDv2hpTG0"target="_blank"
&gt;Napoli (FP 40)&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=Fj165Gsfoeg"target="_blank"
&gt;Soirées de Nazelles (FP 84)&lt;/a&gt;, and as for the rest, he felt little interest.&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;He never explained in detail why. Out of curiosity, I listened to all the pieces he mentioned. Strangely, Mouvements perpétuels, which he only tolerated, is one I could loop repeatedly. Why did he like it less? Perhaps a creator’s taste does not always match that of the audience. Maybe this distance is something every artist must maintain. One cannot rely solely on public taste.&lt;/p&gt;
&lt;h2 id="composers-poulenc-liked-and-disliked"&gt;Composers Poulenc Liked and Disliked&lt;/h2&gt;
&lt;p&gt;In another interview, Rostand asked Poulenc to name six composers he loved. After much hesitation, he listed &lt;strong&gt;Debussy, Stravinsky, Satie, Falla, Ravel, and Bartók&lt;/strong&gt;, and regretted not having room for Prokofiev.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; To Poulenc, Debussy awakened his musical sensibilities. Stravinsky, however, shaped his compositional language, and traces of Stravinsky are evident throughout Poulenc’s music.&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt; Ravel influenced his harmony, especially in Les &lt;a href="https://www.youtube.com/watch?v=_rtZF5mAj0w"target="_blank"
&gt;Animaux modèles (FP 111)&lt;/a&gt;. As for Satie, he shaped his sense of musical beauty.&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;As for composers he disliked, Poulenc answered with humor and creativity. He did not like Brahms&amp;rsquo; pieces, saying that Brahms had “Schumann’s faults without his genius.&amp;quot;&lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt; He also said he was allergic to Fauré’s music throughout his entire life.&lt;sup id="fnref:10"&gt;&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref"&gt;10&lt;/a&gt;&lt;/sup&gt; Nonetheless, he acknowledged their strengths. Brahms, in his view, was still a genius, and he admired Fauré’s songs. What&amp;rsquo;s worth noting is that his criticisms were not reckless hostility. Poulenc had studied these composers thoroughly from a young age.&lt;sup id="fnref:11"&gt;&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref"&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;His interviews are delightful to read. Poulenc was witty, vivid, and full of imaginative comparisons. I appreciate how honest he was about his taste. Perhaps honesty is essential for artists to resist blindly following others. Even if Brahms and Fauré are widely beloved, what matters is whether Poulenc himself felt connected to them. Only by recognizing one’s own likes and dislikes can one find and walk their own paths.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There is far more to explore about Poulenc than what is written here. He cooperated with Pierre Bernac and wrote over ninety mélodies. He also composed many other types of works. (These classical masters were truly prolific.) Since instrumental music is my personal favorite, and within it, piano music most of all, this article focuses on his piano works. Maybe someday I&amp;rsquo;ll continue writing about his other compositions.&lt;/p&gt;
&lt;p&gt;To close, I would like to share a recent performance of mine, playing the piece through which I first encountered Poulenc, Improvisation No. 7. I hope this is, in some small way, in keeping with Poulenc’s taste.
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/vE9QNQYPN2Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Bibliography&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chimènes, Myriam and Roger Nichols. “Poulenc, Francis.” &lt;em&gt;Grove Music Online&lt;/em&gt;. Oxford University Press, 2001. &lt;a href="https://doi.org/10.1093/gmo/9781561592630.article.22202"target="_blank"
&gt;https://doi.org/10.1093/gmo/9781561592630.article.22202&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Editions de l&amp;rsquo;Oiseau-Lyre. “Francis Poulenc in a Suit, Sitting at a Piano with His Arms Outstretched.” 1946. University of Melbourne Archives. UMA-ITE-2016003500406. Accessed November 25, 2025. &lt;a href="https://archives.library.unimelb.edu.au/nodes/view/431648"target="_blank"
&gt;https://archives.library.unimelb.edu.au/nodes/view/431648&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Poulenc, Francis. “Musical Likes and Dislikes.” Interview by Claude Rostand. In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon, translated by Roger Nichols, 273–278. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;p&gt;Poulenc, Francis. “My Teachers and My Friends.” In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon and translated by Roger Nichols, 97–103. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;p&gt;Poulenc, Francis. “Poulenc at the Piano: Advice and Favourites.” In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon, translated by Roger Nichols, 191–195. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;p&gt;Southon, Nicolas. “Introduction.” In &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, edited by Nicolas Southon, translated by Roger Nichols, 1–14. Burlington, VT: Ashgate Publishing, 2014.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 11/24/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/3/25.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Myriam Chimènes and Roger Nichols, “Poulenc, Francis,” &lt;em&gt;Grove Music Online&lt;/em&gt; (Oxford University Press, 2001), 1–2.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Nicolas Southon, “Introduction,” in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 9.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Chimènes and Nichols, “Poulenc, Francis,” 2–3.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Francis Poulenc, “Poulenc at the Piano: Advice and Favourites,” in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 193.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;Poulenc, “Poulenc at the Piano: Advice and Favourites,” 194.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;Francis Poulenc, “Musical Likes and Dislikes,” interview by Claude Rostand, in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 274.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:7"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 273.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:8"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 273-274.&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:9"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 275.&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:10"&gt;
&lt;p&gt;Poulenc, “Musical Likes and Dislikes,” 276.&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:11"&gt;
&lt;p&gt;Francis Poulenc, “My Teachers and My Friends,” in &lt;em&gt;Francis Poulenc: Articles and Interviews: Notes from the Heart&lt;/em&gt;, ed. Nicolas Southon, trans. Roger Nichols (Burlington, VT: Ashgate Publishing, 2014), 96.&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>Hayato Sumino’s (Cateen's) Piano Recital</title><link>https://alicehsu.blog/posts/2025/12/hayato-suminos-cateens-piano-recital/</link><pubDate>Wed, 03 Dec 2025 22:50:05 -0800</pubDate><guid>https://alicehsu.blog/posts/2025/12/hayato-suminos-cateens-piano-recital/</guid><description>Yesterday afternoon, I went to Chicago to hear Hayato Sumino&amp;rsquo;s piano recital.</description><media:thumbnail url="https://alicehsu.blog/images/Post/10/3.jpg"/><media:content url="https://alicehsu.blog/images/Post/10/3.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/10/3.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post/10/3.jpg"
loading="eager"
/&gt;&lt;p&gt;Yesterday afternoon, I went to Chicago to hear &lt;a href="https://hayatosum.com/biography"target="_blank"
&gt;Hayato Sumino&amp;rsquo;s&lt;/a&gt; (also known as Cateen) piano recital. Walking out of the hall afterward, I felt so contented and moved!&lt;/p&gt;
&lt;p&gt;Cateen is a pianist I have followed for a long time. I especially love his own compositions, and &lt;a href="https://www.youtube.com/watch?v=VmKin2xhKNk"target="_blank"
&gt;Big Cat Waltz&lt;/a&gt; is just unbelievably adorable. One day in early August, while browsing his YouTube channel, I noticed in the description box that his next performance would be in Chicago. A same-day round trip by car would be no problem, and I even found great seats at a low price. Why hesitate? I pulled Sam along and bought the tickets immediately.&lt;/p&gt;
&lt;p&gt;From early August to yesterday, whenever life felt ordinary, I would glance at the calendar and feel a small spark of anticipation. The thought that we would be attending Cateen’s recital in November added flavor to everyday life. When I finally stepped into Orchestra Hall at Symphony Center, the long-awaited moment had arrived. The anticipation had turned into reality, and it felt slightly unreal.&lt;/p&gt;
&lt;p&gt;Unlike Taiwan’s National Concert Hall, where you wander through many turns and passages before reaching the auditorium, Symphony Center leads you almost straight from the entrance to the orchestra hall. The tickets we bought were among the cheapest at 29 and 39 dollars. Our seats were on the right side of the first floor, fifth row, facing the piano. Although we could not see his hands, the acoustics were excellent. They were clear and unobstructed, and even the softest tones could be heard well. We could also see Cateen walk backstage to drink water, and we could clearly see his expressions and his fluffy curls bouncing as he played. The ticket was good value for the money.&lt;/p&gt;
&lt;p&gt;Cateen walked on stage and began playing before the applause died down. He opened with Bach’s Prelude and Fugue No. 1 in C major from The Well-Tempered Clavier Book II (BWV 870), then immediately continued with Partita No. 2 in C minor (BWV 826). As I listened, I sometimes thought about how I would play these pieces myself. The difference between me and Cateen became obvious. How could he make Bach sound so rich and multi-layered? My favorite movements from the suite were the Rondeau and the Capriccio. They were full of energy and color, so different from the earlier sorrowful pieces. When he finished, the audience burst into applause.&lt;/p&gt;
&lt;p&gt;Next came Chopin’s Nocturne in C minor, Op. 48 No. 1, the first piece he played in the first round of the Chopin Competition four years ago. The moment the barely audible low C appeared, it changed the atmosphere of the entire hall. The once unrestrained emotions turned inward and became restrained and introspective. Then, without pause or hesitation, he moved straight into the Scherzo. As soon as he struck the first chord, the elderly lady in front of me jolted in her seat. I could not help but smile. It seemed a recital also tests the audience’s alertness.&lt;/p&gt;
&lt;p&gt;Chopin’s Scherzo No. 1 in B minor, Op. 20, was the most moving piece of the entire recital for me. Cateen’s technique is extraordinary&amp;mdash;&amp;mdash;fast passages remained articulate and crisp. His musicality is also remarkable&amp;mdash;&amp;mdash;long phrases flowed like silk. Generally speaking, extraordinary techniques alone do not necessarily move the heart. So why was this piece played by Cateen so touching today? One reason may be that I had read the program book and learned about the background of the work. Chopin was under immense pressure in Vienna and could not return to his homeland, so he poured his emotions into this piece. Maybe it&amp;rsquo;s because I felt Chopin’s sorrow through Cateen. Or maybe I have heard many young performers play this piece in competitions while growing up, yet none played it with such subtlety and sensitivity. It was through Cateen that I rediscovered its beauty.&lt;/p&gt;
&lt;p&gt;Perhaps it was all of these, or maybe I just saw reflections of my own past struggles and hopes.&lt;/p&gt;
&lt;p&gt;The first half ended, and almost the entire hall rose to applause. It was the first time in my life attending a recital where the audience stood before the concert even fully ended.&lt;/p&gt;
&lt;p&gt;The second half started with Friedrich Gulda’s Prelude and Fugue. Gulda’s prelude reminds me of Bach’s Prelude in C minor from Book I (BWV 847), like Bach dressed up for Halloween and climbing out of the grave to dance. After this piece, Cateen stood up to speak. He said it was his first time in Chicago, which made me feel honored to be there. He mentioned that the upcoming pieces were his own compositions and that he chose to use an upright piano to evoke a nostalgic feeling. The final piece would be Ravel’s Boléro arranged for two pianos. He added with a grin, “Although there are two pianos, I still only have ten fingers.” Everyone laughed.&lt;/p&gt;
&lt;p&gt;His works New Birth and Recollection, tributes to Chopin, were played on a grand piano and an upright piano respectively. I again felt grateful for our seats. I could clearly hear the difference in tone. Upright pianos are naturally softer, and even with the lid removed, its volume was much lower than the grand. Sitting here meant holding my breath to catch every note. The sound of Recollection felt like blue bubbles rising from the sea, hazy and shimmering, occasionally sparkling with delicate high notes like glints of sunlight seen underwater.&lt;/p&gt;
&lt;p&gt;The second half passed quickly. After Recollection, Cateen played five of Kapustin’s Eight Concert Etudes, followed by three of his own nocturnes, and finally Boléro.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s hard to imagine how much physical strength, concentration, and mental stamina a pianist must have to perform a recital like this. Placing Boléro at the very end and then still playing three encores afterward, including Chopin’s Etude in C major Op. 10 No. 1 and Cateen’s own &amp;ldquo;Twinkle Twinkle Little Star Variations,&amp;rdquo; was astonishing. His stamina and focus were incredible.&lt;/p&gt;
&lt;p&gt;As Boléro neared its end, I felt a quiet ache, not wanting the performance to reach its final note. Music is beautiful because it condenses beauty into a brief span of time. Yet this is also the painful part. Maybe this is why I write. Writing, though it may feel like a futile attempt, lets me decode beauty and translate it into words in order to extend its life.&lt;/p&gt;
&lt;p&gt;When the concert ended, cheers filled the hall. Almost everyone stood again. Sam told me that he had become a fan as well. Nothing delights a fan more than converting the people around them.&lt;/p&gt;
&lt;p&gt;It has been a long time since I last heard a concert that moved me like this. More than good techniques, Cateen’s love for music could be heard in every note he played. He is someone who enjoys playing the piano, a composer full of passion and hope for music and for life. Not every musician is like this.&lt;/p&gt;
&lt;p&gt;I just want to rush to my piano and practice.&lt;/p&gt;
&lt;h2 id="hahahugoshortcode7s0hbhb"&gt;
&lt;style&gt;
#masonry-9e5c633458c670de50c76cd5b454cb74-1 {
width: 100%;
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .masonry-item img {
width: 60%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .glightbox:hover,
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-9e5c633458c670de50c76cd5b454cb74-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-9e5c633458c670de50c76cd5b454cb74-1"
data-columns="1"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/5.jpg"
class="glightbox"
data-gallery="masonry-9e5c633458c670de50c76cd5b454cb74-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/5.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/5.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/1.jpg"
class="glightbox"
data-gallery="masonry-9e5c633458c670de50c76cd5b454cb74-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/2.jpg"
class="glightbox"
data-gallery="masonry-9e5c633458c670de50c76cd5b454cb74-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/3.jpg"
class="glightbox"
data-gallery="masonry-9e5c633458c670de50c76cd5b454cb74-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/3.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/3.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/4.jpg"
class="glightbox"
data-gallery="masonry-9e5c633458c670de50c76cd5b454cb74-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/10/6.jpg"
class="glightbox"
data-gallery="masonry-9e5c633458c670de50c76cd5b454cb74-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/10/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/10/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-9e5c633458c670de50c76cd5b454cb74-1';
const config = {
columns: 1 ,
gutter: 20 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese on 11/18/25. It was later translated with assistance from ChatGPT, edited by me, and published in English on 12/3/25.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>❄️ Utopian Smart Fridge</title><link>https://alicehsu.blog/posts/2025/11/%EF%B8%8F-utopian-smart-fridge/</link><pubDate>Sun, 09 Nov 2025 14:30:43 -0600</pubDate><guid>https://alicehsu.blog/posts/2025/11/%EF%B8%8F-utopian-smart-fridge/</guid><description>What might a truly user-friendly smart fridge look like?</description><media:thumbnail url="https://alicehsu.blog/images/Post9home.jpg"/><media:content url="https://alicehsu.blog/images/Post9home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post9home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post9home.jpg"
loading="eager"
/&gt;&lt;p&gt;Recently, after chatting with my family about smart refrigerators, I came across an article by &lt;a href="https://wiwi.blog/blog/smart-fridge"target="_blank"
&gt;Wiwi&lt;/a&gt; and &lt;a href="https://shuojen.site/blog/2025/11/04/bed"target="_blank"
&gt;Shuo-Jen Huang&lt;/a&gt; about smart home appliances. It got me thinking about what a truly user-friendly smart fridge might look like.&lt;/p&gt;
&lt;p&gt;Here’s my version of a utopian smart fridge, imagined from the perspective of a housewife.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;When you put food in or take something out and close the door, the fridge automatically scans everything. It updates its inventory right away, keeping perfect records of purchase dates and expiration dates. There’s no need to spend time keying things in by hand. Best of all, it can accurately recognize every kind of vegetable, sauce bottle, or leftover, without making silly mistakes that you have to fix later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the smart display, it shows adorable reminders like:&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;Your spinach is about to expire! ((((；ﾟДﾟ))))&lt;/p&gt;
&lt;p&gt;I know carrots usually last long, but this one’s about to go bad! Σ（ﾟдﾟlll）&lt;/p&gt;
&lt;p&gt;Drink another Coke and you’ll gain weight! ＼＼\٩(๑`^´๑)۶//／／(Who asked you?)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When it’s got nothing better to do, it gets a little playful.&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;That chicken leg looks so good&amp;hellip; :(´ཀ`」 ∠)&lt;/p&gt;
&lt;p&gt;Today’s going to be a great day! (*´∇｀*)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The smart panel also suggests recipes based on what’s already inside your fridge, so you never have to wonder what to cook for dinner.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you want to plan out your weekly meal prep, you can open a blank page on the display and write directly on it by hand.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;All recipes are stored right inside the fridge’s system, so there’s no need to download any apps or sign up for accounts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It doesn’t need to connect to the Internet, it doesn’t show ads, and it definitely doesn’t sell your data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Honestly, we don’t need a fridge that tells us the weather or displays family photos. Our phones are already great at that.&lt;/p&gt;
&lt;p&gt;Wouldn’t you want a fridge like that?
I know I would! Hopefully, some refrigerator company will buy my idea someday, haha!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>🤤 Creamy Bacon Carbonara</title><link>https://alicehsu.blog/posts/2025/11/creamy-bacon-carbonara/</link><pubDate>Sat, 01 Nov 2025 15:26:11 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/11/creamy-bacon-carbonara/</guid><description>Here is the Delicious Spaghetti</description><media:thumbnail url="https://alicehsu.blog/images/Post/8/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/8/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/8/1.jpg" type="image/jpeg"/><content:encoded>
&lt;style&gt;
#masonry-a16df6266c12a42b596c274ea74eff03-1 {
width: 100%;
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 15px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .masonry-item img {
width: 70%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .glightbox:hover,
#masonry-a16df6266c12a42b596c274ea74eff03-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-a16df6266c12a42b596c274ea74eff03-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-a16df6266c12a42b596c274ea74eff03-1"
data-columns="1"
data-gutter="15"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/8/1.jpg"
class="glightbox"
data-gallery="masonry-a16df6266c12a42b596c274ea74eff03-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/8/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/8/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-a16df6266c12a42b596c274ea74eff03-1';
const config = {
columns: 1 ,
gutter: 15 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="2-serving-bacon-carbonara"&gt;2-Serving Bacon Carbonara&lt;/h2&gt;
&lt;h3 id="notes"&gt;Notes&lt;/h3&gt;
&lt;p&gt;The Bacon Carbonara that Sam and I made is a simple, budget-friendly version of the traditional Italian Carbonara. We replaced guanciale with bacon, used whole eggs instead of just egg yolks (since leftover egg whites can be a hassle), and swapped freshly grated parmigiano reggiano for store-bought parmesan powder. The ingredients are easy to find, affordable, and the dish still tastes amazing.&lt;/p&gt;
&lt;p&gt;While many recipes add the cheese-egg mixture into the hot pan (after removing it from heat) with the pasta and toppings, the pan often remains hot enough to scramble the eggs. Sam decided to reverse the process — mixing the pasta and toppings into the cheese-egg mixture instead. This way, the eggs don’t curdle, and each strand of pasta gets evenly coated with the creamy sauce. The result was incredibly delicious!&lt;/p&gt;
&lt;h3 id="ingredients"&gt;Ingredients&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Spaghetti (Rummo) — 220 g&lt;/li&gt;
&lt;li&gt;Salt — a pinch&lt;/li&gt;
&lt;li&gt;Thick-cut bacon — 3 strips&lt;/li&gt;
&lt;li&gt;Mushrooms — 3 pieces&lt;/li&gt;
&lt;li&gt;Minced garlic — as needed&lt;/li&gt;
&lt;li&gt;Eggs — 3&lt;/li&gt;
&lt;li&gt;Parmesan cheese powder — a generous amount&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="cooking-steps"&gt;Cooking Steps&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Preparation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slice the bacon into thin strips, cut mushrooms into slices, and mince the garlic.&lt;/li&gt;
&lt;li&gt;Add a pinch of salt to a large pot of water.&lt;/li&gt;
&lt;li&gt;In another (preferably large) bowl or pot — large enough to mix in the pasta and toppings later — crack the eggs and add plenty of parmesan cheese powder. Mix lightly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cooking&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bring the salted water to a boil, then add the spaghetti. Set a timer according to the cooking time on the package.&lt;/li&gt;
&lt;li&gt;While the pasta cooks, have one person continuously whisk the cheese-egg mixture over the steam from the boiling pasta pot to help the cheese powder blend smoothly.&lt;/li&gt;
&lt;li&gt;Meanwhile, heat a pan with a little oil and add the bacon.&lt;/li&gt;
&lt;li&gt;Once the bacon turns golden, add the mushrooms.&lt;/li&gt;
&lt;li&gt;Stir-fry briefly, then add some black pepper.&lt;/li&gt;
&lt;li&gt;When the aroma comes out, add the minced garlic.&lt;/li&gt;
&lt;li&gt;Sauté until the garlic turns golden, then turn off the heat.&lt;/li&gt;
&lt;li&gt;When the pasta is ready, transfer it into the cheese-egg mixture and stir quickly.&lt;/li&gt;
&lt;li&gt;After mixing halfway, add the cooked bacon, mushrooms, and garlic.&lt;/li&gt;
&lt;li&gt;Add a little pasta water if the sauce becomes too thick.&lt;/li&gt;
&lt;li&gt;Adjust the consistency to your liking, then plate and serve.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If cooking alone, you can slightly adjust the order of steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When the pasta water boils, don’t add the pasta yet — first, whisk the cheese-egg mixture over the steam to combine it smoothly.&lt;/li&gt;
&lt;li&gt;Then add the pasta and cook while stir-frying the other ingredients.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Japanese Oyakodon (Chicken and Egg Rice Bowl) + Tomato and Corn Soup</title><link>https://alicehsu.blog/posts/2025/10/japanese-oyakodon-chicken-and-egg-rice-bowl--tomato-and-corn-soup/</link><pubDate>Fri, 31 Oct 2025 23:43:10 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/10/japanese-oyakodon-chicken-and-egg-rice-bowl--tomato-and-corn-soup/</guid><description>Here is the delicious dinner.</description><media:thumbnail url="https://alicehsu.blog/images/Post/7/1.jpg"/><media:content url="https://alicehsu.blog/images/Post/7/1.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/7/1.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/7/1.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/7/1.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/7/2.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/7/2.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="japanese-oyakodon-chicken-and-egg-rice-bowl-for-2-servings"&gt;Japanese Oyakodon (Chicken and Egg Rice Bowl) for 2 Servings&lt;/h2&gt;
&lt;h3 id="ingredients"&gt;Ingredients&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Chicken Marinade&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Soy sauce: 40 g&lt;/li&gt;
&lt;li&gt;Mirin: 20 g&lt;/li&gt;
&lt;li&gt;Rice wine (sake): 20 g&lt;/li&gt;
&lt;li&gt;Sugar: 20 g&lt;/li&gt;
&lt;li&gt;Minced garlic: to taste&lt;/li&gt;
&lt;li&gt;Minced ginger: to taste&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chicken thighs (boneless, skin-on): 2 pieces&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Onion: ½ piece&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Taiwanese Cabbage: 3 large leaves&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Eggs: 3&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Green onions: 4 stalks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;White sesame seeds: to taste&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="cooking-steps"&gt;Cooking Steps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Marinate the chicken thighs in the sauce for 20–30 minutes.&lt;/li&gt;
&lt;li&gt;Place the chicken skin-side down and pan-sear for 2 minutes.&lt;/li&gt;
&lt;li&gt;Flip and sear for 1 minute 50 seconds.&lt;/li&gt;
&lt;li&gt;Flip again and cook for 1 minute,&lt;/li&gt;
&lt;li&gt;Flip once more and cook for another 1 minute.&lt;/li&gt;
&lt;li&gt;Remove from the pan and slice the chicken on a cutting board.&lt;/li&gt;
&lt;li&gt;Without washing the pan, add the onion and sauté briefly, then add the cabbage.&lt;/li&gt;
&lt;li&gt;Stir-fry lightly, then add the sliced chicken.&lt;/li&gt;
&lt;li&gt;Mix 50 ml of water into the marinade and pour it into the pan.&lt;/li&gt;
&lt;li&gt;Cover and cook until the chicken turns white.&lt;/li&gt;
&lt;li&gt;Uncover and pour in half of the beaten eggs, then cover again.&lt;/li&gt;
&lt;li&gt;When the eggs are slightly set, uncover and pour in the remaining egg mixture.&lt;/li&gt;
&lt;li&gt;Once half-cooked, serve over steamed rice, sprinkle with sesame seeds and chopped green onions, and enjoy!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tomato-and-corn-soup"&gt;Tomato and Corn Soup&lt;/h2&gt;
&lt;h3 id="ingredients-1"&gt;Ingredients&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Japanese Dashi Stock
&lt;ul&gt;
&lt;li&gt;Water: 1500 g&lt;/li&gt;
&lt;li&gt;Kombu (kelp): 1 piece&lt;/li&gt;
&lt;li&gt;Bonito flakes: 2 handfuls&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tomatoes: 3&lt;/li&gt;
&lt;li&gt;Corn: 2 ears&lt;/li&gt;
&lt;li&gt;Miso paste: ½ tablespoon&lt;/li&gt;
&lt;li&gt;Salt: a pinch&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="cooking-steps-1"&gt;Cooking Steps&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Soak the kombu for 20 minutes, then heat over low heat for 10 minutes.&lt;/li&gt;
&lt;li&gt;Remove the kombu, add the bonito flakes, and simmer for 2 minutes. Strain out the flakes.&lt;/li&gt;
&lt;li&gt;Add the chopped tomatoes and corn, then simmer over medium-high heat for 20 minutes.&lt;/li&gt;
&lt;li&gt;Season with salt and miso paste. Serve hot and enjoy!&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>🤔 Why Do We Create?</title><link>https://alicehsu.blog/posts/2025/10/why-do-we-create/</link><pubDate>Thu, 30 Oct 2025 21:15:06 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/10/why-do-we-create/</guid><description>Recently, I’ve been thinking about this question quite often, and I find it really intriguing, so I’d like to try answering it.</description><media:thumbnail url="https://alicehsu.blog/images/Post6home.jpg"/><media:content url="https://alicehsu.blog/images/Post6home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post6home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post6home.jpg"
loading="eager"
/&gt;&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;This article is mainly written for readers who do not create as their main profession. Those who do make art professionally will have other factors to consider.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;Recently, I’ve been thinking about this question quite often, and I find it really intriguing, so I’d like to try answering it. One of the joys of writing a blog is that it gives me a space to explore these abstract and interesting topics. Also, the process of writing helps me clarify my thoughts on them (though it often turns into a thousand-word essay before I know it). Without this blog, I might still have a few ideas, but I wouldn’t have developed them into a complete essay.&lt;/p&gt;
&lt;h2 id="defining-creation"&gt;Defining “Creation”&lt;/h2&gt;
&lt;p&gt;Let’s start by roughly defining what “creation” means here. The kind of creation I’m referring to is any form of art that humans engage in: composing music, painting, dancing, writing, photography, pottery, metalwork, filmmaking, and so on. What makes something a creation is that its artistic content or form differs from others. For instance, a novelist writes within the genre of the novel but produces stories unlike any that have come before. Or perhaps, in the future, a genius might invent a new literary genre that is neither novel, poem, essay, nor play,&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; and gain recognition for it. As for the process, creation involves using skill to express one’s thoughts and emotions. Tools like AI can be used, but only as assistance and never as a replacement for human skill, thought, or expression.&lt;/p&gt;
&lt;p&gt;So, by this definition, I don’t believe AI truly creates, because it has neither emotion nor thought. At most, AI can produce, but it does not create with awareness or intention.&lt;/p&gt;
&lt;h2 id="the-existence-of-this-question"&gt;The Existence of this Question&lt;/h2&gt;
&lt;p&gt;Interestingly, we never ask children this question: “Why do you create?” When a child picks up a crayon to draw, it feels perfectly natural. We don’t ask, “Why are you drawing?” Instead, we are more likely to hand them more paper and crayons. We don’t ask, “Why are you playing with clay?” We might even join them in building a little castle.&lt;/p&gt;
&lt;p&gt;But as they grow older, crayons are replaced by pencils, and drawing papers, homework sheets. Some parents begin to ask questions like, “Why are you still drawing instead of doing your homework?” In such an environment, children gradually learn to see drawing (or any art form they love) as secondary to academic achievement. Even if they don’t consciously think so, for students who attend regular classes (as opposed to art or music programs)&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; in schools, most of their day is spent on general subjects. Even though they want to create, they can only do so in their free time. When they reach adulthood, few people can afford to make creation their full-time job. For most people, when they get off work, they are occupied by family and other obligations, and creative activities slowly fade from their lives.&lt;/p&gt;
&lt;p&gt;When we, as adults, begin to ask, “Why create?” it already indicates that we’ve drifted away from the innocence we once had as children. After all, children never ask themselves, “Why do I want to draw?” For no reason at all, they draw and sing whenever they want. Moreover, they would not worry about whether they’re good enough to do so. As we grow up, we start to evaluate whether creation can bring money, status, or recognition. If it doesn’t, we decide not to bother. Some people hold back out of fear. Thinking they lack talent or skill, they feel they are not qualified to create. Others simply don’t see the meaning of creation and feel their lives are already fulfilling enough. And of course, there are those whose lives are already difficult, who are too busy surviving to have the time or energy for art.&lt;/p&gt;
&lt;p&gt;Even so, I believe there are both rational and emotional reasons that can encourage us to take heart and begin creating again.&lt;/p&gt;
&lt;h2 id="my-answers"&gt;My Answers&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creation helps us live consciously.&lt;/strong&gt;
In an age dominated by social media, our minds are flooded with AI-written texts and emotionally charged content that leaves us angry or drained. We live passively, consumed by information. Creation, on the other hand, requires awareness: to feel, think, and express intentionally. Just as physical strength must be trained through exercise, mental clarity must be cultivated through creation. Those who use creative work to train their minds enter a positive cycle of perception and reflection, leading to a more conscious life. For me, writing is the best example. Writing articles slows me down and forces me to think, instead of passively letting others’ opinions fill my head. Moreover, writing a diary helps me organize my emotions and thoughts from the day. In the process of choosing words and structuring sentences, confusion gradually gives way to clarity. Once my thoughts are ordered, I can live more calmly and transparently.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creation reminds us that life is more than mere survival.&lt;/strong&gt;
As mentioned earlier, some people feel too burdened by survival to create. But isn’t that exactly the closed loop of “living just to survive”? The problem often isn’t the lack of time; it’s the unrealistic standard we set for what counts as “good.” If so, lower the bar. Choose an art form you feel most comfortable with, and start by completing something small. The harder life feels, the more we need something to remind us that life is not only hardship. If we have to go through pain anyway, why not make something beautiful out of it? That’s not a bad deal, right? When I was writing my thesis, I felt as if my entire life had shrunk down to just that paper. I was living in survival mode, and it was frightening. Then, somehow, I had the impulse to compose music. As I wrote, I began to feel a little better. Not much, yet that small improvement helped me endure that difficult period.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creation allows us to face ourselves.&lt;/strong&gt;
In everyday life, we often see only the tip of the iceberg of who we are. But in the process of creation, because we must constantly search for ideas and feel things more deeply, we begin to see our deeper layers beneath the surface. I often discover new sides of myself while writing. Sometimes I think, “Ah, so this is what I really believe!” or “This isn’t what I originally thought!” It’s a strange but wonderful feeling. Creation is like a mirror that reflects your inner image, allowing you to resonate with your deepest self.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creation brings a different kind of joy and fulfillment.&lt;/strong&gt;
Ordinary hobbies, like sports, can achieve some of the benefits above, but not all. Exercise, for example, doesn’t necessarily help us understand ourselves better. Its physical effects also fade over time; if you stop for a while, you lose your fitness. By contrast, creative works, if preserved, can last for a long time. Perhaps it is this sense of eternity, along with the effort invested in creating a work, that brings a deeper level of contentment and joy.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="closing-thoughts"&gt;Closing Thoughts&lt;/h2&gt;
&lt;p&gt;Everyone has some degree of artistic potential. The difference lies in which area it manifests and how much of it we choose to cultivate. It’s not the size of the seed of creativity that matters, but whether we put it to use and help it grow stronger and more abundant.&lt;/p&gt;
&lt;p&gt;So, let’s begin creating together.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Unlike English literature, which has poetry, novel, and play as three main genres, Chinese literature has poetry (&lt;em&gt;Shi&lt;/em&gt; 詩), essay (&lt;em&gt;Sanwen&lt;/em&gt; 散文), novel (&lt;em&gt;Xiaoshuo&lt;/em&gt; 小說), and play (&lt;em&gt;Xiju&lt;/em&gt; 戲劇) as four main genres.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;In Taiwan, many high schools have specialized classes for arts, music, or sports, where most students share the same focus.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>🍁 Birthday Trip to Devil’s Lake</title><link>https://alicehsu.blog/posts/2025/10/birthday-trip-to-devils-lake/</link><pubDate>Sat, 25 Oct 2025 23:47:21 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/10/birthday-trip-to-devils-lake/</guid><description>Early in the morning, Samuel and I went to Devil’s Lake to see the fall foliage and celebrate our birthdays.</description><media:thumbnail url="https://alicehsu.blog/images/Post/5/30.jpg"/><media:content url="https://alicehsu.blog/images/Post/5/30.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post/5/30.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;Early in the morning, Samuel and I went to Devil’s Lake to see the fall foliage and celebrate our birthdays. Devil’s Lake is a state park in Wisconsin. When we came the last time, it wasn’t this crowded, but today there were so many visitors. No surprise, though, the scenery was absolutely stunning.&lt;/p&gt;
&lt;h2 id="devils-lake"&gt;Devil&amp;rsquo;s Lake&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/9.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/9.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/10.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/10.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/11.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/11.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/14.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/14.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/8.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/8.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/6.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/6.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/16.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/16.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/15.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/15.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/13.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/13.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/5.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/5.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/7.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/7.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/12.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/12.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/17.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/17.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/18.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/18.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/19.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/19.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/20.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/20.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/27.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/27.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/28.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/28.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/29.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/29.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/30.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/30.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/4.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/4.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="lunch"&gt;Lunch&lt;/h2&gt;
&lt;p&gt;For lunch, we went to Balanced Rock Winery near Devil’s Lake and enjoyed their amazing Signature Charcuterie Board and Wine Flight. The board was generous and reasonably priced. We ordered the smallest size, yet still couldn’t finish it. After packing the leftovers, it was practically another full box! No wonder Wisconsin is called the state of cheese. As for the wine flight, my favorite was the fruit wine on the far right. It had a lovely, peachy sweetness.&lt;/p&gt;
&lt;style&gt;
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 {
width: 100%;
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .glightbox:hover,
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-c66d9cb07eddd537032a73b3a77ade94-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-c66d9cb07eddd537032a73b3a77ade94-1"
data-columns="4"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="5"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/21.jpg"
class="glightbox"
data-gallery="masonry-c66d9cb07eddd537032a73b3a77ade94-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/21.jpg"
alt="From left to right: Roustabout Red (red wine), Edelweiss (white wine), Isabella (rosé), and Perfectly Peach (fruit wine)."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/21.jpg"
data-gallery-alt="From left to right: Roustabout Red (red wine), Edelweiss (white wine), Isabella (rosé), and Perfectly Peach (fruit wine)."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;From left to right: Roustabout Red (red wine), Edelweiss (white wine), Isabella (rosé), and Perfectly Peach (fruit wine).&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/22.jpg"
class="glightbox"
data-gallery="masonry-c66d9cb07eddd537032a73b3a77ade94-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/22.jpg"
alt="The lovely rosé Isabella."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/22.jpg"
data-gallery-alt="The lovely rosé Isabella."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The lovely rosé Isabella.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/23.jpg"
class="glightbox"
data-gallery="masonry-c66d9cb07eddd537032a73b3a77ade94-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/23.jpg"
alt="The charcuterie board came with many interesting items. It included artichoke hearts, which look a little like small bamboo shoots, as well as dried apricots."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/23.jpg"
data-gallery-alt="The charcuterie board came with many interesting items. It included artichoke hearts, which look a little like small bamboo shoots, as well as dried apricots."
data-gallery-title="" /&gt;&lt;font style="color: var(--tw-prose-body); font-weight: normal;"&gt;The charcuterie board came with many interesting items. It included artichoke hearts, which look a little like small bamboo shoots, as well as dried apricots.&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/24.jpg"
class="glightbox"
data-gallery="masonry-c66d9cb07eddd537032a73b3a77ade94-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/24.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/24.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/25.jpg"
class="glightbox"
data-gallery="masonry-c66d9cb07eddd537032a73b3a77ade94-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/25.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/25.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/5/26.jpg"
class="glightbox"
data-gallery="masonry-c66d9cb07eddd537032a73b3a77ade94-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/26.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/26.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-c66d9cb07eddd537032a73b3a77ade94-1';
const config = {
columns: 4 ,
gutter: 20 ,
maxColumns: 5 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h2 id="dinner"&gt;Dinner&lt;/h2&gt;
&lt;p&gt;For dinner, we went to our favorite restaurant, which is the same place we visited last year. I think we might just make this an annual tradition. Mussels, as our starters, were incredibly fresh with no fishy taste at all; the white sauce was light and fragrant with a hint of lemon. The waitress even offered us extra bread so we could soak up every drop of the sauce. Our main courses were both delicious, but I am too tired tonight to go into detail. Sam’s favorite was their strawberry Napoleon for dessert. The pastry had almonds in it and was perfectly crisp.&lt;/p&gt;
&lt;p&gt;What an amazing day!&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/35.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/35.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/32.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/32.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/33.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/33.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/34.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/34.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/36.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/36.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/37.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/37.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/38.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/38.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/5/39.jpg"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/5/39.jpg"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>⛲ Source of Creation</title><link>https://alicehsu.blog/posts/2025/10/source-of-creation/</link><pubDate>Fri, 24 Oct 2025 21:50:24 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/10/source-of-creation/</guid><description>Recently, I’ve been reading Life Can Be So Beautiful.</description><media:thumbnail url="https://alicehsu.blog/images/Post4home.JPG"/><media:content url="https://alicehsu.blog/images/Post4home.JPG" medium="image"/><enclosure url="https://alicehsu.blog/images/Post4home.JPG" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post4home.JPG"
loading="eager"
/&gt;&lt;p&gt;Recently, I’ve been reading &lt;em&gt;Life Can Be So Beautiful&lt;/em&gt;,&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; a collection of essays written by Professor&lt;a href="https://www.moc.gov.tw/EN/News_Content2.aspx?n=481&amp;amp;sms=10717&amp;amp;s=17489"target="_blank"
&gt; Lin, Wen-yueh&lt;/a&gt; (1933–2023). In one article, “A Letter to My Daughter—In the Style of Fu Lei’s Family Letters” (written in October 1987), she discusses several sources of inspiration for artistic creation. Her words are deeply thought-provoking, and I feel compelled to respond to them. Here is the original passage:&lt;/p&gt;
&lt;blockquote
class="border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 transition-all duration-200 ease-out hover:translate-x-1"&gt;
&lt;div class="prose prose-sm max-w-none"&gt;
&lt;p&gt;Where do creativity and innovation come from?&lt;/p&gt;
&lt;p&gt;Of course, the education you receive at school provides a crucial foundation.&lt;/p&gt;
&lt;p&gt;But no matter what kind of art you pursue, you must possess a wealth of knowledge, noble character, and a passionate heart.&lt;/p&gt;
&lt;p&gt;These qualities require daily effort in your reading habits and attitude toward life.&lt;/p&gt;
&lt;p&gt;I have often felt that professional knowledge alone is insufficient for a creator. Take painters, for example,&lt;/p&gt;
&lt;p&gt;even if they thoroughly understand the history and principles of art, and possess complete mastery of techniques, they may become skilled painters who know how to color and arrange objects in their painting.&lt;/p&gt;
&lt;p&gt;But what contents will they express?&lt;/p&gt;
&lt;p&gt;That depends on their inner cultivation and depth of thought.&lt;/p&gt;
&lt;p&gt;Once we reach that level, it’s no longer merely a question of professional knowledge.&lt;/p&gt;
&lt;p&gt;Ultimately, one must read widely across various fields, think deeply, and show more concern to the world.&lt;/p&gt;
&lt;p&gt;Only then can you enrich your knowledge and your life—and thus have an inexhaustible source of ideas to express. (p. 122)&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;According to Lin, the sources of creation can be summarized in three key elements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A wealth of knowledge&lt;/li&gt;
&lt;li&gt;Noble character&lt;/li&gt;
&lt;li&gt;A passionate heart&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is my interpretation of each:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A wealth of knowledge&lt;/strong&gt;: This includes theoretical and historical understanding related to art, the ability to appreciate it, and the technical skills necessary for artistic creation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Noble character&lt;/strong&gt;: I believe this involves two aspects. First, caring about others, that is to say, not assuming the world revolves around oneself, but being willing to invest energy in understanding people—whether those close to us, like family and friends, or the larger society. Second, good taste: a person of refined taste can discern what truly adds value to life and what does not.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A passionate heart&lt;/strong&gt;: What’s fascinating is that Lin adds the word “passionate” before “heart.” I imagine this implies that ordinary love is not enough. To simply love music or love painting is not sufficient to become an artist. It may only make one an appreciator or an artisan. A person who loves art passionately, however, makes art an inseparable part of life; they constantly strive to surpass themselves, to move forward, to keep creating.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lin mentions that reading is a way to cultivate these sources of creativity. Yet, I feel reading emphasizes the intellectual dimension, which, while important, lacks the sensory aspect of exploration.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; To me, it’s also essential to engage the senses in daily life:&lt;/p&gt;
&lt;p&gt;To gaze intently at the scenery around us;&lt;/p&gt;
&lt;p&gt;To listen attentively to the chirping of insects and birds;&lt;/p&gt;
&lt;p&gt;To savor the aroma of freshly cooked food;&lt;/p&gt;
&lt;p&gt;To feel deeply the beauty of the world and to share that beauty through creation.&lt;/p&gt;
&lt;p&gt;Of course, there’s another aspect too: the courage to face suffering, allowing one’s art to ease the pain of others; to hear the cries of those afflicted by injustice, and to let one’s work help restore fairness and empathy in the world.&lt;/p&gt;
&lt;p&gt;Although I never had the chance to meet Professor Lin, I feel a sense of longing as I read her words. If it were possible, I would love to take her course on Literature during the Six Dynasties. And even more, to have a cup of coffee with her, to talk about literature, and to exchange thoughts on creation.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;The book title and the following quote are translated by me. It is originally written in Chinese and hasn&amp;rsquo;t been translated into English yet.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Perhaps Lin simply didn’t think it necessary to mention this. She probably couldn’t have imagined how, decades later, people’s attention would plummet under the influence of smartphones.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title>📚Free Online Music Theory Resources</title><link>https://alicehsu.blog/posts/2025/10/free-online-music-theory-resources/</link><pubDate>Fri, 17 Oct 2025 21:37:37 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/10/free-online-music-theory-resources/</guid><description>I have a bookmark folder in my browser called “music,” where I’ve saved all kinds of wonderful music-related resources I’ve found over the years.</description><media:thumbnail url="https://alicehsu.blog/images/Post3home.jpg"/><media:content url="https://alicehsu.blog/images/Post3home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post3home.jpg" type="image/jpeg"/><content:encoded>&lt;img
src="https://alicehsu.blog/images/Post3home.jpg"
loading="eager"
/&gt;&lt;p&gt;I have a bookmark folder in my browser called “music,” where I’ve saved all kinds of wonderful music-related resources I’ve found over the years. I thought it was a bit of a waste to keep them just for myself, so I decided to share them here! I believe these resources will be helpful to both students who want to study music theory independently and to teachers seeking high-quality teaching materials.&lt;/p&gt;
&lt;h2 id="chinese-resources"&gt;Chinese Resources&lt;/h2&gt;
&lt;h3 id="1-nicechordcom"&gt;1. NiceChord.com&lt;/h3&gt;
&lt;p&gt;There aren’t many Chinese-language resources on music theory, and among those that are free and publicly available, I’ve only found one that really stands out. That is, NiceChord.com, founded by Taiwanese pianist Wiwi Kuan.&lt;/p&gt;
&lt;p&gt;Wiwi has a gift for making complex theory concepts easy to understand. His &lt;a href="https://www.youtube.com/@nicechordwiwi/videos"target="_blank"
&gt;YouTube channel&lt;/a&gt;
is also full of great content, but since he’s recently shifted his focus to his self-hosted website and video platform, I’ll highlight his website here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐ Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Most of the theory covered focuses on modern and pop music concepts. You can learn how chord symbols work, understand how those colorful and cool extended chords are used in Jazz music, and review fundamental theory like intervals and modes.&lt;/li&gt;
&lt;li&gt;You’ll also find articles on piano playing, improvisation, arranging, and mixing.&lt;/li&gt;
&lt;li&gt;Wiwi even developed a series of &lt;a href="https://nicechord.com/tools/"target="_blank"
&gt;tools&lt;/a&gt;, such as chord finders, a customizable metronome, and a music term dictionary (in Chinese) that make learning even more effective.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;📸 Website Screenshots&lt;/strong&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;style&gt;
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 {
width: 100%;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .glightbox:hover,
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/2.png"
class="glightbox"
data-gallery="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/3.png"
class="glightbox"
data-gallery="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/3.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/3.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-1';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;Website: &lt;a href="https://nicechord.com/"target="_blank"
&gt;好和弦 NiceChord.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="english-resources"&gt;English Resources&lt;/h2&gt;
&lt;p&gt;To be honest, there are far more free English websites sharing music theory knowledge than Chinese ones. Here are some of my favorites.&lt;/p&gt;
&lt;h3 id="1-music-theory-for-the-21st-century-classroom"&gt;1. Music Theory for the 21st-Century Classroom&lt;/h3&gt;
&lt;p&gt;This one is my top recommendation among English resources! Professor &lt;a href="https://www.pugetsound.edu/directory/robert-hutchinson"target="_blank"
&gt;Robert Hutchinson&lt;/a&gt;
from the University of Puget Sound has generously made his four-semester college-level music theory textbook available online for free, allowing you to systematically study theory step-by-step.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐ Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;You can download the full textbook as a free PDF, essentially giving you a complete college theory book at no cost.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each musical example is embedded with a YouTube recording, complete with precise time stamps—no need to scrub through the timeline yourself!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Every chapter ends with exercises and answer keys, so you can check your understanding right away (it feels just like a self-study workbook. Super helpful for independent learners!).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The material starts with basic concepts and goes all the way up to topics like counterpoint, making it suitable for both beginners and intermediate learners.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;📸 Website Screenshots&lt;/strong&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/4.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/4.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;style&gt;
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 {
width: 100%;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .glightbox:hover,
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/5.png"
class="glightbox"
data-gallery="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/5.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/5.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/6.png"
class="glightbox"
data-gallery="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/6.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/6.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-2';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;Website：&lt;a href="https://musictheory.pugetsound.edu/mt21c/MusicTheory.html"target="_blank"
&gt;Music Theory for the 21st-Century Classroom&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PDF Download： &lt;a href="https://musictheory.pugetsound.edu/"target="_blank"
&gt;PDF&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="2-teoría-music-theory-web"&gt;2. teoría: Music Theory Web&lt;/h3&gt;
&lt;p&gt;teoría was created in 1997 by &lt;a href="https://jeanne-inc.com/collections/jose-rodriguez-alvira"target="_blank"
&gt;José Rodríguez Alvira&lt;/a&gt;
, a retired professor at the Puerto Rico Conservatory of Music.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⭐ Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Tutorials section offers solid coverage of fundamental topics from rhythm and note values to harmony and chord progressions.&lt;/li&gt;
&lt;li&gt;There’s a wide range of customizable ear-training exercises. For example, you can select whether to include major, minor, augmented, or diminished triads. Or, just hit the “Play, Don’t Ask” button if you want a surprise quiz. Perfect for students preparing for theory exams or simply testing their ears.&lt;/li&gt;
&lt;li&gt;The Articles section features the author’s detailed analyses of classical works, including Chopin’s 24 Preludes, Bach’s Brandenburg Concertos, and Schumann’s Kinderszenen. It’s a great place to explore harmonic progressions and compositional thinking in classical music.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;📸 Website Screenshots&lt;/p&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/7.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/7.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;style&gt;
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 {
width: 100%;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .glightbox:hover,
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/8.png"
class="glightbox"
data-gallery="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/8.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/8.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/3/9.png"
class="glightbox"
data-gallery="masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/3/9.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/3/9.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-d5dc2e12f1dbf1fe8c9e0bb896a45006-3';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
Website：&lt;a href="https://www.teoria.com/index.php"target="_blank"
&gt;teoría&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="final-thoughts"&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;These three are the music theory sites I visit most often.
Other sites I occasionally check out include &lt;a href="https://www.musictheory.net/lessons"target="_blank"
&gt;musictheory.net&lt;/a&gt;, &lt;a href="https://www.musicca.com/tw"target="_blank"
&gt;Musicca&lt;/a&gt;, &lt;a href="https://pianowithjonny.com/library/"target="_blank"
&gt;Piano With Jonny&lt;/a&gt;, etc.&lt;/p&gt;
&lt;p&gt;Have any of these sites helped you? Or do you have a favorite theory website of your own?
Feel free to reach out and share your thoughts with me. I’d love to hear your recommendations!&lt;/p&gt;
&lt;p&gt;My email: &lt;a href="mailto:mail@alicehsu.blog"&gt;mail@alicehsu.blog&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>🔔 The Story Behind Bell</title><link>https://alicehsu.blog/posts/2025/10/the-story-behind-bell/</link><pubDate>Sun, 12 Oct 2025 22:15:47 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/10/the-story-behind-bell/</guid><description>One day while improvising, I played the opening eight measures by chance and thought they sounded nice.</description><media:thumbnail url="https://alicehsu.blog/images/Post2home.png"/><media:content url="https://alicehsu.blog/images/Post2home.png" medium="image"/><enclosure url="https://alicehsu.blog/images/Post2home.png" type="image/jpeg"/><content:encoded>&lt;div
class="alert alert-warning my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-warning) 10%, transparent);
border-left-color: var(--color-warning);
--hover-bg: color-mix(in srgb, var(--color-warning) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-warning) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;The complete piano score can be downloaded from my &lt;a href="https://alicehsu.blog/en/portfolio/"&gt;Portfolio&lt;/a&gt;, where you can also find my YouTube performance video!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;Bell is a short piano piece in ternary form (A–B–A’), developed from the first eight measures that came to me rather spontaneously.
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/1.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/1.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;One day while improvising, I played the opening eight measures by chance and thought they sounded nice. I recorded them on my Yamaha P525, planning to leave the idea for later. But the melody kept looping in my mind. I just couldn’t stop hearing it. So I decided to finish the piece over the next few days.&lt;/p&gt;
&lt;p&gt;The title Bell came naturally: during composition, I realized the melody carried a kind of “bell-like” resonance, so I named it accordingly.&lt;/p&gt;
&lt;h2 id="on-composition"&gt;On Composition&lt;/h2&gt;
&lt;h3 id="section-a-mm-122"&gt;Section A (mm. 1–22)&lt;/h3&gt;
&lt;p&gt;Most of section A was born directly from improvisation on the piano.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 17–20:&lt;/strong&gt;
The melody in measures 17–18 is a variation of the opening measure, reminding listeners of the piece’s main motif. Measures 19–20 imitate the previous two measures but shift the register to create an echoing bell effect.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-1 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-1 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-1 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-1"
data-columns="3"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/2.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-1"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/2.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/2.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-1';
const config = {
columns: 3 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-2 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-2 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-2 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-2"
data-columns="2"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/3.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/3.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/3.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/4.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-2"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/4.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/4.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-2';
const config = {
columns: 2 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;
&lt;h3 id="section-b-mm-2354"&gt;Section B (mm. 23–54)&lt;/h3&gt;
&lt;p&gt;The writing of section B mainly aims to create a musical texture different from section A. It is developed from the motive of section A, with variations in rhythm, melodic direction, and articulation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 23–26&lt;/strong&gt;: Here, the main melody is transferred to the left hand—an inversion of the first two measures from section A. The right-hand line, meanwhile, augments the same material.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-3 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-3 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-3 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-3"
data-columns="1"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/5.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-3"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/5.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/5.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-3';
const config = {
columns: 1 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 27–30&lt;/strong&gt;: This passage mirrors measures 9–12 from section A.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-4 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 20px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-4 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-4 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-4"
data-columns="2"
data-gutter="20"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/8.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/8.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/8.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/7.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-4"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/7.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/7.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-4';
const config = {
columns: 2 ,
gutter: 20 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;To be honest, this part (measures 23–30) didn’t exist at first—section B originally began at measure 31. Later, I felt the piece needed more buildup before reaching the climax, so I added this transition. To make it more engaging, I deliberately varied the melodic contour and chord progression to create more contrast and dialogue. I ended up liking how it turned out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 39–42&lt;/strong&gt;: This short passage connects the previous part to the coming climax.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-5 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-5 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-5 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-5"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/9.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-5"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/9.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/9.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-5';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 43–48&lt;/strong&gt;: This passage marks the climax of the entire piece. At first, I tried to have the right hand imitate the left hand from measures 1–4, but it turned out to be impractical. So I decided to redesign the right hand: unlike in section A, where the left hand mainly played a supporting role, here the descending chords in the right hand are just as important as the single-note melody in the left hand — almost as if the two are competing for the spotlight.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-6 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-6 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-6 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-6"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/10.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-6"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/10.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/10.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-6';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 49–54&lt;/strong&gt;: To create a bell-like resonance, I wrote the left hand to play an octave on the first beat, then immediately leap to the higher register for the remaining beats. It’s a bit tricky to play but produces a shimmering echo effect.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-7 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-7 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-7 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-7"
data-columns="3"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/11.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-7"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/11.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/11.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-7';
const config = {
columns: 3 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h3 id="section-a-mm-5574"&gt;Section A’ (mm. 55–74)&lt;/h3&gt;
&lt;p&gt;Since I loved the sound of the first eight measures so much, I wanted to bring them back—so I structured the piece as A–B–A’. That way, listeners can revisit the opening melody one more time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mm. 63–70&lt;/strong&gt;: The right hand repeats the same melody from the beginning, but I changed the left-hand accompaniment for more harmonic tension. Instead of the original root-position A-flat arpeggio, I used a second inversion to evoke a sense of “the music coming to an end.”&lt;/p&gt;
&lt;p&gt;In classical harmony, it’s common to hear the cadential progression $\mathrm{I}^6_4 \rightarrow \mathrm{V}^7 \rightarrow \mathrm{I}$ near the conclusion, and I borrowed that pattern for this part.
&lt;style&gt;
#masonry-febcf7db0828d74b98bd434a1be75795-8 {
width: 100%;
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .masonry-container {
width: 100%;
position: relative;
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .masonry-item {
display: inline-block;
width: 100%;
margin-bottom: 50px;
break-inside: avoid;
box-sizing: border-box;
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .masonry-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.3s ease-in-out;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .glightbox {
display: block;
text-decoration: none;
overflow: hidden;
cursor: pointer;
border-radius: 0.5rem;
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .glightbox:hover,
#masonry-febcf7db0828d74b98bd434a1be75795-8 .glightbox:focus {
text-decoration: none;
outline: none;
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .masonry-item:hover img {
transform: scale(1.05);
}
#masonry-febcf7db0828d74b98bd434a1be75795-8 .masonry-item {
overflow: hidden;
border-radius: 0.5rem;
}
&lt;/style&gt;
&lt;div class="masonry-gallery"
id="masonry-febcf7db0828d74b98bd434a1be75795-8"
data-columns="2"
data-gutter="50"
data-animate="true"
data-use-transform="true"
data-center="true"
data-max-columns="10"
data-lightbox="true"&gt;
&lt;div class="masonry-container"&gt;
&lt;div class="masonry-item"&gt;&lt;a href="https://alicehsu.blog/images/Post/2/12.png"
class="glightbox"
data-gallery="masonry-febcf7db0828d74b98bd434a1be75795-8"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/2/12.png"
alt=""
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/2/12.png"
data-gallery-alt=""
data-gallery-title="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
(function() {
const containerId = 'masonry-febcf7db0828d74b98bd434a1be75795-8';
const config = {
columns: 2 ,
gutter: 50 ,
maxColumns: 10 ,
lightbox: true ,
animate: "true",
useTransform: "true",
center: "true"
};
console.log('Initializing masonry gallery:', containerId, config);
function initMasonryGallery() {
const container = document.getElementById(containerId);
if (!container) {
console.error('Masonry container not found:', containerId);
return;
}
const masonryContainer = container.querySelector('.masonry-container');
if (!masonryContainer) {
console.error('Masonry inner container not found');
return;
}
if (typeof Macy === 'undefined') {
console.error('Macy.js not loaded');
return;
}
console.log('Found container and Macy, initializing...');
try {
const macyInstance = Macy({
container: masonryContainer,
trueOrder: false,
waitForImages: true,
useOwnImageLoader: false,
debug: false,
mobileFirst: true,
columns: config.columns,
margin: {
x: config.gutter,
y: config.gutter
},
breakAt: {
1400: Math.min(config.maxColumns, config.columns),
1200: Math.min(config.maxColumns, config.columns),
940: Math.min(config.maxColumns, config.columns),
768: Math.min(3, config.columns),
520: Math.min(2, config.columns),
400: 1
}
});
console.log('Macy initialized successfully for', containerId);
const images = masonryContainer.querySelectorAll('img');
let loadedImages = 0;
const totalImages = images.length;
function onImageLoad() {
loadedImages++;
console.log(`Image ${loadedImages}/${totalImages} loaded`);
if (loadedImages === totalImages) {
setTimeout(() =&gt; {
if (macyInstance &amp;&amp; macyInstance.reCalculate) {
macyInstance.reCalculate(true);
console.log('Macy layout recalculated after all images loaded');
}
}, 100);
}
}
images.forEach(img =&gt; {
if (img.complete) {
onImageLoad();
} else {
img.addEventListener('load', onImageLoad);
img.addEventListener('error', onImageLoad);
}
});
} catch (error) {
console.error('Error initializing Macy:', error);
}
if (config.lightbox) {
if (typeof GLightbox !== 'undefined') {
try {
let globalLightboxConfig = window.HUGO_GALLERY_CONFIG?.lightbox_options || {};
if (typeof globalLightboxConfig === 'string') {
try {
globalLightboxConfig = JSON.parse(globalLightboxConfig);
} catch (e) {
console.error('Error parsing masonry GLightbox config:', e);
globalLightboxConfig = {};
}
}
const lightbox = GLightbox({
selector: `#${containerId} .glightbox`,
touchNavigation: globalLightboxConfig.touchnavigation ?? globalLightboxConfig.touchNavigation ?? true,
loop: globalLightboxConfig.loop ?? true,
draggable: globalLightboxConfig.draggable ?? true,
zoomable: globalLightboxConfig.zoomable ?? true,
preload: globalLightboxConfig.preload ?? true,
width: globalLightboxConfig.width || '90vw',
height: globalLightboxConfig.height || '90vh',
descPosition: globalLightboxConfig.descposition || globalLightboxConfig.descPosition || 'bottom',
onOpen: () =&gt; {
console.log('GLightbox opened for', containerId);
}
});
console.log('GLightbox initialized successfully for', containerId, 'with global config');
} catch (error) {
console.error('Error initializing GLightbox:', error);
}
} else {
console.error('GLightbox not loaded but lightbox is enabled');
}
}
}
function waitForLibraries() {
let attempts = 0;
const maxAttempts = 50;
function check() {
attempts++;
const macyReady = typeof Macy !== 'undefined';
const lightboxReady = !config.lightbox || typeof GLightbox !== 'undefined';
if (macyReady &amp;&amp; lightboxReady) {
initMasonryGallery();
} else if (attempts &lt; maxAttempts) {
setTimeout(check, 100);
} else {
console.error('Timeout waiting for libraries. Macy:', macyReady, 'GLightbox:', lightboxReady);
}
}
check();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForLibraries);
} else {
setTimeout(waitForLibraries, 50);
}
})();
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="on-performance"&gt;On Performance&lt;/h2&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
id="alert-1-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;This section isn’t meant to prescribe how the piece should be played—just sharing what I think sounds nice. Feel free to explore your own interpretation and to email me your thoughts!&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;h3 id="pedaling"&gt;Pedaling&lt;/h3&gt;
&lt;p&gt;The pedal plays a key role in this piece. I didn’t mark every pedal symbol on the score. That would make it too cluttered. And of course, I fully welcome performers to interpret pedaling differently.&lt;/p&gt;
&lt;p&gt;One spot worth mentioning is measure 16, where I hold the pedal through the E♭ on the second beat and only change it at measure 19. This creates a bell-like resonance—two tones overlapping and shimmering together, much like how real bells ring in the air. (The same applies at measure 70 in the bass note.)&lt;/p&gt;
&lt;p&gt;For measures 23–26, I intentionally avoid using pedal so the section feels clean and distinct from what came before.&lt;/p&gt;
&lt;h3 id="tone-color"&gt;Tone Color&lt;/h3&gt;
&lt;p&gt;This piece was originally written for the piano, but I later discovered that the “Stage E. Piano” sound on my Yamaha P525 fits this piece beautifully—it almost feels like background music from a game. I recorded a new version with that tone and loved the result.&lt;/p&gt;
&lt;p&gt;I also think it might sound lovely on a glockenspiel or other bell-like instruments. If you find another sound that suits the piece, I’d love to hear about it!&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Before writing this post, I asked ChatGPT for topic suggestions related to composition. It not only gave me topics but also some hilariously overly poetic lines. Here are a few:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;“Sometimes I get stuck between two notes—it’s like words on the tip of my tongue that I can’t say.” $\rightarrow$ I mean, yes, I do get stuck—but that metaphor is a bit too much.&lt;/li&gt;
&lt;li&gt;“When I played the final note, I suddenly felt the piece no longer belonged to me.” $\rightarrow$ Nope. It still does! My name’s right there on the copyright page.&lt;/li&gt;
&lt;li&gt;“Every composition is a letter to a moment in time.” $\rightarrow$ Wow, that’s&amp;hellip; dramatic. Sounds like something out of a romance novel.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So instead of following ChatGPT’s flowery advice, I decided to just write plainly—honestly recording my thoughts during the creative process.&lt;/p&gt;
&lt;p&gt;If you’ve performed this piece, I’d love to hear your version! And if you upload it anywhere, feel free to share this post with your listeners so they can get a glimpse into the story behind Bell.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>What Happened When I Deleted My Facebook and Instagram App?</title><link>https://alicehsu.blog/posts/2025/09/what-happened-when-i-deleted-my-facebook-and-instagram-app/</link><pubDate>Sun, 28 Sep 2025 21:21:01 -0500</pubDate><guid>https://alicehsu.blog/posts/2025/09/what-happened-when-i-deleted-my-facebook-and-instagram-app/</guid><description>I joined Facebook in 2009 and have been using it for almost ten years now.</description><media:thumbnail url="https://alicehsu.blog/images/Post1home.jpg"/><media:content url="https://alicehsu.blog/images/Post1home.jpg" medium="image"/><enclosure url="https://alicehsu.blog/images/Post1home.jpg" type="image/jpeg"/><content:encoded>&lt;p&gt;The following post was originally published on Medium on April 5, 2019. Six years later, I not only deleted the apps but also permanently deleted my Instagram account, and I often keep my Facebook account deactivated. I only reactivate it when I need to buy or sell something. Looking back now, I truly feel that my past self had taken an excellent first step.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I joined Facebook in 2009 and have been using it for almost ten years now.&lt;/p&gt;
&lt;p&gt;Over the years, the changes have been dramatic. It started with just a few friends playing Happy Farm together, but soon exploded into over 400 friends (I know it’s still considered “few” by some people) flooding my feed. Not only my elementary school teachers, but even distant relatives and aunts I barely knew started adding me as a Facebook friend. My friend list became a strange mix of familiar yet unfamiliar people, and before long, I turned into a lurker, quietly scrolling through everyone’s updates.&lt;/p&gt;
&lt;p&gt;When posting on Facebook became too full of worries and self-consciousness, I shifted my focus to Instagram, where I created a small space of freedom to write. Sometimes, after viewing someone’s story, I’d respond with a heart-eyes emoji—just let them know I cared.&lt;/p&gt;
&lt;p&gt;Yet, I found myself becoming more and more unhappy.&lt;/p&gt;
&lt;p&gt;I would often think, “That post was actually pretty good. Why didn’t he/she like it?” Or when I was tired from writing assignments and wanted to relax by browsing social media, I’d see a classmate from the same course posting a big update celebrating that they’d finished theirs, which made me more anxious.&lt;/p&gt;
&lt;p&gt;Moreover, I also came to realize that the people who truly matter in my life—family, close friends, mentors—are barely active on social media at all. My most precious memories with them don’t come from likes on a post, but from real moments: laughing together in sync, or being hugged and comforted when I was sad, safe enough to cry in their arms.&lt;/p&gt;
&lt;p&gt;It wasn’t until yesterday that I fully realized this. I made up my mind and posted on both Facebook and Instagram, announcing I’d disappear from the platforms for a month. I would still keep Messenger and Line, but turn off phone notifications. That way, I wouldn’t be “on-call” all the time; instead, I’d check messages and reply only once a day.&lt;/p&gt;
&lt;p&gt;Then, I carried out the following steps in one go:&lt;/p&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-0-title"&gt;
&lt;div
id="alert-0-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;Step 1: Remove temptation.&lt;/strong&gt; I deleted the Facebook and Instagram apps from my phone.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-1-title"&gt;
&lt;div
id="alert-1-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Block access.&lt;/strong&gt; I installed the “Block Site” extension on Chrome and added Facebook and Instagram to the block list.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-2-title"&gt;
&lt;div
id="alert-2-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;Step 3: Find alternative entertainment.&lt;/strong&gt; Whenever I felt the urge to check social media, I redirected my attention to more productive activities, like coloring for relaxation, listening to music, reading, or writing.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;div
class="alert alert-caution my-6 overflow-hidden rounded-lg transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md"
style="background-color: color-mix(in srgb, var(--color-caution) 10%, transparent);
border-left-color: var(--color-caution);
--hover-bg: color-mix(in srgb, var(--color-caution) 15%, transparent);"
onmouseover="this.style.backgroundColor = this.style.getPropertyValue('--hover-bg')"
onmouseout="this.style.backgroundColor = 'color-mix(in srgb, var(--color-caution) 10%, transparent)'"
role="alert"
aria-labelledby="alert-3-title"&gt;
&lt;div
id="alert-3-content"
class="alert-content px-6 pb-6 py-6 items-center justify-between "&gt;
&lt;div class="prose prose-sm text-foreground/90 max-w-none"&gt;
&lt;p&gt;&lt;strong&gt;Step 4: Seek support.&lt;/strong&gt; I asked friends from church to pray for me, and I talked with family and mentors, who praised and encouraged me—boosting my confidence.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;script&gt;
function toggleAlert(alertId) {
const content = document.getElementById(alertId + '-content');
const chevron = document.getElementById(alertId + '-chevron');
const header = content.previousElementSibling;
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
chevron.style.transform = 'rotate(0deg)';
header.setAttribute('aria-expanded', 'true');
} else {
content.classList.add('hidden');
chevron.style.transform = 'rotate(-90deg)';
header.setAttribute('aria-expanded', 'false');
}
}
document.addEventListener('DOMContentLoaded', function() {
const collapsedAlerts = document.querySelectorAll('.alert-content.hidden');
collapsedAlerts.forEach(function(content) {
const alertId = content.id.replace('-content', '');
const chevron = document.getElementById(alertId + '-chevron');
if (chevron) {
chevron.style.transform = 'rotate(-90deg)';
}
});
});
&lt;/script&gt;
&lt;p&gt;I originally thought I’d need sheer willpower to resist, but to my surprise, it felt much easier than expected. After just one day, I noticed some significant changes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;My mood felt lighter.&lt;/strong&gt; No more waiting for “who hasn’t liked my post yet” and no more compulsive urge to clear red notification badges. It felt like pressing Ctrl+Shift+Esc to open my brain’s Task Manager and shutting down background apps of social media. Suddenly, I had so much more mental capacity freed up—enough to focus on meaningful things with ease instead of circling anxiously in the same place.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;My senses have become sharper.&lt;/strong&gt; Things I never noticed before began to stand out. With my eyes off the phone screen, I was no longer a passive receiver being flooded with information, but an active, curious explorer of the world. The colors of real life became sharper, and I even became more sensitive to subtle things: the perfect humidity of the breeze brushing against my face, like the cool freshness of a face mask just applied.
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/1/1.jpg"
alt="The colored pencil wall at Eslite Bookstore in Xinyi District."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/1/1.jpg"
data-gallery-alt="The colored pencil wall at Eslite Bookstore in Xinyi District."
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class="image-figure not-prose my-8"
data-lightbox-enabled="true"
data-gallery-type="auto"&gt;
&lt;div class="image-container"&gt;
&lt;img
src="https://alicehsu.blog/images/Post/1/2.jpg"
alt="The sunset in front of Taipei City Hall."
loading="lazy"
decoding="async"
data-gallery-src="https://alicehsu.blog/images/Post/1/2.jpg"
data-gallery-alt="The sunset in front of Taipei City Hall."
data-gallery-title="" /&gt;&lt;/div&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Drinking water no longer feels difficult. (This may relate to the second point)&lt;/strong&gt;
This is a surprising change. I usually love sweet drinks, and recently I’ve been struggling to cut down. But today, something shifted. I became more sensitive to the taste of water. Drinks that I usually had, even mildly sweetened, suddenly felt cloying. I didn’t want them anymore. Instead, I began to enjoy the pure taste of water.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At the end of the day, my feeling was this: Ah! Relief! Quitting Facebook and Instagram on the first day felt like the sky finally broke into a heavy downpour after being stuffy and humid for too long. My heart was leaping with joy. I could sense that the parts of me dulled or weakened by social media were slowly, step by step, coming back to life.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;NB: This article was first published in Chinese. It was later translated with assistance from ChatGPT, edited by me, and published in English.&lt;/em&gt;&lt;/p&gt;</content:encoded></item></channel></rss>